package org.ovirt.engine.core.bll.exportimport;
import javax.inject.Inject;
import org.ovirt.engine.core.bll.NonTransactiveCommandAttribute;
import org.ovirt.engine.core.bll.VmCommand;
import org.ovirt.engine.core.bll.context.CommandContext;
import org.ovirt.engine.core.common.AuditLogType;
import org.ovirt.engine.core.common.action.VmOperationParameterBase;
import org.ovirt.engine.core.common.errors.EngineMessage;
import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
import org.ovirt.engine.core.common.vdscommands.VdsAndVmIDVDSParametersBase;
import org.ovirt.engine.core.compat.Guid;
import org.ovirt.engine.core.vdsbroker.ResourceManager;
import org.ovirt.engine.core.vdsbroker.VmManager;
@NonTransactiveCommandAttribute
public class CancelConvertVmCommand<T extends VmOperationParameterBase> extends VmCommand<T> {
@Inject
protected ResourceManager resourceManager;
public CancelConvertVmCommand(T parameters, CommandContext cmdContext) {
super(parameters, cmdContext);
}
@Override
protected void init() {
super.init();
setVdsId(getVmManager().getConvertProxyHostId());
}
@Override
protected void executeVmCommand() {
VDSReturnValue retVal = runVdsCommand(
VDSCommandType.CancelConvertVm,
new VdsAndVmIDVDSParametersBase(getVdsId(), getVmId()));
setSucceeded(retVal.getSucceeded());
}
@Override
protected void setActionMessageParameters() {
addValidationMessage(EngineMessage.VAR__TYPE__VM);
addValidationMessage(EngineMessage.VAR__ACTION__CANCEL_CONVERSION);
}
@Override
protected boolean validate() {
if (getVm() == null) {
return failValidation(EngineMessage.ACTION_TYPE_FAILED_VM_NOT_FOUND);
}
if (!canRunActionOnNonManagedVm()) {
return false;
}
if (Guid.isNullOrEmpty(getVdsId())) {
return failValidation(EngineMessage.VM_CANNOT_CANCEL_CONVERSION_WHEN_VM_IS_NOT_BEING_CONVERTED);
}
return true;
}
@Override
public AuditLogType getAuditLogTypeValue() {
return getSucceeded() ?
AuditLogType.VM_CANCEL_CONVERSION
: AuditLogType.VM_CANCEL_CONVERSION_FAILED;
}
protected VmManager getVmManager() {
return resourceManager.getVmManager(getVmId());
}
}