Loading ccnode/handlers.py +45 −0 Original line number Diff line number Diff line Loading @@ -526,6 +526,51 @@ class NodeHandler(RpcHandler): raise NotImplementedError('host handler has no method `%s`' %method) @pure ################################## # VM management ################################## @pure def vm_define(self, data, format='xml'): ''' ''' warning('vm_define: server requested creation of a new VM') debug('vm_define: with description data `%s`' % data) if hasattr(self._host_handle, 'vm_define'): name = self._host_handle.vm_define(data) debug('vm_define: new VM has name `%s`' % name) return name else: raise NotImplementedError('host do not support VM creation') @pure def vm_undefine(self, name): ''' ''' warning('vm_undefine: server requested deletion of `%s`' % name) if hasattr(self._host_handle, 'vm_get'): vm = self._host_handle.vm_get(name) if hasattr(vm, 'undefine'): vm.undefine() else: raise NotImplementedError('VM object has not method `undefine`') else: raise NotImplementedError('host do not support ') @pure def vm_export(self, name, format='xml'): ''' ''' warning('vm_export: server requested configuration of `%s`' % name) if hasattr(self._host_handle, 'vm_get'): vm = self._host_handle.vm_get(name) if hasattr(vm, 'get_config'): return vm.get_config() else: raise NotImplementedError('VM object has not method `get_config`') else: raise NotImplementedError('host handler has not method `vm_get`') def vm_stop(self, vm_names=None, force=False): ''' ''' Loading ccnode/libvirtwrapper.py +23 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ class LibvirtHypervisor(Hypervisor): def __init__(self, hv_type): ''' ''' super(LibvirtHypervisor, self).__init__() try: if hv_type == 'kvm': warning("LibvirtHypervisor: initialized as KVM") Loading Loading @@ -127,6 +128,16 @@ class LibvirtHypervisor(Hypervisor): ''' return self._sto_handle def vm_define(self, data): ''' ''' vm = self._lvcon_handle.defineXML(data) self._cache_vm_rebuild() if hasattr(vm, 'name'): return vm.name() else: raise HypervisorError('VM not defined properly') def vm_list(self): ''' ''' Loading Loading @@ -445,6 +456,13 @@ class LibvirtVm(VM): ''' return self._hv_handle def undefine(self): ''' ''' if self._domain.undefine(): raise VMError('deletion of VM `%s` failed' % self.get_name()) self._hv_handle._cache_vm_rebuild() def power_on(self): ''' ''' Loading Loading @@ -505,6 +523,11 @@ class LibvirtVm(VM): pass return paused def get_config(self): ''' ''' return self._domain.XMLDesc(0) def get_uuid(self): ''' ''' Loading Loading
ccnode/handlers.py +45 −0 Original line number Diff line number Diff line Loading @@ -526,6 +526,51 @@ class NodeHandler(RpcHandler): raise NotImplementedError('host handler has no method `%s`' %method) @pure ################################## # VM management ################################## @pure def vm_define(self, data, format='xml'): ''' ''' warning('vm_define: server requested creation of a new VM') debug('vm_define: with description data `%s`' % data) if hasattr(self._host_handle, 'vm_define'): name = self._host_handle.vm_define(data) debug('vm_define: new VM has name `%s`' % name) return name else: raise NotImplementedError('host do not support VM creation') @pure def vm_undefine(self, name): ''' ''' warning('vm_undefine: server requested deletion of `%s`' % name) if hasattr(self._host_handle, 'vm_get'): vm = self._host_handle.vm_get(name) if hasattr(vm, 'undefine'): vm.undefine() else: raise NotImplementedError('VM object has not method `undefine`') else: raise NotImplementedError('host do not support ') @pure def vm_export(self, name, format='xml'): ''' ''' warning('vm_export: server requested configuration of `%s`' % name) if hasattr(self._host_handle, 'vm_get'): vm = self._host_handle.vm_get(name) if hasattr(vm, 'get_config'): return vm.get_config() else: raise NotImplementedError('VM object has not method `get_config`') else: raise NotImplementedError('host handler has not method `vm_get`') def vm_stop(self, vm_names=None, force=False): ''' ''' Loading
ccnode/libvirtwrapper.py +23 −0 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ class LibvirtHypervisor(Hypervisor): def __init__(self, hv_type): ''' ''' super(LibvirtHypervisor, self).__init__() try: if hv_type == 'kvm': warning("LibvirtHypervisor: initialized as KVM") Loading Loading @@ -127,6 +128,16 @@ class LibvirtHypervisor(Hypervisor): ''' return self._sto_handle def vm_define(self, data): ''' ''' vm = self._lvcon_handle.defineXML(data) self._cache_vm_rebuild() if hasattr(vm, 'name'): return vm.name() else: raise HypervisorError('VM not defined properly') def vm_list(self): ''' ''' Loading Loading @@ -445,6 +456,13 @@ class LibvirtVm(VM): ''' return self._hv_handle def undefine(self): ''' ''' if self._domain.undefine(): raise VMError('deletion of VM `%s` failed' % self.get_name()) self._hv_handle._cache_vm_rebuild() def power_on(self): ''' ''' Loading Loading @@ -505,6 +523,11 @@ class LibvirtVm(VM): pass return paused def get_config(self): ''' ''' return self._domain.XMLDesc(0) def get_uuid(self): ''' ''' Loading