Add wait time between flush migrates

Adds a wait timer between each VM migration during a flush action,
based on the state of the target VM. This causes each state change
command to wait until the last VM has completed its migration,
preventing all a node's VMs from being migrated to the same "least
RAM" hypervisor at once before any start to migrate.

Fixes #6
This commit is contained in:
Joshua Boniface 2018-07-17 00:25:36 -04:00
parent 368c7ea99b
commit 6d779a811b
1 changed files with 7 additions and 0 deletions

View File

@ -161,6 +161,13 @@ class NodeInstance():
'/domains/{}/lasthypervisor'.format(dom_uuid): current_hypervisor '/domains/{}/lasthypervisor'.format(dom_uuid): current_hypervisor
}) })
# Wait for the VM to migrate so the next VM's free RAM count is accurate (they migrate in serial anyways)
while True:
time.sleep(1)
vm_current_state = zkhandler.readdata(self.zk_conn, '/domains/{}/state'.format(domuuid))
if vm_current_state == "start":
break
zkhandler.writedata(self.zk_conn, { '/nodes/{}/runningdomains'.format(self.name): '' }) zkhandler.writedata(self.zk_conn, { '/nodes/{}/runningdomains'.format(self.name): '' })
zkhandler.writedata(self.zk_conn, { '/nodes/{}/domainstate'.format(self.name): 'flushed' }) zkhandler.writedata(self.zk_conn, { '/nodes/{}/domainstate'.format(self.name): 'flushed' })
self.inflush = False self.inflush = False