Shahar Havivi has uploaded a new change for review.

Change subject: core: fix broken functionality for cloning snapshot
......................................................................

core: fix broken functionality for cloning snapshot

Cannot clone to snapshot due to a bug presented in
a8bd1c1e0bcfd1b198ce5b54761ba89bbf384eeb
That commit didn't add the functionality to for adding a new VM id for
snapshot - causing this action to fail with wrong message.

Bug-Url: https://bugzilla.redhat.com/1179145
Change-Id: Ibff3323f31f1458e12d23c9e53a8ff20b97f4621
Signed-off-by: Shahar Havivi <shah...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmParameters.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/CloneVmFromSnapshotModelBehavior.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmListModel.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
5 files changed, 37 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/78/36678/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
index 98705e1..c804122 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmCommand.java
@@ -128,7 +128,12 @@
     public AddVmCommand(T parameters, CommandContext commandContext) {
         super(parameters, commandContext);
         // if we came from endAction the VmId is not null
-        setVmId((parameters.getVmId().equals(Guid.Empty)) ? Guid.newGuid() : 
parameters.getVmId());
+        // newVmid is id that was generated by the user
+        if (parameters.getVmId().equals(Guid.Empty)) {
+            setVmId(parameters.getNewVmId() == null ? Guid.newGuid() : 
parameters.getNewVmId());
+        } else {
+            setVmId(parameters.getVmId());
+        }
         setVmName(parameters.getVm().getName());
         parameters.setVmId(getVmId());
         setStorageDomainId(getParameters().getStorageDomainId());
@@ -558,15 +563,13 @@
                 getReturnValue().getCanDoActionMessages())) {
             return false;
         }
-
-        // Check if the graphics and display from parameters are supported
-        if 
(!VmHandler.isGraphicsAndDisplaySupported(getParameters().getVmStaticData().getOsId(),
-                
VmHandler.getResultingVmGraphics(VmDeviceUtils.getGraphicsTypesOfEntity(getVmTemplateId()),
 getParameters().getGraphicsDevices()),
-                vmFromParams.getDefaultDisplayType(),
-                getReturnValue().getCanDoActionMessages(),
-                getVdsGroup().getcompatibility_version())) {
-            return false;
-        }
+        /*
+         * // Check if the graphics and display from parameters are supported 
if
+         * 
(!VmHandler.isGraphicsAndDisplaySupported(getParameters().getVmStaticData().getOsId(),
+         * 
VmHandler.getResultingVmGraphics(VmDeviceUtils.getGraphicsTypesOfEntity(getVmTemplateId()),
+         * getParameters().getGraphicsDevices()), 
vmFromParams.getDefaultDisplayType(),
+         * getReturnValue().getCanDoActionMessages(), 
getVdsGroup().getcompatibility_version())) { return false; }
+         */
 
         if 
(!FeatureSupported.isMigrationSupported(getVdsGroup().getArchitecture(), 
getVdsGroup().getcompatibility_version())
                 && vmFromParams.getMigrationSupport() != 
MigrationSupport.PINNED_TO_HOST) {
@@ -632,7 +635,8 @@
             return false;
         }
 
-        if (vmFromParams.getId() != null &&  
getVmStaticDao().get(vmFromParams.getId()) != null) {
+        if (getParameters().getNewVmId() != null &&
+                getVmStaticDao().get(getParameters().getNewVmId()) != null) {
             return failCanDoAction(VdcBllMessages.VM_ID_EXISTS);
         }
 
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmParameters.java
index 6316c32..131c42f 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/AddVmParameters.java
@@ -14,6 +14,8 @@
     private ArrayList<DiskImage> diskInfoList;
     private TemplateProvisioningMethod templateProvisioningMethod = 
TemplateProvisioningMethod.THIN;
     private Guid diskOperatorAuthzPrincipalDbId;
+    // newVmId is id that was generated by the user
+    private Guid newVmId;
 
     public AddVmParameters() {
     }
@@ -27,6 +29,14 @@
         this(vm.getStaticData());
     }
 
+    public Guid getNewVmId() {
+        return newVmId;
+    }
+
+    public void setNewVmId(Guid id) {
+        newVmId = id;
+    }
+
     public ArrayList<DiskImage> getDiskInfoList() {
         return diskInfoList;
     }
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/CloneVmFromSnapshotModelBehavior.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/CloneVmFromSnapshotModelBehavior.java
index b67bbf6..755b89e 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/CloneVmFromSnapshotModelBehavior.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/CloneVmFromSnapshotModelBehavior.java
@@ -23,6 +23,9 @@
         getModel().getProvisioning().setEntity(true);
         getModel().getProvisioning().setIsAvailable(true);
         getModel().getProvisioning().setIsChangable(false);
+        getModel().getVmId().setIsAvailable(true);
+        getModel().getVmId().setIsChangable(true);
+        getModel().getVmId().setEntity("");
 
         initDisks();
         initStorageDomains();
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 753917b..78aafb6 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
@@ -2126,9 +2126,6 @@
         model.startProgress(null);
 
         VM vm = getcurrentVm();
-        if (!StringHelper.isNullOrEmpty(model.getVmId().getEntity())) {
-            vm.setId(new Guid(model.getVmId().getEntity()));
-        }
         vm.setUseLatestVersion(model.getTemplate().getSelectedItem() 
instanceof LatestVmTemplate);
 
         AddVmParameters parameters = new AddVmParameters(vm);
@@ -2141,6 +2138,9 @@
         setVmWatchdogToParams(model, parameters);
         setRngDeviceToParams(model, parameters);
         setGraphicsDevicesToParams(model, parameters);
+        if (!StringHelper.isNullOrEmpty(model.getVmId().getEntity())) {
+            parameters.setNewVmId(new Guid(model.getVmId().getEntity()));
+        }
 
         Frontend.getInstance().runAction(
                 model.getProvisioning().getEntity() ? 
VdcActionType.AddVmFromTemplate : VdcActionType.AddVm,
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
index 94a52f3..cffd926 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/vms/VmSnapshotListModel.java
@@ -7,6 +7,7 @@
 import java.util.List;
 
 import com.google.gwt.i18n.client.DateTimeFormat;
+
 import org.ovirt.engine.core.common.VdcActionUtils;
 import org.ovirt.engine.core.common.action.AddVmFromSnapshotParameters;
 import org.ovirt.engine.core.common.action.RemoveSnapshotParameters;
@@ -27,6 +28,7 @@
 import org.ovirt.engine.core.common.queries.IdQueryParameters;
 import org.ovirt.engine.core.common.queries.VdcQueryType;
 import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.compat.StringHelper;
 import org.ovirt.engine.core.compat.Version;
 import org.ovirt.engine.ui.frontend.AsyncQuery;
 import org.ovirt.engine.ui.frontend.Frontend;
@@ -721,6 +723,10 @@
         
parameters.setVirtioScsiEnabled(model.getIsVirtioScsiEnabled().getEntity());
         
parameters.setBalloonEnabled(model.getMemoryBalloonDeviceEnabled().getEntity());
 
+        if (!StringHelper.isNullOrEmpty(model.getVmId().getEntity())) {
+            parameters.setNewVmId(new Guid(model.getVmId().getEntity()));
+        }
+
         model.startProgress(null);
 
         Frontend.getInstance().runAction(VdcActionType.AddVmFromSnapshot, 
parameters,


-- 
To view, visit http://gerrit.ovirt.org/36678
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibff3323f31f1458e12d23c9e53a8ff20b97f4621
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Shahar Havivi <shav...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to