From b5c666e3a62a927ef67e680628ce2e8a4c31ab95 Mon Sep 17 00:00:00 2001 From: Anael Beutot Date: Mon, 7 May 2012 19:12:01 +0200 Subject: [PATCH] Refactored libvirt connection handling. No more global variable. --- ccnode/hypervisor/__init__.py | 15 +++++++-------- ccnode/hypervisor/domains/__init__.py | 2 +- ccnode/hypervisor/tags.py | 9 ++++----- 3 files changed, 12 insertions(+), 14 deletions(-) diff --git a/ccnode/hypervisor/__init__.py b/ccnode/hypervisor/__init__.py index 83c51ef..347fcbd 100644 --- a/ccnode/hypervisor/__init__.py +++ b/ccnode/hypervisor/__init__.py @@ -7,7 +7,6 @@ import libvirt from ccnode.host import Handler as HostHandler from ccnode.tags import Tag, tag_inspector, get_tags from ccnode.hypervisor import tags -from ccnode.hypervisor import lib as _libvirt from ccnode.hypervisor.lib import ( DOMAIN_STATES, EVENTS, STORAGE_STATES, EventLoop as VirEventLoop, @@ -176,23 +175,22 @@ class Hypervisor(object): self.vir_event_loop.remove_timer, ) - # TODO cleanup connection on stop - _libvirt.connection = libvirt.open('qemu:///system') # currently only support KVM + self.vir_con = libvirt.open('qemu:///system') # currently only support KVM # findout storage - self.storage = StorageIndex(_libvirt.connection) + self.storage = StorageIndex(self.vir_con) logger.debug('Storages: %s', self.storage.paths) #: domains: vms, containers... self.domains = dict() # find defined domains - for dom_name in _libvirt.connection.listDefinedDomains(): - dom = _libvirt.connection.lookupByName(dom_name) + for dom_name in self.vir_con.listDefinedDomains(): + dom = self.vir_con.lookupByName(dom_name) self.domains[dom.name()] = VirtualMachine(dom, self) # find started domains - for dom_id in _libvirt.connection.listDomainsID(): - dom = _libvirt.connection.lookupByID(dom_id) + for dom_id in self.vir_con.listDomainsID(): + dom = self.vir_con.lookupByID(dom_id) self.domains[dom.name()] = VirtualMachine(dom, self) logger.debug('Domains: %s', self.domains) @@ -201,6 +199,7 @@ class Hypervisor(object): def stop(self): self.vir_event_loop.stop() + self.vir_con.close() # TODO delet objects def vir_cb(self, conn, dom, event, detail, opaque): diff --git a/ccnode/hypervisor/domains/__init__.py b/ccnode/hypervisor/domains/__init__.py index a90856d..3a7c00d 100644 --- a/ccnode/hypervisor/domains/__init__.py +++ b/ccnode/hypervisor/domains/__init__.py @@ -67,7 +67,7 @@ class VirtualMachine(object): @property def lv_dom(self): """Libvirt domain instance.""" - return _libvirt.connection.lookupByUUIDString(self.uuid) + return self.hypervisor.vir_con.lookupByUUIDString(self.uuid) def start(self): self.lv_dom.create() diff --git a/ccnode/hypervisor/tags.py b/ccnode/hypervisor/tags.py index 914780d..a3990f9 100644 --- a/ccnode/hypervisor/tags.py +++ b/ccnode/hypervisor/tags.py @@ -1,4 +1,3 @@ -from ccnode.hypervisor import lib as libvirt_ from ccnode.utils import and_ @@ -39,14 +38,14 @@ def hvm(): return None -def hvver(): +def hvver(handl): """Hypervisor version.""" - return libvirt_.connection.getVersion() + return handl.hypervisor.vir_con.getVersion() -def libvirtver(): +def libvirtver(handl): """Version of running libvirt.""" - return libvirt_.connection.getLibVersion() + return handl.hypervisor.vir_con.getLibVersion() # jobs -- GitLab