in src/hpc/autoscale/node/nodemanager.py [0:0]
def _get_nodes_by_id(self, relevant_node_list: NodeList) -> List[Node]:
relevant_node_names = [n["Name"] for n in relevant_node_list.nodes]
updated_cluster_status = self.__cluster_bindings.get_cluster_status(True)
updated_cc_nodes = partition_single(
updated_cluster_status.nodes, lambda n: n["Name"]
)
nodes_by_name = partition_single(self.get_nodes(), lambda n: n.name)
ret = []
for name in relevant_node_names:
if name in nodes_by_name:
node = nodes_by_name[name]
if name not in updated_cc_nodes:
logging.warning("%s no longer exists.", name)
node.exists = False
node.state = ht.NodeStatus("Off")
node.target_state = ht.NodeStatus("Off")
else:
cc_node = updated_cc_nodes[name]
node.state = ht.NodeStatus(cc_node["Status"])
node.target_state = ht.NodeStatus(cc_node["TargetState"])
if node.delayed_node_id.node_id:
assert node.delayed_node_id.node_id == cc_node["NodeId"]
else:
logging.info(
"Found nodeid for %s -> %s", node, cc_node["NodeId"]
)
assert cc_node["NodeId"]
node.delayed_node_id.node_id = cc_node["NodeId"]
ret.append(node)
return ret