Commit ead5b9b4 authored by Antoine Millet's avatar Antoine Millet
Browse files

Fixed clone job to use the new API

parent 3d7c96e1
Loading
Loading
Loading
Loading
+12 −14
Original line number Diff line number Diff line
@@ -647,20 +647,18 @@ class CloneJob(BaseMigrationJob):
            raise JobCancelError('author have no right to migrate to this hv')

        # Update the VM object:
        try:
            self.manager.server.objects.update(ids=(vm_id,))
            vm = self.manager.server.objects.get_by_id(vm_id)
        except UnknownObjectError:
            raise JobCancelError('Cloned VM not found')
        vm = self.manager.server.db.get_by_id(vm_id)
        if vm is None:
            raise JobCancelError('Source VM not found')

        # Get the source and destination hv clients:
        try:
            source = self.manager.server.get_connection(self['hv_source'])
            source = self.manager.server.get_client(self['hv_source'])
        except KeyError:
            raise JobCancelError('source hypervisor is not connected')

        try:
            dest = self.manager.server.get_connection(self['hv_dest'])
            dest = self.manager.server.get_client(self['hv_dest'])
        except KeyError:
            raise JobCancelError('destination hypervisor is not connected')

@@ -669,7 +667,7 @@ class CloneJob(BaseMigrationJob):
        self.report('waiting lock for source and dest hypervisors')
        self.logger.info('Job-%s: Trying to acquire locks', self['id'])

        with AcquiresAllOrNone(source.lock, dest.lock):
        with AcquiresAllOrNone(source.hvlock, dest.hvlock):
            self.logger.info('Job-%s: Locks acquired', self['id'])
            self.checkpoint()

@@ -767,11 +765,11 @@ class CloneJob(BaseMigrationJob):
        self['func_cancel_xfer'] = cancel_xfer

        # Wait for the end of transfert:
        cids = set()
        cids.add(source.connection.async_call('vol_export', pool, name,
                                              dest.get_ip(), xferprop['port']))
        cids.add(dest.connection.async_call('vol_import_wait', xferprop['id']))
        msgs = self.manager.server.manager.wait(frozenset(cids))
        watcher = AsyncWatcher()
        watcher.register(source.conn, 'vol_export', pool, name, dest.ip, xferprop['port'])
        watcher.register(dest.conn, 'vol_import_wait', xferprop['id'])

        msgs = watcher.wait()
        del self['func_cancel_xfer']

        # Compare checksum of two answers:
@@ -783,7 +781,7 @@ class CloneJob(BaseMigrationJob):
                msg = 'error while copy: %s' % msg['error']['message']
                raise JobCancelError(msg)
            else:
                checksums.append(msg.get('checksum'))
                checksums.append(msg['return'].get('checksum'))
                self.checkpoint()

        if checksums[0] != checksums[1]: