diff --git a/ccnode/hypervisor/__init__.py b/ccnode/hypervisor/__init__.py index 819402e68467d1eb685b310a2dc14e8b2538be05..14a575e5ee7c655967fa2975f8bb5517d889a23a 100644 --- a/ccnode/hypervisor/__init__.py +++ b/ccnode/hypervisor/__init__.py @@ -100,10 +100,7 @@ class Handler(HostHandler): if format != 'xml': raise NotImplementedError('Format not supported') - try: - return _libvirt.connection.defineXML(data).name() - except libvirt.libvirtError: - logger.exception('Error while creating domain') + return self.hypervisor.vm_define(data) def vm_undefine(self, name): logger.debug('VM undefin') @@ -260,6 +257,16 @@ class Hypervisor(object): logger.info('Delete domain: %s (%s)', vm.name, vm.uuid) self.main.remove_sub_object(vm) + def vm_define(self, xml_desc): + """Create a VM on the Hypervisor + :param str xml_desc: XML description in libvirt format + :return: VM name created + """ + try: + return self.vir_con.defineXML(xml_desc).name() + except libvirt.libvirtError: + logger.exception('Error while creating domain') + def _count_domain(self, filter=lambda d: True): count = 0