Loading ccnode/hypervisor/domains/__init__.py +39 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import logging import weakref from StringIO import StringIO from xml.etree import cElementTree as et from collections import namedtuple from ccnode.tags import Tag, tag_inspector from ccnode.hypervisor import lib as _libvirt Loading @@ -12,6 +13,9 @@ from ccnode.hypervisor.domains import vm_tags logger = logging.getLogger(__name__) NetworkInterface = namedtuple('NetworkInterface', ('source', 'mac', 'model')) class VirtualMachine(object): """Represent a VM instance.""" def __init__(self, dom, hypervisor): Loading Loading @@ -39,6 +43,14 @@ class VirtualMachine(object): self.tags[t.name] = t i += 1 i = 0 for nic in self.iter_nics(): for t in ( Tag('nic%s_mac' % i, nic.mac), Tag('nic%s_source' % i, nic.source), Tag('nic%s_model' %i, nic.model), ): self.tags[t.name] = t logger.debug(self.tags) Loading Loading @@ -88,3 +100,30 @@ class VirtualMachine(object): continue yield volume @property def nics(self): return list(self.iter_nics()) def iter_nics(self): for nic in et.ElementTree().parse( StringIO(self.lv_dom.XMLDesc(0)) ).findall('devices/interface'): if nic.get('type') == 'bridge': try: mac = nic.find('mac').get('address') except AttributeError: mac = None try: model = nic.find('model').get('type') except AttributeError: model = None try: source = nic.find('source').get('bridge') except AttributeError: source = None yield NetworkInterface( mac=mac, source=source, model=model, ) ccnode/hypervisor/domains/vm_tags.py +4 −3 Original line number Diff line number Diff line Loading @@ -69,8 +69,9 @@ status.ttl = 1 def disk(dom): """Get backend disks.""" return u' '.join(map(str, xrange(len(dom.disks)))) return u' '.join(map(str, xrange(len(dom.disks)))) or None def nic_(): pass def nic(dom): """VM network interfaces.""" return u' '.join(map(str, xrange(len(dom.nics)))) or None Loading
ccnode/hypervisor/domains/__init__.py +39 −0 Original line number Diff line number Diff line Loading @@ -2,6 +2,7 @@ import logging import weakref from StringIO import StringIO from xml.etree import cElementTree as et from collections import namedtuple from ccnode.tags import Tag, tag_inspector from ccnode.hypervisor import lib as _libvirt Loading @@ -12,6 +13,9 @@ from ccnode.hypervisor.domains import vm_tags logger = logging.getLogger(__name__) NetworkInterface = namedtuple('NetworkInterface', ('source', 'mac', 'model')) class VirtualMachine(object): """Represent a VM instance.""" def __init__(self, dom, hypervisor): Loading Loading @@ -39,6 +43,14 @@ class VirtualMachine(object): self.tags[t.name] = t i += 1 i = 0 for nic in self.iter_nics(): for t in ( Tag('nic%s_mac' % i, nic.mac), Tag('nic%s_source' % i, nic.source), Tag('nic%s_model' %i, nic.model), ): self.tags[t.name] = t logger.debug(self.tags) Loading Loading @@ -88,3 +100,30 @@ class VirtualMachine(object): continue yield volume @property def nics(self): return list(self.iter_nics()) def iter_nics(self): for nic in et.ElementTree().parse( StringIO(self.lv_dom.XMLDesc(0)) ).findall('devices/interface'): if nic.get('type') == 'bridge': try: mac = nic.find('mac').get('address') except AttributeError: mac = None try: model = nic.find('model').get('type') except AttributeError: model = None try: source = nic.find('source').get('bridge') except AttributeError: source = None yield NetworkInterface( mac=mac, source=source, model=model, )
ccnode/hypervisor/domains/vm_tags.py +4 −3 Original line number Diff line number Diff line Loading @@ -69,8 +69,9 @@ status.ttl = 1 def disk(dom): """Get backend disks.""" return u' '.join(map(str, xrange(len(dom.disks)))) return u' '.join(map(str, xrange(len(dom.disks)))) or None def nic_(): pass def nic(dom): """VM network interfaces.""" return u' '.join(map(str, xrange(len(dom.nics)))) or None