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"))