def main()

in tools/dcgm-on-gke/grafana/proxy/get_proxy_url.py [0:0]


def main():
    unicode_type = functools.partial(unicode, encoding="utf8")
    parser = argparse.ArgumentParser(description="Get proxy URL")
    parser.add_argument("--config-file-path", required=True, type=unicode_type)
    parser.add_argument("--location", required=True, type=unicode_type)
    parser.add_argument("--version", required=True, type=unicode_type)

    args = parser.parse_args()
    with open(args.config_file_path, "r") as config_file:
        data = json.loads(config_file.read())

    agent_containers_config = data["agent-docker-containers"]
    version = args.version
    if version not in agent_containers_config:
        version = "latest"
    if version not in agent_containers_config:
        raise ValueError("Version latest not found in the config file.")
    container_config = agent_containers_config[version]
    regional_urls = container_config["proxy-urls"]

    location = args.location
    urls = urls_for_zone(location, regional_urls)
    if not urls:
        raise ValueError("No valid URLs found for zone: {}".format(location))

    for url in urls:
        try:
            status_code = requests.head(url).status_code
        except requests.ConnectionError:
            pass
        expected_codes = frozenset([307])
        # 307 - Temporary Redirect, Proxy server sends this if VM has access rights.
        if status_code in expected_codes:
            logging.debug("Status code from the url %s", status_code)
            print(url)
            exit(0)
        logging.debug(
            "Incorrect status_code from the server: %s. Expected: %s",
            status_code, expected_codes
        )
    raise ValueError("No working URL found")