package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.StopVmParameters;
import org.ovirt.engine.core.dal.VdcBllMessages;
public class StopVmCommand<T extends StopVmParameters> extends StopVmCommandBase<T> {
public StopVmCommand(T stopVmParams) {
super(stopVmParams);
}
@Override
protected void Perform() {
Destroy();
setSucceeded(true);
}
@Override
public AuditLogType getAuditLogTypeValue() {
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 boolean canDoAction() {
boolean ret = super.canDoAction();
if (!ret) {
addCanDoActionMessage(VdcBllMessages.VAR__ACTION__STOP);
addCanDoActionMessage(VdcBllMessages.VAR__TYPE__VM);
}
return ret;
}
}