package org.ovirt.engine.core.bll; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.VmOperationParameterBase; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; import org.ovirt.engine.core.common.vdscommands.PauseVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.dal.VdcBllMessages; import org.ovirt.engine.core.dal.dbbroker.DbFacade; public class PauseVmCommand<T extends VmOperationParameterBase> extends VmOperationCommandBase<T> { public PauseVmCommand(T parameters) { super(parameters); } @Override protected void Perform() { if (VM.isStatusUp(getVm().getstatus())) { setActionReturnValue(Backend.getInstance().getResourceManager() .RunVdsCommand(VDSCommandType.Pause, new PauseVDSCommandParameters(getVdsId(), getVmId())) .getReturnValue()); // Vds.pause(VmId); setSucceeded(true); } else { setActionReturnValue(getVm().getstatus()); } } @Override public AuditLogType getAuditLogTypeValue() { return getSucceeded() ? AuditLogType.USER_PAUSE_VM : AuditLogType.USER_FAILED_PAUSE_VM; } public static boolean CanPauseVm(Guid vmId, java.util.ArrayList<String> message) { boolean retValue = true; VM vm = DbFacade.getInstance().getVmDAO().getById(vmId); if (vm == null) { retValue = false; message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_NOT_FOUND.toString()); } else { if (vm.getstatus() == VMStatus.WaitForLaunch || vm.getstatus() == VMStatus.MigratingFrom || vm.getstatus() == VMStatus.NotResponding) { retValue = false; message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_STATUS_ILLEGAL.toString()); } else if (!VM.isStatusUp(vm.getstatus())) { retValue = false; message.add(VdcBllMessages.ACTION_TYPE_FAILED_VM_IS_NOT_RUNNING.toString()); } } if (!retValue) { message.add(VdcBllMessages.VAR__ACTION__PAUSE.toString()); message.add(VdcBllMessages.VAR__TYPE__VM.toString()); } return retValue; } @Override protected boolean canDoAction() { return CanPauseVm(getParameters().getVmId(), getReturnValue().getCanDoActionMessages()); } }