Commit 51a092ef authored by Thibault VINCENT's avatar Thibault VINCENT
Browse files

add: new wrapper to migrate libvirt vm

parent c2243e70
Loading
Loading
Loading
Loading
+24 −0
Original line number Diff line number Diff line
@@ -566,6 +566,30 @@ class LibvirtVm(VM):
            raise VMError('deletion of VM `%s` failed' % self.get_name())
        self._hv_handle._cache_vm_rebuild()
    
    def migrate(self, host, port):
        '''
        '''
        if self.hypervisor().get_hv_type() == 'xen':
            flags = (libvirt.VIR_MIGRATE_LIVE ^
                    libvirt.VIR_MIGRATE_PERSIST_DEST ^
                    libvirt.VIR_MIGRATE_UNDEFINE_SOURCE)
            uri = 'xenmigr://%s:%d' % (host, port)
        else:
            flags = (libvirt.VIR_MIGRATE_LIVE ^
                    libvirt.VIR_MIGRATE_PERSIST_DEST ^
                    libvirt.VIR_MIGRATE_UNDEFINE_SOURCE ^
                    libvirt.VIR_MIGRATE_PEER2PEER ^
                    libvirt.VIR_MIGRATE_TUNNELLED)
            uri = 'qemu+tcp://%s:%d/system' % (host, port)
        
        try:
            self._domain.migrate(self._hv_handle._lvcon_handle, flags, None, uri, 0)
        except libvirt.libvirtError as err:
            # FIXME ignore bogus exception properly
            if not ('no domain with matching name' in err.message
                                    or 'Domain not found' in err.message):
                raise err
    
    def power_on(self):
        '''
        '''