Daniel Erez has uploaded a new change for review. Change subject: core: RemoveDiskSnapshots - sort non-consecutive images ......................................................................
core: RemoveDiskSnapshots - sort non-consecutive images RemoveDiskSnapshots -> initTaskHandlers: fix images sorting in case of non consecutive images (e.g. image_index_0, image_index_3, image_index_7). Change-Id: Ia736aa93a76dd8df13bfdcf97587cee82bea6700 Bug-Url: https://bugzilla.redhat.com/1151841 Signed-off-by: Daniel Erez <de...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommandTest.java 2 files changed, 36 insertions(+), 2 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/80/34380/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommand.java index 40346c1..fd27f18 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommand.java @@ -6,6 +6,8 @@ import java.util.List; import java.util.Map; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.Predicate; import org.apache.commons.lang.StringUtils; import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; import org.ovirt.engine.core.bll.storage.StoragePoolValidator; @@ -96,6 +98,13 @@ return images; } + /** + * Returns the images chain of the disk. + */ + protected List<DiskImage> getAllImages() { + return getDiskImageDao().getAllSnapshotsForImageGroup(getImageGroupId()); + } + protected SnapshotsValidator getSnapshotsValidator() { if (snapshotsValidator == null) { snapshotsValidator = new SnapshotsValidator(); @@ -170,8 +179,16 @@ // Sort images from parent to leaf (active) - needed only on first task handler // as the sorted list is being saved in the parameters. if (isFirstTaskHandler()) { - ImagesHandler.sortImageList(getImages()); - getParameters().setImageIds(new ArrayList<>(ImagesHandler.getDiskImageIds(getImages()))); + // Retrieve and sort the entire chain of images + ImagesHandler.sortImageList(getAllImages()); + // Get a sorted list of the selected images + CollectionUtils.filter(images, new Predicate() { + @Override + public boolean evaluate(Object image) { + return getImages().contains(image); + } + }); + getParameters().setImageIds(new ArrayList<>(ImagesHandler.getDiskImageIds(images))); } for (Guid imageId : getParameters().getImageIds()) { diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommandTest.java index 579ffb0..dad1e33 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommandTest.java @@ -77,6 +77,7 @@ private static final Guid STORAGE_POOLD_ID = Guid.newGuid(); private static final Guid IMAGE_ID_1 = Guid.newGuid(); private static final Guid IMAGE_ID_2 = Guid.newGuid(); + private static final Guid IMAGE_ID_3 = Guid.newGuid(); @Before public void setUp() { @@ -88,6 +89,10 @@ cmd = spy(new RemoveDiskSnapshotsCommand<RemoveDiskSnapshotsParameters>(params) { protected List<DiskImage> getImages() { return mockImages(); + } + + protected List<DiskImage> getAllImages() { + return mockAllImages(); } }); @@ -149,6 +154,18 @@ return new ArrayList<>(Arrays.asList(image1, image2)); } + private List<DiskImage> mockAllImages() { + List<DiskImage> images = mockImages(); + + DiskImage image3 = new DiskImage(); + image3.setImageId(IMAGE_ID_3); + image3.setStorageIds(new ArrayList<>(Arrays.asList(STORAGE_DOMAIN_ID))); + + images.add(image3); + + return images; + } + @Test public void testCanDoActionVmUp() { prepareForVmValidatorTests(); -- To view, visit http://gerrit.ovirt.org/34380 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ia736aa93a76dd8df13bfdcf97587cee82bea6700 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