Omer Frenkel has uploaded a new change for review. Change subject: core, rest, frontend: fix re-initialization flow ......................................................................
core, rest, frontend: fix re-initialization flow Change-Id: I2ff258809c7fedcb7336f4e37be9bc53f2678824 Signed-off-by: Omer Frenkel <ofren...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmPoolUserParameters.java M backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java M backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/PoolItemBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/VmItemBehavior.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java 10 files changed, 22 insertions(+), 79 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/26/17626/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java index 56e4e31..691a980 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AttachUserToVmFromPoolAndRunCommand.java @@ -19,7 +19,6 @@ import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.action.VmPoolUserParameters; import org.ovirt.engine.core.common.asynctasks.EntityInfo; -import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VMStatus; @@ -31,7 +30,6 @@ import org.ovirt.engine.core.common.job.Step; import org.ovirt.engine.core.common.job.StepEnum; import org.ovirt.engine.core.common.locks.LockingGroup; -import org.ovirt.engine.core.common.osinfo.OsRepositoryImpl; import org.ovirt.engine.core.common.utils.Pair; import org.ovirt.engine.core.compat.Guid; import org.ovirt.engine.core.compat.TransactionScopeOption; @@ -211,12 +209,6 @@ runVmParams.setSessionId(getParameters().getSessionId()); runVmParams.setParentParameters(getParameters()); runVmParams.setEntityInfo(new EntityInfo(VdcObjectType.VM, vmToAttach)); - // if reinitialize needed, select sysprep for windows and cloud-init for linux - // sysprep / cloud-init info will be taken from vm - runVmParams.setInitializationType(getParameters().isReinitialize() ? - OsRepositoryImpl.INSTANCE.isWindows(getVm().getVmOsId()) ? - InitializationType.Sysprep : InitializationType.CloudInit - : InitializationType.None); runVmParams.setParentCommand(VdcActionType.AttachUserToVmFromPoolAndRun); runVmParams.setRunAsStateless(true); ExecutionContext runVmContext = createRunVmContext(); diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java index e2e7c7b..388a938 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RunVmCommand.java @@ -41,6 +41,7 @@ import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.Entities; import org.ovirt.engine.core.common.businessentities.ImageFileType; +import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.Provider; import org.ovirt.engine.core.common.businessentities.RepoImage; import org.ovirt.engine.core.common.businessentities.Snapshot; @@ -617,7 +618,16 @@ // the VM can run with display type which is different from its default display type (getParameters().getUseVnc() ? DisplayType.vnc : DisplayType.qxl)); - getVm().setInitializationType(getParameters().getInitializationType()); + if (getParameters().getInitializationType() == null) { + // if vm not initialized, use sysprep/cloud-init + if (!getVm().isInitialized()) { + getVm().setInitializationType(OsRepositoryImpl.INSTANCE.isWindows(getVm().getVmOsId()) ? + InitializationType.Sysprep : + InitializationType.CloudInit); + } + } else { + getVm().setInitializationType(getParameters().getInitializationType()); + } // if we attach floppy we don't need the sysprep if (!StringUtils.isEmpty(getVm().getFloppyPath())) { diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java index 7e7c93b..daa67c0 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/RunVmParams.java @@ -21,7 +21,7 @@ private String privateClientIp; private VdcUser privateRequestingUser; private Guid _destinationVdsId; - private InitializationType privateInitializationType = InitializationType.None; + private InitializationType privateInitializationType; private Boolean privateRunAsStateless; private String initrd_url; private String kernel_url; diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmPoolUserParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmPoolUserParameters.java index 4efd16f..4735612 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmPoolUserParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VmPoolUserParameters.java @@ -34,14 +34,6 @@ privateIsInternal = value; } - public boolean isReinitialize() { - return reinitialize; - } - - public void setReinitialize(boolean reinitialize) { - this.reinitialize = reinitialize; - } - public VmPoolUserParameters() { } } diff --git a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java index a6faa20..72f019b 100644 --- a/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java +++ b/backend/manager/modules/restapi/jaxrs/src/main/java/org/ovirt/engine/api/restapi/resource/BackendVmResource.java @@ -47,17 +47,14 @@ import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VmManagementParametersBase; import org.ovirt.engine.core.common.action.VmOperationParameterBase; -import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.VDS; import org.ovirt.engine.core.common.businessentities.VDSGroup; import org.ovirt.engine.core.common.businessentities.VmStatic; import org.ovirt.engine.core.common.interfaces.SearchType; -import org.ovirt.engine.core.common.osinfo.OsRepository; import org.ovirt.engine.core.common.queries.GetPermissionsForObjectParameters; import org.ovirt.engine.core.common.queries.IdQueryParameters; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; -import org.ovirt.engine.core.common.utils.SimpleDependecyInjector; import org.ovirt.engine.core.compat.Guid; @@ -240,23 +237,7 @@ if (action.isSetPause() && action.isPause()) { params.setRunAndPause(true); } - return doAction(VdcActionType.RunVmOnce, setInitializationType(params), action); - } - - private VdcActionParametersBase setInitializationType(RunVmOnceParams params) { - //REVISE when BE supports default val. for RunVmOnceParams.privateReinitialize - org.ovirt.engine.core.common.businessentities.VM vm = getEntity(org.ovirt.engine.core.common.businessentities.VM.class, - VdcQueryType.GetVmByVmId, - new IdQueryParameters(guid), - "VM"); - if (SimpleDependecyInjector.getInstance().get(OsRepository.class).isWindows(vm.getVmOsId()) && vm.isFirstRun()) { - params.setInitializationType(InitializationType.Sysprep); - } else if (SimpleDependecyInjector.getInstance().get(OsRepository.class).isLinux(vm.getVmOsId()) && params.getCloudInitParameters() != null) { - params.setInitializationType(InitializationType.CloudInit); - } else { - params.setInitializationType(InitializationType.None); - } - return params; + return doAction(VdcActionType.RunVmOnce, params, action); } @Override diff --git a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java index 30a8be3..cf0d526 100644 --- a/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java +++ b/backend/manager/modules/restapi/jaxrs/src/test/java/org/ovirt/engine/api/restapi/resource/BackendVmResourceTest.java @@ -384,7 +384,7 @@ @Test public void testStart() throws Exception { - setUpWindowsGetEntityExpectations(2, false); + setUpWindowsGetEntityExpectations(1, false); setUriInfo(setUpActionExpectations(VdcActionType.RunVmOnce, RunVmOnceParams.class, new String[] { "VmId" }, @@ -397,7 +397,7 @@ @Test public void testStartWithPauseAndStateless() throws Exception { - setUpWindowsGetEntityExpectations(2, false); + setUpWindowsGetEntityExpectations(1, false); setUriInfo(setUpActionExpectations(VdcActionType.RunVmOnce, RunVmOnceParams.class, new String[] { "VmId", "RunAndPause", "RunAsStateless" }, @@ -413,7 +413,7 @@ @Test public void testStartWithVnc() throws Exception { - setUpWindowsGetEntityExpectations(2, false); + setUpWindowsGetEntityExpectations(1, false); setUriInfo(setUpActionExpectations(VdcActionType.RunVmOnce, RunVmOnceParams.class, new String[] { "VmId", "UseVnc" }, @@ -429,7 +429,7 @@ @Test public void testStartWithBootDev() throws Exception { - setUpWindowsGetEntityExpectations(2, false); + setUpWindowsGetEntityExpectations(1, false); setUriInfo(setUpActionExpectations(VdcActionType.RunVmOnce, RunVmOnceParams.class, new String[] { "VmId", "BootSequence" }, @@ -446,7 +446,7 @@ @Test public void testStartWithCdRomAndFloppy() throws Exception { - setUpWindowsGetEntityExpectations(2, false); + setUpWindowsGetEntityExpectations(1, false); setUriInfo(setUpActionExpectations(VdcActionType.RunVmOnce, RunVmOnceParams.class, new String[] { "VmId", "DiskPath", "FloppyPath" }, @@ -485,7 +485,7 @@ } protected void testStartWithHost(Host host, Guid hostId) throws Exception { - setUpWindowsGetEntityExpectations(2, false); + setUpWindowsGetEntityExpectations(1, false); setUriInfo(setUpActionExpectations(VdcActionType.RunVmOnce, RunVmOnceParams.class, new String[] { "VmId", "DestinationVdsId" }, diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/PoolItemBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/PoolItemBehavior.java index 9800fc4..4a41b8f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/PoolItemBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/PoolItemBehavior.java @@ -16,7 +16,6 @@ import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.uicommonweb.UICommand; -import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventArgs; import org.ovirt.engine.ui.uicompat.FrontendActionAsyncResult; @@ -69,8 +68,6 @@ VmPoolUserParameters params = new VmPoolUserParameters(entity.getVmPoolId(), Frontend.getLoggedInUser(), false); - - params.setReinitialize(!getItem().isInitialized() && AsyncDataProvider.isWindowsOsType(getItem().getOsId())); Frontend.RunAction(VdcActionType.AttachUserToVmFromPoolAndRun, params, new IFrontendActionAsyncCallback() { diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/VmItemBehavior.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/VmItemBehavior.java index 23b0507..5323c6f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/VmItemBehavior.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/userportal/VmItemBehavior.java @@ -10,7 +10,6 @@ import org.ovirt.engine.core.common.action.StopVmTypeEnum; import org.ovirt.engine.core.common.action.VdcActionType; import org.ovirt.engine.core.common.action.VmOperationParameterBase; -import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.VM; import org.ovirt.engine.core.common.businessentities.VmPool; import org.ovirt.engine.core.common.businessentities.VmPoolType; @@ -136,16 +135,8 @@ private void run() { VM entity = (VM) getItem().getEntity(); - // use sysprep iff the vm is not initialized and vm has Win OS - RunVmParams tempVar = new RunVmParams(entity.getId()); - if (!entity.isInitialized() && AsyncDataProvider.isWindowsOsType(entity.getVmOsId())) { - tempVar.setInitializationType(InitializationType.Sysprep); - } else if (!entity.isInitialized() && AsyncDataProvider.isLinuxOsType(entity.getVmOsId())) { - tempVar.setInitializationType(InitializationType.CloudInit); - } else { - tempVar.setInitializationType(InitializationType.None); - } - Frontend.RunAction(VdcActionType.RunVm, tempVar); + + Frontend.RunAction(VdcActionType.RunVm, new RunVmParams(entity.getId())); } private void updateProperties() diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java index 2d43a49..0e8a7af 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/SpiceConsoleModel.java @@ -15,7 +15,6 @@ import org.ovirt.engine.core.common.action.VmOperationParameterBase; import org.ovirt.engine.core.common.businessentities.DisplayType; import org.ovirt.engine.core.common.businessentities.ImageFileType; -import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.RepoImage; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.UsbPolicy; @@ -208,13 +207,6 @@ // use sysprep iff the vm is not initialized and vm has Win OS RunVmParams tempVar = new RunVmParams(getEntity().getId()); tempVar.setRunAsStateless(getEntity().isStateless()); - if (!getEntity().isInitialized() && AsyncDataProvider.isWindowsOsType(getEntity().getVmOsId())) { - tempVar.setInitializationType(InitializationType.Sysprep); - } else if (!getEntity().isInitialized() && AsyncDataProvider.isLinuxOsType(getEntity().getVmOsId())) { - tempVar.setInitializationType(InitializationType.CloudInit); - } else { - tempVar.setInitializationType(InitializationType.None); - } Frontend.RunMultipleAction(VdcActionType.RunVm, new ArrayList<VdcActionParametersBase>(Arrays.asList(new VdcActionParametersBase[] { tempVar }))); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java index 65cd92a..31511a1 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java @@ -31,7 +31,6 @@ import org.ovirt.engine.core.common.businessentities.Disk.DiskStorageType; import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.DisplayType; -import org.ovirt.engine.core.common.businessentities.InitializationType; import org.ovirt.engine.core.common.businessentities.MigrationSupport; import org.ovirt.engine.core.common.businessentities.Quota; import org.ovirt.engine.core.common.businessentities.StorageDomain; @@ -1740,18 +1739,7 @@ for (Object item : getSelectedItems()) { VM a = (VM) item; - // use sysprep iff the vm is not initialized and vm has Win OS - RunVmParams tempVar = new RunVmParams(a.getId()); - if (!a.isInitialized() && AsyncDataProvider.isWindowsOsType(a.getVmOsId())) { - tempVar.setInitializationType(InitializationType.Sysprep); - } - else if (!a.isInitialized() && AsyncDataProvider.isLinuxOsType(a.getVmOsId())) { - tempVar.setInitializationType(InitializationType.CloudInit); - } - else { - tempVar.setInitializationType(InitializationType.None); - } - list.add(tempVar); + list.add(new RunVmParams(a.getId())); } Frontend.RunMultipleAction(VdcActionType.RunVm, list, -- To view, visit http://gerrit.ovirt.org/17626 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I2ff258809c7fedcb7336f4e37be9bc53f2678824 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Omer Frenkel <ofren...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches