Daniel Erez has uploaded a new change for review.

Change subject: core: fix update VmDevices when VM is down
......................................................................

core: fix update VmDevices when VM is down

Updating VmDevices when the VM isn't running,
mistakenly leads to next run snapshot creation.

Therefore, modified 'VmHandler -> isUpdateValidForVmDevices':
the function should check whether updating is valid according
to the status of the VM; hence, VmStatus should be specified
(so it could be validated properly on
'getVmDevicesFieldsToUpdateOnNextRun -> isUpdateValidForVmDevice').

Change-Id: Ia7a8f2a4c3f41b18a7c02ca162b01ee352e49bcf
Signed-off-by: Daniel Erez <de...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
4 files changed, 8 insertions(+), 7 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/99/30499/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java
index 7523604..5c2982d 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetVmUpdatesOnNextRunExistsQuery.java
@@ -35,6 +35,6 @@
                 dstVm.getVdsGroupCompatibilityVersion(), dstStatic);
 
         setReturnValue(!VmHandler.isUpdateValid(srcStatic, dstStatic, 
VMStatus.Up) ||
-                !VmHandler.isUpdateValidForVmDevices(srcVm.getId(), 
getParameters().getUpdateVmParameters()));
+                !VmHandler.isUpdateValidForVmDevices(srcVm.getId(), 
VMStatus.Up, getParameters().getUpdateVmParameters()));
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
index 0ca34ec..b244906 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/UpdateVmCommand.java
@@ -592,7 +592,7 @@
                 !VmHandler.isUpdateValid(getVm().getStaticData(),
                         getParameters().getVmStaticData(),
                         getVm().getStatus()) ||
-                !VmHandler.isUpdateValidForVmDevices(getVmId(), 
getParameters());
+                !VmHandler.isUpdateValidForVmDevices(getVmId(), 
getVm().getStatus(), getParameters());
     }
 
     @Override
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
index d560ad7..5d0bca5 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VmHandler.java
@@ -753,14 +753,15 @@
         }
     }
 
-    public static boolean isUpdateValidForVmDevices(Guid vmId, Object 
objectWithEditableDeviceFields) {
+    public static boolean isUpdateValidForVmDevices(Guid vmId, VMStatus 
vmStatus, Object objectWithEditableDeviceFields) {
         if (objectWithEditableDeviceFields == null) {
             return true;
         }
-        return getVmDevicesFieldsToUpdateOnNextRun(vmId, 
objectWithEditableDeviceFields).isEmpty();
+        return getVmDevicesFieldsToUpdateOnNextRun(vmId, vmStatus, 
objectWithEditableDeviceFields).isEmpty();
     }
 
-    public static List<Pair<EditableDeviceOnVmStatusField, Boolean>> 
getVmDevicesFieldsToUpdateOnNextRun(Guid vmId, Object 
objectWithEditableDeviceFields) {
+    public static List<Pair<EditableDeviceOnVmStatusField, Boolean>> 
getVmDevicesFieldsToUpdateOnNextRun(
+            Guid vmId, VMStatus vmStatus, Object 
objectWithEditableDeviceFields) {
         List<Pair<EditableDeviceOnVmStatusField, Boolean>> fieldList = new 
ArrayList<>();
 
         List<Pair<EditableDeviceOnVmStatusField , Field>> pairList = 
BaseHandler.extractAnnotatedFields(
@@ -785,7 +786,7 @@
                 continue;
             }
 
-            if (!VmHandler.isUpdateValidForVmDevice(field.getName(), 
VMStatus.Up)) {
+            if (!VmHandler.isUpdateValidForVmDevice(field.getName(), 
vmStatus)) {
                 fieldList.add(new Pair<>(annotation, isEnabled));
             }
         }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
index fe8eba7..0cb58ab 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java
@@ -1115,7 +1115,7 @@
         Map<Guid, VmDevice> vmManagedDeviceMap = vm.getManagedVmDeviceMap();
 
         List<Pair<EditableDeviceOnVmStatusField, Boolean>> fieldList =
-                VmHandler.getVmDevicesFieldsToUpdateOnNextRun(vm.getId(), 
objectWithEditableDeviceFields);
+                VmHandler.getVmDevicesFieldsToUpdateOnNextRun(vm.getId(), 
vm.getStatus(), objectWithEditableDeviceFields);
 
         // Add the enabled devices and remove the disabled ones
         for (Pair<EditableDeviceOnVmStatusField, Boolean> pair : fieldList) {


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

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

Reply via email to