Write and use wrapper function for lookupByUUID
This commit is contained in:
parent
89e7a2b5b3
commit
8904e25beb
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import os, socket, time, uuid, threading, libvirt, kazoo.client
|
import os, sys, socket, time, threading, libvirt, kazoo.client, pvcdomf
|
||||||
|
|
||||||
class NodeInstance(threading.Thread):
|
class NodeInstance(threading.Thread):
|
||||||
def __init__(self, name, node_list, s_domain, zk):
|
def __init__(self, name, node_list, s_domain, zk):
|
||||||
|
@ -105,8 +105,7 @@ class NodeInstance(threading.Thread):
|
||||||
# Remove any non-running VMs from our list
|
# Remove any non-running VMs from our list
|
||||||
for domain in self.domain_list:
|
for domain in self.domain_list:
|
||||||
try:
|
try:
|
||||||
buuid = uuid.UUID(domain).bytes
|
dom = pvcdomf.lookupByUUID(conn, domain)
|
||||||
dom = conn.lookupByUUID(buuid)
|
|
||||||
state = dom.state()[0]
|
state = dom.state()[0]
|
||||||
if state != libvirt.VIR_DOMAIN_RUNNING:
|
if state != libvirt.VIR_DOMAIN_RUNNING:
|
||||||
self.domain_list.remove(domain)
|
self.domain_list.remove(domain)
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import os, time, uuid, threading, libvirt, kazoo.client
|
import os, sys, socket, time, threading, libvirt, kazoo.client, pvcdomf
|
||||||
|
|
||||||
class VMInstance:
|
class VMInstance:
|
||||||
def __init__(self, domuuid, zk, thishypervisor):
|
def __init__(self, domuuid, zk, thishypervisor):
|
||||||
|
@ -27,7 +27,7 @@ class VMInstance:
|
||||||
exit(1)
|
exit(1)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.dom = conn.lookupByUUID(uuid.UUID(self.domuuid).bytes)
|
self.dom = pvcdomf.lookupByUUID(conn, self.domuuid)
|
||||||
conn.close()
|
conn.close()
|
||||||
except libvirt.libvirtError:
|
except libvirt.libvirtError:
|
||||||
self.dom = None
|
self.dom = None
|
||||||
|
@ -152,7 +152,7 @@ class VMInstance:
|
||||||
self.inreceive = True
|
self.inreceive = True
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
self.dom = conn.lookupByUUID(uuid.UUID(self.domuuid).bytes)
|
self.dom = pvcdomf.lookupByUUID(conn, self.domuuid)
|
||||||
except:
|
except:
|
||||||
time.sleep(0.2)
|
time.sleep(0.2)
|
||||||
continue
|
continue
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import os, sys, libvirt, uuid
|
||||||
|
|
||||||
|
#
|
||||||
|
# Generic function helpers for PVC
|
||||||
|
#
|
||||||
|
|
||||||
|
# > lookupByUUID
|
||||||
|
# This function is a wrapper for libvirt.lookupByUUID which fixes some problems
|
||||||
|
# 1. Takes a text UUID and handles converting it to bytes
|
||||||
|
# 2. Disables stdout to avoid stupid printouts
|
||||||
|
# 3. Try's it and returns a sensible value if not
|
||||||
|
def lookupByUUID(conn, tuuid):
|
||||||
|
dom = None
|
||||||
|
|
||||||
|
# Convert the text UUID to bytes
|
||||||
|
buuid = uuid.UUID(tuuid).bytes
|
||||||
|
|
||||||
|
# Disable stdout
|
||||||
|
sys.stdout = open(os.devnull, 'w')
|
||||||
|
|
||||||
|
# Try
|
||||||
|
try:
|
||||||
|
# Lookup the UUID
|
||||||
|
dom = conn.lookupByUUID(buuid)
|
||||||
|
# Fail
|
||||||
|
except:
|
||||||
|
# Just pass
|
||||||
|
pass
|
||||||
|
|
||||||
|
# Enable stdout
|
||||||
|
sys.stdout = sys.__stdout__
|
||||||
|
|
||||||
|
# Return the dom object (or None)
|
||||||
|
return dom
|
||||||
|
|
Loading…
Reference in New Issue