1
0
Fork 0
mirror of https://github.com/retspen/webvirtcloud synced 2024-12-25 15:45:23 +00:00

libvirt does not have the connection close reason contants anymore. pep8 conventions apply

This commit is contained in:
catborise 2019-10-30 11:05:00 +03:00
parent 38ae62d093
commit 568ff92449

View file

@ -124,16 +124,7 @@ class wvmConnection(object):
# on server shutdown libvirt module gets freed before the close callbacks are called # on server shutdown libvirt module gets freed before the close callbacks are called
# so we just check here if it is still present # so we just check here if it is still present
if libvirt is not None: if libvirt is not None:
if (reason == libvirt.VIR_CONNECT_CLOSE_REASON_ERROR): self.last_error = reason
self.last_error = 'connection closed: Misc I/O error'
elif (reason == libvirt.VIR_CONNECT_CLOSE_REASON_EOF):
self.last_error = 'connection closed: End-of-file from server'
elif (reason == libvirt.VIR_CONNECT_CLOSE_REASON_KEEPALIVE):
self.last_error = 'connection closed: Keepalive timer triggered'
elif (reason == libvirt.VIR_CONNECT_CLOSE_REASON_CLIENT):
self.last_error = 'connection closed: Client requested it'
else:
self.last_error = 'connection closed: Unknown error'
# prevent other threads from using the connection (in the future) # prevent other threads from using the connection (in the future)
self.connection = None self.connection = None
@ -255,11 +246,11 @@ class wvmConnectionManager(object):
""" """
self._connections_lock.acquireRead() self._connections_lock.acquireRead()
try: try:
if (host in self._connections): if host in self._connections:
connections = self._connections[host] connections = self._connections[host]
for connection in connections: for connection in connections:
if (connection.login == login and connection.passwd == passwd and connection.type == conn): if connection.login == login and connection.passwd == passwd and connection.type == conn:
return connection return connection
finally: finally:
self._connections_lock.release() self._connections_lock.release()
@ -278,13 +269,13 @@ class wvmConnectionManager(object):
connection = self._search_connection(host, login, passwd, conn) connection = self._search_connection(host, login, passwd, conn)
if (connection is None): if connection is None:
self._connections_lock.acquireWrite() self._connections_lock.acquireWrite()
try: try:
# we have to search for the connection again after aquireing the write lock # we have to search for the connection again after aquireing the write lock
# as the thread previously holding the write lock may have already added our connection # as the thread previously holding the write lock may have already added our connection
connection = self._search_connection(host, login, passwd, conn) connection = self._search_connection(host, login, passwd, conn)
if (connection is None): if connection is None:
# create a new connection if a matching connection does not already exist # create a new connection if a matching connection does not already exist
connection = wvmConnection(host, login, passwd, conn) connection = wvmConnection(host, login, passwd, conn)
@ -317,7 +308,7 @@ class wvmConnectionManager(object):
socket_host.settimeout(1) socket_host.settimeout(1)
if conn_type == CONN_SSH: if conn_type == CONN_SSH:
if ':' in hostname: if ':' in hostname:
LIBVIRT_HOST, PORT = (hostname).split(":") LIBVIRT_HOST, PORT = hostname.split(":")
PORT = int(PORT) PORT = int(PORT)
else: else:
PORT = SSH_PORT PORT = SSH_PORT
@ -332,6 +323,7 @@ class wvmConnectionManager(object):
except Exception as err: except Exception as err:
return err return err
connection_manager = wvmConnectionManager( connection_manager = wvmConnectionManager(
settings.LIBVIRT_KEEPALIVE_INTERVAL if hasattr(settings, 'LIBVIRT_KEEPALIVE_INTERVAL') else 5, settings.LIBVIRT_KEEPALIVE_INTERVAL if hasattr(settings, 'LIBVIRT_KEEPALIVE_INTERVAL') else 5,
settings.LIBVIRT_KEEPALIVE_COUNT if hasattr(settings, 'LIBVIRT_KEEPALIVE_COUNT') else 5 settings.LIBVIRT_KEEPALIVE_COUNT if hasattr(settings, 'LIBVIRT_KEEPALIVE_COUNT') else 5
@ -368,7 +360,7 @@ class wvmConnect(object):
minor = ver / 1000 minor = ver / 1000
ver = ver % 1000 ver = ver % 1000
release = ver release = ver
return "%s.%s.%s" % (major,minor,release) return "%s.%s.%s" % (major, minor, release)
def get_lib_version(self): def get_lib_version(self):
ver = self.wvm.getLibVersion() ver = self.wvm.getLibVersion()
@ -432,7 +424,7 @@ class wvmConnect(object):
for arch in ctx.xpath('/capabilities/guest/arch'): for arch in ctx.xpath('/capabilities/guest/arch'):
domain_types = arch.xpath('domain/@type') domain_types = arch.xpath('domain/@type')
arch_name = arch.xpath('@name')[0] arch_name = arch.xpath('@name')[0]
result[arch_name]= domain_types result[arch_name] = domain_types
return result return result
return util.get_xml_path(self.get_cap_xml(), func=hypervisors) return util.get_xml_path(self.get_cap_xml(), func=hypervisors)
@ -446,7 +438,7 @@ class wvmConnect(object):
for arch in ctx.xpath('/capabilities/guest/arch'): for arch in ctx.xpath('/capabilities/guest/arch'):
emulator = arch.xpath('emulator') emulator = arch.xpath('emulator')
arch_name = arch.xpath('@name')[0] arch_name = arch.xpath('@name')[0]
result[arch_name]= emulator result[arch_name] = emulator
return result return result
return util.get_xml_path(self.get_cap_xml(), func=emulators) return util.get_xml_path(self.get_cap_xml(), func=emulators)
@ -460,8 +452,8 @@ class wvmConnect(object):
def get_bus_list(ctx): def get_bus_list(ctx):
result = [] result = []
for disk_enum in ctx.xpath('/domainCapabilities/devices/disk/enum'): for disk_enum in ctx.xpath('/domainCapabilities/devices/disk/enum'):
if disk_enum.xpath("@name")[0] == "bus": if disk_enum.xpath("@name")[0] == "bus":
for values in disk_enum: result.append(values.text) for values in disk_enum: result.append(values.text)
return result return result
# return [ 'ide', 'scsi', 'usb', 'virtio' ] # return [ 'ide', 'scsi', 'usb', 'virtio' ]
@ -482,11 +474,11 @@ class wvmConnect(object):
def get_image_formats(self): def get_image_formats(self):
"""Get available image formats""" """Get available image formats"""
return [ 'raw', 'qcow', 'qcow2' ] return ['raw', 'qcow', 'qcow2']
def get_file_extensions(self): def get_file_extensions(self):
"""Get available image filename extensions""" """Get available image filename extensions"""
return [ 'img', 'qcow', 'qcow2' ] return ['img', 'qcow', 'qcow2']
def get_video(self): def get_video(self):
""" Get available graphics video types """ """ Get available graphics video types """
@ -496,7 +488,7 @@ class wvmConnect(object):
if video_enum.xpath("@name")[0] == "modelType": if video_enum.xpath("@name")[0] == "modelType":
for values in video_enum: result.append(values.text) for values in video_enum: result.append(values.text)
return result return result
return util.get_xml_path(self.get_dom_cap_xml(),func=get_video_list) return util.get_xml_path(self.get_dom_cap_xml(), func=get_video_list)
def get_iface(self, name): def get_iface(self, name):
return self.wvm.interfaceLookupByName(name) return self.wvm.interfaceLookupByName(name)
@ -560,6 +552,7 @@ class wvmConnect(object):
def get_host_instances(self, raw_mem_size=False): def get_host_instances(self, raw_mem_size=False):
vname = {} vname = {}
def get_info(doc): def get_info(doc):
mem = util.get_xpath(doc, "/domain/currentMemory") mem = util.get_xpath(doc, "/domain/currentMemory")
mem = int(mem) / 1024 mem = int(mem) / 1024
@ -574,7 +567,7 @@ class wvmConnect(object):
title = title if title else '' title = title if title else ''
description = util.get_xpath(doc, "/domain/description") description = util.get_xpath(doc, "/domain/description")
description = description if description else '' description = description if description else ''
return (mem, vcpu, title, description) return mem, vcpu, title, description
for name in self.get_instances(): for name in self.get_instances():
dom = self.get_instance(name) dom = self.get_instance(name)
xml = dom.XMLDesc(0) xml = dom.XMLDesc(0)
@ -592,6 +585,7 @@ class wvmConnect(object):
def get_user_instances(self, name): def get_user_instances(self, name):
dom = self.get_instance(name) dom = self.get_instance(name)
xml = dom.XMLDesc(0) xml = dom.XMLDesc(0)
def get_info(ctx): def get_info(ctx):
mem = util.get_xpath(ctx, "/domain/currentMemory") mem = util.get_xpath(ctx, "/domain/currentMemory")
mem = int(mem) / 1024 mem = int(mem) / 1024
@ -604,7 +598,7 @@ class wvmConnect(object):
title = title if title else '' title = title if title else ''
description = util.get_xpath(ctx, "/domain/description") description = util.get_xpath(ctx, "/domain/description")
description = description if description else '' description = description if description else ''
return (mem, vcpu, title, description) return mem, vcpu, title, description
(mem, vcpu, title, description) = util.get_xml_path(xml, func=get_info) (mem, vcpu, title, description) = util.get_xml_path(xml, func=get_info)
return { return {
'name': dom.name(), 'name': dom.name(),