Loading ccnode/hypervisor/__init__.py +34 −14 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ class Handler(HostHandler): # register domains proxy = kwargs.pop('proxy') for dom in hypervisor.domains: for dom in hypervisor.domains.itervalues(): name = dom.name logger.debug(u'Registered domain %s' % name) proxy.register(name, 'vm') Loading Loading @@ -75,29 +75,49 @@ class Handler(HostHandler): class Hypervisor(object): """Container for all hypervisor related state.""" def __init__(self): # initialize connection to libvirt self.event_loop = EventLoop() # This tells libvirt what event loop implementation it # should use libvirt.virEventRegisterImpl( self.event_loop.add_handle, self.event_loop.update_handle, self.event_loop.remove_handle, self.event_loop.add_timer, self.event_loop.update_timer, self.event_loop.remove_timer, ) self.event_loop.start() # TODO cleanup connection on stop _libvirt.connection = libvirt.open('qemu:///system') # currently only support KVM #: domains: vms, containers... self.domains = [ VirtualMachine( _libvirt.connection.lookupByID(id), ) for id in _libvirt.connection.listDomainsID() ] self.domains = dict() # find defined domains for dom_name in _libvirt.connection.listDefinedDomains(): dom = _libvirt.connection.lookupByName(dom_name) self.domains[dom.UUID()] = VirtualMachine(dom) # find started domains for dom_id in _libvirt.connection.listDomainsID(): dom = _libvirt.connection.lookupByID(dom_id) self.domains[dom.UUID()] = VirtualMachine(dom) logger.debug('Domains: %s', self.domains) self.event_loop = EventLoop() self.event_loop.start() self.event_loop.register_callbacks(self.callback) # TODO cleanup connection on stop def callback(self, conn, dom, event, detail, opaque): """Callback for libvrit event loop.""" """Callback for libvirt event loop.""" logger.debug("myDomainEventCallback1 EVENT: Domain %s(%s) %s %d" % (dom.name(), dom.UUIDString(), EVENTS[event], detail)) event = EVENTS[event] if event == 'Added': self.domains[dom.UUID()] = VirtualMachine(dom) def get_domain_by_name(self, name): """Get a domain by name.""" for d in self.domains: for d in self.domains.itervalues(): if d.name == name: return d Loading @@ -106,7 +126,7 @@ class Hypervisor(object): def _count_domain(self, filter=lambda d: True): count = 0 for dom in self.domains: for dom in self.domains.itervalues(): if filter(dom): count += 1 Loading ccnode/hypervisor/lib.py +0 −12 Original line number Diff line number Diff line Loading @@ -141,22 +141,10 @@ class EventLoop(object): self.debug("Self pipe watch %d write %d" %(self.pipetrick[0], self.pipetrick[1])) self.poll.register(self.pipetrick[0], select.POLLIN) # This tells libvirt what event loop implementation it # should use libvirt.virEventRegisterImpl( self.add_handle, self.update_handle, self.remove_handle, self.add_timer, self.update_timer, self.remove_timer, ) def debug(self, msg): if self.debugOn: print msg def next_timeout(self): """Calculate when the next timeout is due to occurr, returning the absolute timestamp for the next timeout, or 0 if there is Loading Loading
ccnode/hypervisor/__init__.py +34 −14 Original line number Diff line number Diff line Loading @@ -33,7 +33,7 @@ class Handler(HostHandler): # register domains proxy = kwargs.pop('proxy') for dom in hypervisor.domains: for dom in hypervisor.domains.itervalues(): name = dom.name logger.debug(u'Registered domain %s' % name) proxy.register(name, 'vm') Loading Loading @@ -75,29 +75,49 @@ class Handler(HostHandler): class Hypervisor(object): """Container for all hypervisor related state.""" def __init__(self): # initialize connection to libvirt self.event_loop = EventLoop() # This tells libvirt what event loop implementation it # should use libvirt.virEventRegisterImpl( self.event_loop.add_handle, self.event_loop.update_handle, self.event_loop.remove_handle, self.event_loop.add_timer, self.event_loop.update_timer, self.event_loop.remove_timer, ) self.event_loop.start() # TODO cleanup connection on stop _libvirt.connection = libvirt.open('qemu:///system') # currently only support KVM #: domains: vms, containers... self.domains = [ VirtualMachine( _libvirt.connection.lookupByID(id), ) for id in _libvirt.connection.listDomainsID() ] self.domains = dict() # find defined domains for dom_name in _libvirt.connection.listDefinedDomains(): dom = _libvirt.connection.lookupByName(dom_name) self.domains[dom.UUID()] = VirtualMachine(dom) # find started domains for dom_id in _libvirt.connection.listDomainsID(): dom = _libvirt.connection.lookupByID(dom_id) self.domains[dom.UUID()] = VirtualMachine(dom) logger.debug('Domains: %s', self.domains) self.event_loop = EventLoop() self.event_loop.start() self.event_loop.register_callbacks(self.callback) # TODO cleanup connection on stop def callback(self, conn, dom, event, detail, opaque): """Callback for libvrit event loop.""" """Callback for libvirt event loop.""" logger.debug("myDomainEventCallback1 EVENT: Domain %s(%s) %s %d" % (dom.name(), dom.UUIDString(), EVENTS[event], detail)) event = EVENTS[event] if event == 'Added': self.domains[dom.UUID()] = VirtualMachine(dom) def get_domain_by_name(self, name): """Get a domain by name.""" for d in self.domains: for d in self.domains.itervalues(): if d.name == name: return d Loading @@ -106,7 +126,7 @@ class Hypervisor(object): def _count_domain(self, filter=lambda d: True): count = 0 for dom in self.domains: for dom in self.domains.itervalues(): if filter(dom): count += 1 Loading
ccnode/hypervisor/lib.py +0 −12 Original line number Diff line number Diff line Loading @@ -141,22 +141,10 @@ class EventLoop(object): self.debug("Self pipe watch %d write %d" %(self.pipetrick[0], self.pipetrick[1])) self.poll.register(self.pipetrick[0], select.POLLIN) # This tells libvirt what event loop implementation it # should use libvirt.virEventRegisterImpl( self.add_handle, self.update_handle, self.remove_handle, self.add_timer, self.update_timer, self.remove_timer, ) def debug(self, msg): if self.debugOn: print msg def next_timeout(self): """Calculate when the next timeout is due to occurr, returning the absolute timestamp for the next timeout, or 0 if there is Loading