Loading ccnode/ccnodehandlers.py +4 −3 Original line number Diff line number Diff line Loading @@ -53,12 +53,13 @@ HV_TAG_HELPER_LIST = [ VM_TAG_WRAP_MAP = { 'h' : 'get_name', 'vm' : 'get_name', 'hv' : 'get_hv_name', #'hv' : 'get_hv_name', 'arch' : 'get_arch', 'cpu' : 'get_cpu', 'status' : 'get_status', 'mem' : 'get_mem', 'memused' : 'get_mem_used', 'memfree' : 'get_mem_free', 'memused' : 'get_memused', 'memfree' : 'get_memfree', } VM_TAG_HELPER_LIST = [ Loading ccnode/kvm.py +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ class KvmHypervisor(LibvirtHypervisor): def __init__(self): super(KvmHypervisor, self).__init__('kvm') self.hv_type = 'KVM/QEMU' self.hv_type = 'kvm' def __new__(cls, *args, **kwargs): ''' Loading ccnode/libvirtwrapper.py +81 −18 Original line number Diff line number Diff line Loading @@ -5,6 +5,9 @@ import sys # we use psutils to get host informations we can't get with # libvirt import psutil import multiprocessing import os import re from interface import * from exceptions import * from time import sleep Loading @@ -26,9 +29,16 @@ XEN_LIBVIRT_SESSION = 'xen:///' ## States ######### # Hypervisor HV_ARCH_MAP = { 'i686' : 'x86', 'x86_64' : 'x64', } # Virtual Machines VM_STATUS = ( VM_LIBVIRT_STATUS = ( 'No state', 'Running', 'Blocked on resource', Loading @@ -38,6 +48,16 @@ VM_STATUS = ( 'Crashed' ) VM_STATUS = { 0 : 'stopped', 1 : 'running', 2 : 'running', 3 : 'paused', 4 : 'running', 5 : 'shutdown', 6 : 'shutdown', } VM_START_STATES = { 'running': 1, 'paused' : 0 Loading Loading @@ -132,16 +152,16 @@ class LibvirtVm(VM): def get_hv_name(self): return self._hypervisor.get_name() def get_used_mem(self): return self._domain.info()[2] / KILOBYTE_DIV def get_mem_used(self): return self._domain.info()[2] * KILOBYTE_DIV def get_total_mem(self): return self._domain.info()[1] / KILOBYTE_DIV def get_mem(self): return self._domain.info()[1] * KILOBYTE_DIV def get_free_mem(self): return (self.get_total_mem() - self.get_used_mem()) / KILOBYTE_DIV def get_mem_free(self): return (self.get_total_mem() - self.get_used_mem()) * KILOBYTE_DIV def get_vcpu(self): def get_cpu(self): return self._domain.info()[3] def get_cpu_percent(self): Loading Loading @@ -185,6 +205,20 @@ class LibvirtVm(VM): d['size'] = sto.get_volume_capacity(pool, vol_name) result.append(d) return result def get_arch(self): result = None try: xml_string = self._domain.XMLDesc(libvirt.VIR_DOMAIN_XML_INACTIVE) xroot = xml.dom.minidom.parseString(xml_string) xdomain = xroot.getElementsByTagName('domain').pop() xos = xdomain.getElementsByTagName('os').pop() xtype = xos.getElementsByTagName('type').pop() arch = xtype.getAttribute('arch') if arch in HV_ARCH_MAP: result = HV_ARCH_MAP[arch] except: pass return result def get_status(self): Loading Loading @@ -282,7 +316,29 @@ class LibvirtHypervisor(Hypervisor): return self.hv_type def get_hv_version(self): return self._con_handle.getVersion() return str(self._con_handle.getVersion()) def get_uname(self): return ' '.join(os.uname()) def get_uptime(self): result = None try: f = open("/proc/uptime") data = f.read().split() f.close() result = str(int(float(data[0]))) except: pass return result def get_loadavg(self): result = None try: result = ' '.join('%.2f' % load for load in os.getloadavg()) except: pass return result def _build_vm_list(self): ''' Loading Loading @@ -314,7 +370,11 @@ class LibvirtHypervisor(Hypervisor): ''' Get archetcture type of hypervisor ''' return self._con_handle.getInfo()[0] result = None arch = self._con_handle.getInfo()[0] if arch in HV_ARCH_MAP: result = HV_ARCH_MAP[arch] return result def get_nb_cpu(self): ''' Loading @@ -326,7 +386,7 @@ class LibvirtHypervisor(Hypervisor): ''' Returns the frequency in MHZ of cpus in the hypervisor ''' return self._con_handle.getInfo()[3] return str(self._con_handle.getInfo()[3]) def get_nb_threads(self): ''' Loading @@ -335,16 +395,19 @@ class LibvirtHypervisor(Hypervisor): return self._con_handle.getInfo()[7] def get_mem(self): return (psutil.avail_phymem() + psutil.used_phymem()) return str(psutil.avail_phymem() + psutil.used_phymem()) def get_mem_free(self): return psutil.avail_phymem() return str(psutil.avail_phymem()) def get_mem_used(self): return psutil.used_phymem() return str(psutil.used_phymem()) def get_cpu_percent(self): return '%2.0f' % psutil.cpu_percent() return str(int(psutil.cpu_percent())) def get_cpu(self): return str(multiprocessing.cpu_count()) def get_disks(self): result = {} Loading Loading @@ -373,7 +436,7 @@ class LibvirtHypervisor(Hypervisor): # get the capacity of a specific pool capacity = self._storage.get_pool_space_total( self._storage.get_pools()[pool]) return capacity return str(capacity) def get_storage_used(self, pool=None): used = 0 Loading @@ -385,7 +448,7 @@ class LibvirtHypervisor(Hypervisor): # get the used space of a specific pool used = self._storage.get_pool_space_used( self._storage.get_pools()[pool]) return used return str(used) def get_storage_free(self, pool=None): free = 0 Loading @@ -397,7 +460,7 @@ class LibvirtHypervisor(Hypervisor): # get the free space of a specific pool free = self._storage.get_pool_space_available( self._storage.get_pools()[pool]) return free return str(free) def get_storage_type(self, pool_name): result = None Loading Loading
ccnode/ccnodehandlers.py +4 −3 Original line number Diff line number Diff line Loading @@ -53,12 +53,13 @@ HV_TAG_HELPER_LIST = [ VM_TAG_WRAP_MAP = { 'h' : 'get_name', 'vm' : 'get_name', 'hv' : 'get_hv_name', #'hv' : 'get_hv_name', 'arch' : 'get_arch', 'cpu' : 'get_cpu', 'status' : 'get_status', 'mem' : 'get_mem', 'memused' : 'get_mem_used', 'memfree' : 'get_mem_free', 'memused' : 'get_memused', 'memfree' : 'get_memfree', } VM_TAG_HELPER_LIST = [ Loading
ccnode/kvm.py +1 −1 Original line number Diff line number Diff line Loading @@ -19,7 +19,7 @@ class KvmHypervisor(LibvirtHypervisor): def __init__(self): super(KvmHypervisor, self).__init__('kvm') self.hv_type = 'KVM/QEMU' self.hv_type = 'kvm' def __new__(cls, *args, **kwargs): ''' Loading
ccnode/libvirtwrapper.py +81 −18 Original line number Diff line number Diff line Loading @@ -5,6 +5,9 @@ import sys # we use psutils to get host informations we can't get with # libvirt import psutil import multiprocessing import os import re from interface import * from exceptions import * from time import sleep Loading @@ -26,9 +29,16 @@ XEN_LIBVIRT_SESSION = 'xen:///' ## States ######### # Hypervisor HV_ARCH_MAP = { 'i686' : 'x86', 'x86_64' : 'x64', } # Virtual Machines VM_STATUS = ( VM_LIBVIRT_STATUS = ( 'No state', 'Running', 'Blocked on resource', Loading @@ -38,6 +48,16 @@ VM_STATUS = ( 'Crashed' ) VM_STATUS = { 0 : 'stopped', 1 : 'running', 2 : 'running', 3 : 'paused', 4 : 'running', 5 : 'shutdown', 6 : 'shutdown', } VM_START_STATES = { 'running': 1, 'paused' : 0 Loading Loading @@ -132,16 +152,16 @@ class LibvirtVm(VM): def get_hv_name(self): return self._hypervisor.get_name() def get_used_mem(self): return self._domain.info()[2] / KILOBYTE_DIV def get_mem_used(self): return self._domain.info()[2] * KILOBYTE_DIV def get_total_mem(self): return self._domain.info()[1] / KILOBYTE_DIV def get_mem(self): return self._domain.info()[1] * KILOBYTE_DIV def get_free_mem(self): return (self.get_total_mem() - self.get_used_mem()) / KILOBYTE_DIV def get_mem_free(self): return (self.get_total_mem() - self.get_used_mem()) * KILOBYTE_DIV def get_vcpu(self): def get_cpu(self): return self._domain.info()[3] def get_cpu_percent(self): Loading Loading @@ -185,6 +205,20 @@ class LibvirtVm(VM): d['size'] = sto.get_volume_capacity(pool, vol_name) result.append(d) return result def get_arch(self): result = None try: xml_string = self._domain.XMLDesc(libvirt.VIR_DOMAIN_XML_INACTIVE) xroot = xml.dom.minidom.parseString(xml_string) xdomain = xroot.getElementsByTagName('domain').pop() xos = xdomain.getElementsByTagName('os').pop() xtype = xos.getElementsByTagName('type').pop() arch = xtype.getAttribute('arch') if arch in HV_ARCH_MAP: result = HV_ARCH_MAP[arch] except: pass return result def get_status(self): Loading Loading @@ -282,7 +316,29 @@ class LibvirtHypervisor(Hypervisor): return self.hv_type def get_hv_version(self): return self._con_handle.getVersion() return str(self._con_handle.getVersion()) def get_uname(self): return ' '.join(os.uname()) def get_uptime(self): result = None try: f = open("/proc/uptime") data = f.read().split() f.close() result = str(int(float(data[0]))) except: pass return result def get_loadavg(self): result = None try: result = ' '.join('%.2f' % load for load in os.getloadavg()) except: pass return result def _build_vm_list(self): ''' Loading Loading @@ -314,7 +370,11 @@ class LibvirtHypervisor(Hypervisor): ''' Get archetcture type of hypervisor ''' return self._con_handle.getInfo()[0] result = None arch = self._con_handle.getInfo()[0] if arch in HV_ARCH_MAP: result = HV_ARCH_MAP[arch] return result def get_nb_cpu(self): ''' Loading @@ -326,7 +386,7 @@ class LibvirtHypervisor(Hypervisor): ''' Returns the frequency in MHZ of cpus in the hypervisor ''' return self._con_handle.getInfo()[3] return str(self._con_handle.getInfo()[3]) def get_nb_threads(self): ''' Loading @@ -335,16 +395,19 @@ class LibvirtHypervisor(Hypervisor): return self._con_handle.getInfo()[7] def get_mem(self): return (psutil.avail_phymem() + psutil.used_phymem()) return str(psutil.avail_phymem() + psutil.used_phymem()) def get_mem_free(self): return psutil.avail_phymem() return str(psutil.avail_phymem()) def get_mem_used(self): return psutil.used_phymem() return str(psutil.used_phymem()) def get_cpu_percent(self): return '%2.0f' % psutil.cpu_percent() return str(int(psutil.cpu_percent())) def get_cpu(self): return str(multiprocessing.cpu_count()) def get_disks(self): result = {} Loading Loading @@ -373,7 +436,7 @@ class LibvirtHypervisor(Hypervisor): # get the capacity of a specific pool capacity = self._storage.get_pool_space_total( self._storage.get_pools()[pool]) return capacity return str(capacity) def get_storage_used(self, pool=None): used = 0 Loading @@ -385,7 +448,7 @@ class LibvirtHypervisor(Hypervisor): # get the used space of a specific pool used = self._storage.get_pool_space_used( self._storage.get_pools()[pool]) return used return str(used) def get_storage_free(self, pool=None): free = 0 Loading @@ -397,7 +460,7 @@ class LibvirtHypervisor(Hypervisor): # get the free space of a specific pool free = self._storage.get_pool_space_available( self._storage.get_pools()[pool]) return free return str(free) def get_storage_type(self, pool_name): result = None Loading