Refactor completion of cluster configuration
Instead of rebooting one final time before shutting down, just shut it down directly after performing hooks. This allows hooks to prestage things like the `--autostart` flag of a VM properly.
This commit is contained in:
parent
8d7e3d8dc8
commit
f927118f5b
|
@ -354,13 +354,4 @@ def run_hooks(config, cspec, cluster, nodes):
|
||||||
# Wait 5s between hooks
|
# Wait 5s between hooks
|
||||||
sleep(5)
|
sleep(5)
|
||||||
|
|
||||||
# Restart nodes to complete setup
|
|
||||||
hook_functions["script"](
|
|
||||||
config,
|
|
||||||
cluster_nodes,
|
|
||||||
{
|
|
||||||
"script": "#!/usr/bin/env bash\necho bootstrapped | sudo tee /etc/pvc-install.hooks\nsudo reboot"
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
notifications.send_webhook(config, "success", f"Cluster {cluster.name}: Completed post-setup hook tasks")
|
notifications.send_webhook(config, "success", f"Cluster {cluster.name}: Completed post-setup hook tasks")
|
||||||
|
|
|
@ -140,21 +140,11 @@ def host_checkin(config, data):
|
||||||
|
|
||||||
hooks.run_hooks(config, cspec, cluster, ready_nodes)
|
hooks.run_hooks(config, cspec, cluster, ready_nodes)
|
||||||
|
|
||||||
elif data["action"] in ["system-boot_completed"]:
|
target_state = "completed"
|
||||||
# Node has been fully configured and can be shut down for the final time
|
for node in all_nodes:
|
||||||
logger.info(f"Registering post-hooks boot for host {cspec_fqdn}")
|
|
||||||
notifications.send_webhook(config, "info", f"Cluster {cspec_cluster}: Registering post-hooks boot for host {cspec_fqdn}")
|
|
||||||
target_state = "booted-completed"
|
|
||||||
|
|
||||||
host.set_boot_state(config, cspec, data, target_state)
|
host.set_boot_state(config, cspec, data, target_state)
|
||||||
sleep(1)
|
|
||||||
|
|
||||||
all_nodes = db.get_nodes_in_cluster(config, cspec_cluster)
|
|
||||||
ready_nodes = [node for node in all_nodes if node.state == target_state]
|
|
||||||
|
|
||||||
logger.info(f"Ready: {len(ready_nodes)} All: {len(all_nodes)}")
|
|
||||||
if len(ready_nodes) >= len(all_nodes):
|
|
||||||
# Hosts will now power down ready for real activation in production
|
# Hosts will now power down ready for real activation in production
|
||||||
sleep(30)
|
sleep(60)
|
||||||
cluster = db.update_cluster_state(config, cspec_cluster, "completed")
|
cluster = db.update_cluster_state(config, cspec_cluster, "completed")
|
||||||
notifications.send_webhook(config, "completed", f"Cluster {cspec_cluster}: PVC bootstrap deployment completed")
|
notifications.send_webhook(config, "completed", f"Cluster {cspec_cluster}: PVC bootstrap deployment completed")
|
||||||
|
|
|
@ -895,7 +895,7 @@ def redfish_init(config, cspec, data):
|
||||||
|
|
||||||
logger.info("Waiting for completion of node and cluster installation...")
|
logger.info("Waiting for completion of node and cluster installation...")
|
||||||
# Wait for the system to install and be configured
|
# Wait for the system to install and be configured
|
||||||
while node.state != "booted-completed":
|
while node.state != "completed":
|
||||||
sleep(60)
|
sleep(60)
|
||||||
# Keep the Redfish session alive
|
# Keep the Redfish session alive
|
||||||
session.get(redfish_base_root)
|
session.get(redfish_base_root)
|
||||||
|
|
Loading…
Reference in New Issue