def migrate(args): #被迁移虚拟机校验 api = VmAPI() host_api = HostAPI() vm = api.get_vm_by_uuid(args['uuid']) if not vm: return {'res': False, 'err': ERR_VM_UUID} if not vm.can_operate_by(args['req_user']): return {'res': False, 'err': ERR_AUTH_PERM} #目标主机校验 host = host_api.get_host_by_id(args['host_id']) if not host.managed_by(args['req_user']): return {'res': False, 'err': ERR_AUTH_PERM} #被迁移虚拟机与目标主机是否处于同一个分中心 if not vm.center_id == host.center_id: return {'res': False, 'err': ERR_AUTH_PERM} if vm.host_id == host.id: return {'res': False, 'err': ERR_VM_MIGRATE_SAME_HOST} res = api.migrate_vm(args['uuid'], args['host_id']) if res: return {'res': True} return {'res': False, 'err': ERR_VM_MIGRATE}
def migrate(args): #被迁移虚拟机校验 api = VmAPI() host_api = HostAPI() vm = api.get_vm_by_uuid(args['uuid']) if not vm: return {'res': False, 'err': ERR_VM_UUID} if not vm.can_operate_by(args['req_user']): return {'res': False, 'err': ERR_AUTH_PERM} #目标主机校验 host = host_api.get_host_by_id(args['host_id']) if not host.managed_by(args['req_user']): return {'res': False, 'err': ERR_AUTH_PERM} #被迁移虚拟机与目标主机是否处于同一个分中心 if not vm.center_id == host.center_id: return {'res': False, 'err': ERR_AUTH_PERM} if vm.host_id == host.id: return {'res': False, 'err': ERR_VM_MIGRATE} res = api.migrate_vm(args['uuid'], args['host_id']) if res: return {'res': True} return {'res': False, 'err': ERR_VM_MIGRATE}
def migrate(args): #被迁移虚拟机校验 api = VmAPI() host_api = HostAPI() gpu_api = GPUAPI() volume_api = VolumeAPI() vm = api.get_vm_by_uuid(args['uuid']) if not vm: return {'res': False, 'err': ERR_VM_UUID} if not vm.can_operate_by(args['req_user']): return {'res': False, 'err': ERR_AUTH_PERM} #目标主机校验 host = host_api.get_host_by_id(args['host_id']) if not host.managed_by(args['req_user']): return {'res': False, 'err': ERR_AUTH_PERM} #被迁移虚拟机与目标主机是否处于同一个分中心 if not vm.center_id == host.center_id: return {'res': False, 'err': ERR_VM_MIGRATE_DIFF_CEPH} #检测目标主机是否为当前宿主机 if vm.host_id == host.id: return {'res': False, 'err': ERR_VM_MIGRATE_SAME_HOST} #检测是否挂载GPU gpu_list = gpu_api.get_gpu_list_by_vm_uuid(args['uuid']) if len(gpu_list) > 0: return {'res': False, 'err': ERR_VM_MIGRATE_WITHGPU} #检测挂载云硬盘与目标主机是否在同一集群 volume_list = volume_api.get_volume_list_by_vm_uuid(args['uuid']) if len(volume_list) > 0 and vm.group_id != host.group_id: return {'res': False, 'err': ERR_VM_MIGRATE_WITHVOL} res = api.migrate_vm(args['uuid'], args['host_id']) if res: return {'res': True} return {'res': False, 'err': ERR_VM_MIGRATE}