Omer Frenkel has uploaded a new change for review. Change subject: core: fix duplicate smartcards on template update ......................................................................
core: fix duplicate smartcards on template update When updating template, if smart card is enabled, a new device was created and there was no check for existing device. fixed to check if device already exist before add. also added a script to eliminate any existing duplicates. Change-Id: I14e6779c5c85b514cb953b771c68c5ac1acaafcb Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1101447 Signed-off-by: Omer Frenkel <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/utils/VmDeviceUtils.java A packaging/dbscripts/upgrade/03_04_790_remove_duplicate_smartcards.sql 2 files changed, 13 insertions(+), 7 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/87/28287/1 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 25bc3a8..5494fbc 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 @@ -106,17 +106,18 @@ } public static void updateSmartcardDevice(Guid vmId, boolean smartcardEnabled) { + List<VmDevice> vmDevices = + DbFacade.getInstance() + .getVmDeviceDao() + .getVmDeviceByVmIdTypeAndDevice(vmId, + VmDeviceGeneralType.SMARTCARD, + VmDeviceType.SMARTCARD.getName()); + if (!smartcardEnabled) { - List<VmDevice> vmDevices = - DbFacade.getInstance() - .getVmDeviceDao() - .getVmDeviceByVmIdTypeAndDevice(vmId, - VmDeviceGeneralType.SMARTCARD, - VmDeviceType.SMARTCARD.getName()); for (VmDevice device : vmDevices) { dao.remove(device.getId()); } - } else { + } else if (vmDevices.isEmpty()) { addSmartcardDevice(vmId); } } diff --git a/packaging/dbscripts/upgrade/03_04_790_remove_duplicate_smartcards.sql b/packaging/dbscripts/upgrade/03_04_790_remove_duplicate_smartcards.sql new file mode 100644 index 0000000..140719f --- /dev/null +++ b/packaging/dbscripts/upgrade/03_04_790_remove_duplicate_smartcards.sql @@ -0,0 +1,5 @@ +-- only one smartcard is supported, remove any duplicates caused by a bug +delete from vm_device a +where device='smartcard' + and device_id not in ( + select device_id from vm_device where vm_id=a.vm_id and device='smartcard' limit 1); -- To view, visit http://gerrit.ovirt.org/28287 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I14e6779c5c85b514cb953b771c68c5ac1acaafcb Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: ovirt-engine-3.4 Gerrit-Owner: Omer Frenkel <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
