package org.ovirt.engine.core.bll; import org.ovirt.engine.core.common.action.AddVmAndAttachToPoolParameters; import org.ovirt.engine.core.common.action.AddVmFromScratchParameters; import org.ovirt.engine.core.common.action.AddVmToPoolParameters; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.action.VmManagementParametersBase; import org.ovirt.engine.core.common.businessentities.VmStatic; @InternalCommandAttribute public class AddVmAndAttachToPoolCommand<T extends AddVmAndAttachToPoolParameters> extends AddVmCommand<T> { public AddVmAndAttachToPoolCommand(T parameters) { super(parameters); } /** * This operation may take much time. */ @Override protected void executeCommand() { VmStatic vmStatic = getParameters().getVmStaticData(); boolean vmAddedSuccessfully = false; VdcReturnValueBase returnValueFromAddVm = null; if (VmTemplateHandler.BlankVmTemplateId.equals(vmStatic.getvmt_guid())) { // Vm from scratch AddVmFromScratchParameters tempVar = new AddVmFromScratchParameters(vmStatic, getParameters() .getDiskInfoList(), getParameters().getStorageDomainId()); tempVar.setSessionId(getParameters().getSessionId()); tempVar.setDontAttachToDefaultTag(true); returnValueFromAddVm = Backend.getInstance().runInternalAction(VdcActionType.AddVmFromScratch, tempVar); } else { VmManagementParametersBase tempVar2 = new VmManagementParametersBase(vmStatic); tempVar2.setSessionId(getParameters().getSessionId()); tempVar2.setStorageDomainId(getParameters().getStorageDomainId()); tempVar2.setDontCheckTemplateImages(true); tempVar2.setDontAttachToDefaultTag(true); returnValueFromAddVm = Backend.getInstance().runInternalAction(VdcActionType.AddVm, tempVar2); } vmAddedSuccessfully = returnValueFromAddVm.getSucceeded(); if (vmAddedSuccessfully) { getTaskIdList().addAll(returnValueFromAddVm.getInternalTaskIdList()); AddVmToPoolParameters tempVar3 = new AddVmToPoolParameters(getParameters().getPoolId(), vmStatic.getId()); tempVar3.setShouldBeLogged(false); setSucceeded(Backend.getInstance().runInternalAction(VdcActionType.AddVmToPool, tempVar3).getSucceeded()); addVmPermission(); } } }