in cookbooks/aws-parallelcluster-slurm/files/default/head_node_checks/check_cluster_ready.py [0:0]
def _check_cluster_config_items(instance_ids: [str], items: [{}], expected_config_version: str):
missing = []
incomplete = []
wrong = []
if not instance_ids:
logger.warning("No instances to check cluster config version for")
return missing, incomplete, wrong
# Transform DDB items to make it easier to search.
# Example: the original items:
# [
# { "Id": { "S": "CLUSTER_CONFIG.i-123456789" },
# "Data": {
# "M": {
# "cluster_config_version": { "HoqyEZYBkMig3gSxaMARUv0NGcG0rrso" },
# "lastUpdateTime": { "2024-01-16 18:59:18 UTC" }
# }
# }
# }
# ]
#
# is transformed into items_by_id:
#
# {
# "CLUSTER_CONFIG.i-123456789": {
# "cluster_config_version": { "HoqyEZYBkMig3gSxaMARUv0NGcG0rrso" },
# "lastUpdateTime": { "2024-01-16 18:59:18 UTC" }
# }
# }
items_by_id = {item["Id"]["S"]: item["Data"]["M"] for item in items}
for instance_id in instance_ids:
key = CLUSTER_CONFIG_DDB_ID.format(instance_id=instance_id)
data = items_by_id.get(key)
if data is None:
missing.append(instance_id)
continue
cluster_config_version = data.get("cluster_config_version", {}).get("S")
if cluster_config_version is None:
incomplete.append(instance_id)
continue
if cluster_config_version != expected_config_version:
wrong.append((instance_id, cluster_config_version))
return missing, incomplete, wrong