parent
b12fc956c7
commit
8e7c883d72
11
pvc.py
11
pvc.py
|
@ -354,12 +354,12 @@ def verifyNode(zk_conn, node):
|
||||||
click.echo('ERROR: No node named "{}" is present in the cluster.'.format(node))
|
click.echo('ERROR: No node named "{}" is present in the cluster.'.format(node))
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
def findTargetHypervisor(zk_conn, search_field, dom_uuid, this_node)
|
def findTargetHypervisor(zk_conn, search_field, dom_uuid)
|
||||||
if search_field == 'mem':
|
if search_field == 'mem':
|
||||||
return findTargetHypervisorMem(zk_conn, dom_uuid, this_node)
|
return findTargetHypervisorMem(zk_conn, dom_uuid)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def findTargetHypervisorMem(zk_conn, dom_uuid, this_node):
|
def findTargetHypervisorMem(zk_conn, dom_uuid):
|
||||||
# Find a target node
|
# Find a target node
|
||||||
most_allocfree = 0
|
most_allocfree = 0
|
||||||
target_hypervisor = None
|
target_hypervisor = None
|
||||||
|
@ -367,9 +367,6 @@ def findTargetHypervisorMem(zk_conn, dom_uuid, this_node):
|
||||||
hypervisor_list = zkhandler.listchildren(zk_conn, '/nodes')
|
hypervisor_list = zkhandler.listchildren(zk_conn, '/nodes')
|
||||||
current_hypervisor = zkhandler.readdata(zk_conn, '/domains/{}/hypervisor'.format(dom_uuid))
|
current_hypervisor = zkhandler.readdata(zk_conn, '/domains/{}/hypervisor'.format(dom_uuid))
|
||||||
|
|
||||||
if current_hypervisor != this_node:
|
|
||||||
continue
|
|
||||||
|
|
||||||
for hypervisor in hypervisor_list:
|
for hypervisor in hypervisor_list:
|
||||||
daemon_state = zkhandler.readdata(zk_conn, '/nodes/{}/daemonstate'.format(hypervisor))
|
daemon_state = zkhandler.readdata(zk_conn, '/nodes/{}/daemonstate'.format(hypervisor))
|
||||||
domain_state = zkhandler.readdata(zk_conn, '/nodes/{}/domainstate'.format(hypervisor))
|
domain_state = zkhandler.readdata(zk_conn, '/nodes/{}/domainstate'.format(hypervisor))
|
||||||
|
@ -983,7 +980,7 @@ def move_vm(domain, target_hypervisor):
|
||||||
current_hypervisor = zk_conn.get('/domains/{}/hypervisor'.format(dom_uuid))[0].decode('ascii')
|
current_hypervisor = zk_conn.get('/domains/{}/hypervisor'.format(dom_uuid))[0].decode('ascii')
|
||||||
|
|
||||||
if target_hypervisor == None:
|
if target_hypervisor == None:
|
||||||
target_hypervisor = findTargetHypervisor(zk_conn, 'mem', dom_uuid, current_hypervisor)
|
target_hypervisor = findTargetHypervisor(zk_conn, 'mem', dom_uuid)
|
||||||
else:
|
else:
|
||||||
if target_hypervisor == current_hypervisor:
|
if target_hypervisor == current_hypervisor:
|
||||||
click.echo('ERROR: The VM "{}" is already running on hypervisor "{}".'.format(dom_uuid, current_hypervisor))
|
click.echo('ERROR: The VM "{}" is already running on hypervisor "{}".'.format(dom_uuid, current_hypervisor))
|
||||||
|
|
|
@ -144,7 +144,7 @@ class NodeInstance():
|
||||||
for dom_uuid in fixed_domain_list:
|
for dom_uuid in fixed_domain_list:
|
||||||
ansiiprint.echo('Selecting target to migrate VM "{}"'.format(dom_uuid), '', 'i')
|
ansiiprint.echo('Selecting target to migrate VM "{}"'.format(dom_uuid), '', 'i')
|
||||||
|
|
||||||
target_hypervisor = findTargetHypervisor(self.zk_conn, 'mem', dom_uuid, self.this_node)
|
target_hypervisor = findTargetHypervisor(self.zk_conn, 'mem', dom_uuid)
|
||||||
if target_hypervisor == None:
|
if target_hypervisor == None:
|
||||||
ansiiprint.echo('Failed to find migration target for VM "{}"; shutting down'.format(dom_uuid), '', 'e')
|
ansiiprint.echo('Failed to find migration target for VM "{}"; shutting down'.format(dom_uuid), '', 'e')
|
||||||
zkhandler.writedata(self.zk_conn, { '/domains/{}/state'.format(dom_uuid): 'shutdown' })
|
zkhandler.writedata(self.zk_conn, { '/domains/{}/state'.format(dom_uuid): 'shutdown' })
|
||||||
|
@ -317,21 +317,18 @@ class NodeInstance():
|
||||||
ansiiprint.echo('{}Flushed nodes:{} {}'.format(ansiiprint.bold(), ansiiprint.end(), ' '.join(self.flushed_node_list)), '', 'c')
|
ansiiprint.echo('{}Flushed nodes:{} {}'.format(ansiiprint.bold(), ansiiprint.end(), ' '.join(self.flushed_node_list)), '', 'c')
|
||||||
|
|
||||||
# Find a target node
|
# Find a target node
|
||||||
def findTargetHypervisor(zk_conn, search_field, dom_uuid, this_node):
|
def findTargetHypervisor(zk_conn, search_field, dom_uuid):
|
||||||
if search_field == 'mem':
|
if search_field == 'mem':
|
||||||
return findTargetHypervisorMem(zk_conn, dom_uuid, this_node)
|
return findTargetHypervisorMem(zk_conn, dom_uuid)
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def findTargetHypervisorMem(zk_conn, search_field, dom_uuid, this_node):
|
def findTargetHypervisorMem(zk_conn, search_field, dom_uuid):
|
||||||
most_allocfree = 0
|
most_allocfree = 0
|
||||||
target_hypervisor = None
|
target_hypervisor = None
|
||||||
|
|
||||||
hypervisor_list = zkhandler.listchildren(zk_conn, '/nodes')
|
hypervisor_list = zkhandler.listchildren(zk_conn, '/nodes')
|
||||||
current_hypervisor = zkhandler.readdata(zk_conn, '/domains/{}/hypervisor'.format(dom_uuid))
|
current_hypervisor = zkhandler.readdata(zk_conn, '/domains/{}/hypervisor'.format(dom_uuid))
|
||||||
|
|
||||||
if current_hypervisor != this_node:
|
|
||||||
continue
|
|
||||||
|
|
||||||
for hypervisor in hypervisor_list:
|
for hypervisor in hypervisor_list:
|
||||||
daemon_state = zkhandler.readdata(zk_conn, '/nodes/{}/daemonstate'.format(hypervisor))
|
daemon_state = zkhandler.readdata(zk_conn, '/nodes/{}/daemonstate'.format(hypervisor))
|
||||||
domain_state = zkhandler.readdata(zk_conn, '/nodes/{}/domainstate'.format(hypervisor))
|
domain_state = zkhandler.readdata(zk_conn, '/nodes/{}/domainstate'.format(hypervisor))
|
||||||
|
@ -398,7 +395,7 @@ def migrateFromFencedHost(zk_conn, node_name):
|
||||||
ansiiprint.echo('Moving VMs from dead hypervisor "{}" to new hosts'.format(node_name), '', 'i')
|
ansiiprint.echo('Moving VMs from dead hypervisor "{}" to new hosts'.format(node_name), '', 'i')
|
||||||
dead_node_running_domains = zkhandler.readdata(zk_conn, '/nodes/{}/runningdomains'.format(node_name)).split()
|
dead_node_running_domains = zkhandler.readdata(zk_conn, '/nodes/{}/runningdomains'.format(node_name)).split()
|
||||||
for dom_uuid in dead_node_running_domains:
|
for dom_uuid in dead_node_running_domains:
|
||||||
target_hypervisor = findTargetHypervisor(zk_conn, 'mem', dom_uuid, node_name)
|
target_hypervisor = findTargetHypervisor(zk_conn, 'mem', dom_uuid)
|
||||||
|
|
||||||
ansiiprint.echo('Moving VM "{}" to hypervisor "{}"'.format(dom_uuid, target_hypervisor), '', 'i')
|
ansiiprint.echo('Moving VM "{}" to hypervisor "{}"'.format(dom_uuid, target_hypervisor), '', 'i')
|
||||||
zkhandler.writedata(zk_conn, {
|
zkhandler.writedata(zk_conn, {
|
||||||
|
|
Loading…
Reference in New Issue