def cluster_status()

in azure-slurm-install/installlib.py [0:0]


def cluster_status(config: Dict) -> Dict:
    """
    Makes a REST call to clusters/{cluster_name}/status
    """
    if config.get("mock_provider"):
        return config["mock_provider"]["nodes"]

    cc_config = config["cyclecloud"]["config"]
    urlbase = cc_config["web_server"].rstrip("/")
    username = cc_config["username"]
    password = cc_config["password"]
    context = SSLContext(ssl.PROTOCOL_TLSv1_2)
    cluster_name = urllib.parse.quote(config["cyclecloud"]["cluster"]["name"])
    url = f"{urlbase}/clusters/{cluster_name}/nodes"

    auth_token = base64.b64encode(f"{username}:{password}".encode("utf-8")).decode(
        "ascii"
    )

    request = urllib.request.Request(
        url=url, headers={"Authorization": f"Basic {auth_token}"}, method="GET"
    )
    response = urllib.request.urlopen(
        request,
        context=context,
        timeout=30,
    )

    if response.getcode() != 200:
        raise RuntimeError(f"Error getting cluster status: {response.status}")

    return json.loads(response.read().decode("utf-8"))