package org.ovirt.engine.core.vdsbroker; import javax.inject.Inject; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.businessentities.VmDynamic; import org.ovirt.engine.core.common.vdscommands.MigrateVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.dao.VmDynamicDao; public class MigrateVDSCommand<P extends MigrateVDSCommandParameters> extends ManagingVmCommand<P> { @Inject private VmDynamicDao vmDynamicDao; public MigrateVDSCommand(P parameters) { super(parameters); } @Override protected void executeVmCommand() { VDSReturnValue vdsReturnValue = resourceManager.runVdsCommand( VDSCommandType.MigrateBroker, getParameters()); VmDynamic vmDynamic = vmDynamicDao.get(getParameters().getVmId()); if (vdsReturnValue.getSucceeded()) { resourceManager.addAsyncRunningVm(getParameters().getVmId()); vmDynamic.setStatus(VMStatus.MigratingFrom); vmDynamic.setMigratingToVds(getParameters().getDstVdsId()); vmManager.update(vmDynamic); getVDSReturnValue().setReturnValue(VMStatus.MigratingFrom); } else { log.error("Failed to migrate VM '{}' in VDS = '{}' , error = '{}'", getParameters().getVmId(), getParameters().getVdsId(), vdsReturnValue.getExceptionString()); getVDSReturnValue().setSucceeded(false); getVDSReturnValue().setReturnValue(vmDynamic.getStatus()); getVDSReturnValue().setVdsError(vdsReturnValue.getVdsError()); getVDSReturnValue().setExceptionString(vdsReturnValue.getExceptionString()); getVDSReturnValue().setExceptionObject(vdsReturnValue.getExceptionObject()); } } }