Commit b5c666e3 authored by Anael Beutot's avatar Anael Beutot
Browse files

Refactored libvirt connection handling.

No more global variable.
parent 79fafe0b
Loading
Loading
Loading
Loading
+7 −8
Original line number Diff line number Diff line
@@ -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):
+1 −1
Original line number Diff line number Diff line
@@ -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()
+4 −5
Original line number Diff line number Diff line
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