package org.ovirt.engine.core.bll;
import org.ovirt.engine.core.common.action.RunVmOnceParams;
import org.ovirt.engine.core.common.action.SysPrepParams;
import org.ovirt.engine.core.common.vdscommands.CreateVmVDSCommandParameters;
import org.ovirt.engine.core.dal.VdcBllMessages;
public class RunVmOnceCommand<T extends RunVmOnceParams> extends RunVmCommand<T> {
public RunVmOnceCommand(T runVmParams) {
super(runVmParams);
}
@Override
protected boolean canDoAction() {
boolean returnValue = super.canDoAction();
// the condition allows to get only user and password which are both set (even with empty string) or both aren't
// set (null), the action will fail if only one of those parameters is null.
if (returnValue
&& (getParameters().getSysPrepUserName() == null ^ getParameters().getSysPrepPassword() == null)) {
addCanDoActionMessage(VdcBllMessages.VM_CANNOT_RUN_ONCE_WITH_ILLEGAL_SYSPREP_PARAM);
returnValue = false;
}
return returnValue;
}
@Override
protected CreateVmVDSCommandParameters initVdsCreateVmParams() {
CreateVmVDSCommandParameters createVmParams = super.initVdsCreateVmParams();
SysPrepParams sysPrepParams = new SysPrepParams();
RunVmOnceParams runOnceParams = getParameters();
sysPrepParams.setSysPrepDomainName(runOnceParams.getSysPrepDomainName());
sysPrepParams.setSysPrepUserName(runOnceParams.getSysPrepUserName());
sysPrepParams.setSysPrepPassword(runOnceParams.getSysPrepPassword());
createVmParams.setSysPrepParams(sysPrepParams);
return createVmParams;
}
}