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