package org.ovirt.engine.core.bll; import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.StopVmParameters; import org.ovirt.engine.core.common.errors.EngineMessage; import org.ovirt.engine.core.compat.Guid; @NonTransactiveCommandAttribute(forceCompensation=true) public class StopVmCommand<T extends StopVmParameters> extends StopVmCommandBase<T> { public StopVmCommand(T stopVmParams, CommandContext commandContext) { super(stopVmParams, commandContext); } protected StopVmCommand(Guid commandId) { super(commandId); } @Override protected void perform() { destroyVm(); setSucceeded(true); } @Override public AuditLogType getAuditLogTypeValue() { if (shouldSkipCommandExecutionCached()) { return logCommandExecutionSkipped("Stop VM"); } if (getSuspendedVm()) { return getSucceeded() ? AuditLogType.USER_STOP_SUSPENDED_VM : AuditLogType.USER_STOP_SUSPENDED_VM_FAILED; } else { switch (getParameters().getStopVmType()) { case NORMAL: return getSucceeded() ? AuditLogType.USER_STOP_VM : AuditLogType.USER_FAILED_STOP_VM; case CANNOT_SHUTDOWN: return getSucceeded() ? AuditLogType.USER_STOPPED_VM_INSTEAD_OF_SHUTDOWN : AuditLogType.USER_FAILED_STOPPING_VM_INSTEAD_OF_SHUTDOWN; default: // shouldn't get here: return AuditLogType.UNASSIGNED; } } } @Override protected void setActionMessageParameters() { addValidationMessage(EngineMessage.VAR__ACTION__STOP); addValidationMessage(EngineMessage.VAR__TYPE__VM); } }