in modules/python/clients/kubernetes_client.py [0:0]
def wait_for_nodes_ready(self, node_count, operation_timeout_in_minutes, label_selector=None):
"""
Waits for a specific number of nodes with a given label to be ready within a specified timeout.
Raises an exception if the expected number of nodes are not ready within the timeout.
:param node_label: The label to filter nodes.
:param node_count: The expected number of nodes to be ready.
:param operation_timeout_in_minutes: The timeout in minutes to wait for the nodes to be ready.
:return: None
"""
ready_nodes = []
ready_node_count = 0
timeout = time.time() + (operation_timeout_in_minutes * 60)
logger.info(f"Validating {node_count} nodes with label {label_selector} are ready.")
while time.time() < timeout:
ready_nodes = self.get_ready_nodes(label_selector=label_selector)
ready_node_count = len(ready_nodes)
logger.info(f"Currently {ready_node_count} nodes are ready.")
if ready_node_count == node_count:
return ready_nodes
logger.info(f"Waiting for {node_count} nodes to be ready.")
time.sleep(10)
if ready_node_count != node_count:
raise Exception(f"Only {ready_node_count} nodes are ready, expected {node_count} nodes!")
return ready_nodes