From 02343079c08c4ec6b1d7b1e0b3d72c986b0d7f8c Mon Sep 17 00:00:00 2001 From: "Joshua M. Boniface" Date: Wed, 5 Aug 2020 22:26:01 -0400 Subject: [PATCH] Improve fencing migrate layout Open the option to do this in parallel with some threads --- node-daemon/pvcnoded/fencing.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/node-daemon/pvcnoded/fencing.py b/node-daemon/pvcnoded/fencing.py index 801d16ba..8fb1ed45 100644 --- a/node-daemon/pvcnoded/fencing.py +++ b/node-daemon/pvcnoded/fencing.py @@ -77,8 +77,15 @@ def fenceNode(node_name, zk_conn, config, logger): # Migrate hosts away from a fenced node def migrateFromFencedNode(zk_conn, node_name, config, logger): logger.out('Migrating VMs from dead node "{}" to new hosts'.format(node_name), state='i') + + # Get the list of VMs dead_node_running_domains = zkhandler.readdata(zk_conn, '/nodes/{}/runningdomains'.format(node_name)).split() - for dom_uuid in dead_node_running_domains: + + # Set the node to a custom domainstate so we know what's happening + zkhandler.writedata(zk_conn, { '/nodes/{}/domainstate'.format(node_name): 'fence-flush' }) + + # Migrate a VM after a flush + def fence_migrate_vm(dom_uuid): VMInstance.flush_locks(zk_conn, logger, dom_uuid) target_node = common.findTargetNode(zk_conn, config, dom_uuid) @@ -97,6 +104,10 @@ def migrateFromFencedNode(zk_conn, node_name, config, logger): '/domains/{}/node_autostart'.format(dom_uuid): 'True' }) + # Loop through the VMs + for dom_uuid in dead_node_running_domains: + fence_migrate_vm(dom_uuid) + # Set node in flushed state for easy remigrating when it comes back zkhandler.writedata(zk_conn, { '/nodes/{}/domainstate'.format(node_name): 'flushed' })