package org.ovirt.engine.core.bll; import org.ovirt.engine.core.common.AuditLogType; import org.ovirt.engine.core.common.action.VdsShutdownParameters; import org.ovirt.engine.core.common.businessentities.VDSStatus; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllErrors; import org.ovirt.engine.core.common.vdscommands.ShutdownVdsVDSCommandParameters; import org.ovirt.engine.core.common.vdscommands.VDSCommandType; import org.ovirt.engine.core.common.vdscommands.VDSReturnValue; import org.ovirt.engine.core.dal.VdcBllMessages; public class ShutdownVdsCommand<T extends VdsShutdownParameters> extends VdsCommand<T> { public ShutdownVdsCommand(T parameters) { super(parameters); } @Override protected void executeCommand() { VDSReturnValue result = Backend .getInstance() .getResourceManager() .RunVdsCommand(VDSCommandType.ShutdownVds, new ShutdownVdsVDSCommandParameters(getVds().getvds_id(), getParameters().getReboot())); if (result == null || (VDSStatus) result.getReturnValue() != VDSStatus.Down) { throw new VdcBLLException(VdcBllErrors.VDS_SHUTDOWN_ERROR); } getVds().setstatus((VDSStatus) result.getReturnValue()); setSucceeded(true); } @Override protected boolean canDoAction() { boolean returnValue = true; if (getVds() == null) { addCanDoActionMessage(VdcBllMessages.VDS_SHUTDOWN_VDS_NOT_FOUND); returnValue = false; } if (getVds().getstatus() == VDSStatus.Down || getVds().getstatus() == VDSStatus.NonResponsive) { addCanDoActionMessage(VdcBllMessages.VDS_SHUTDOWN_NO_RESPONSE); returnValue = false; } return returnValue; } @Override public AuditLogType getAuditLogTypeValue() { return getSucceeded() ? AuditLogType.USER_VDS_SHUTDOWN : AuditLogType.USER_FAILED_VDS_SHUTDOWN; } }