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:
Joshua Boniface 2022-07-08 19:19:29 +00:00
parent 8d7e3d8dc8
commit f927118f5b
3 changed files with 5 additions and 24 deletions

View File

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

View File

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

View File

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