Allon Mureinik has uploaded a new change for review. Change subject: core: ImprotVm: disk alias with copyCollapse=false ......................................................................
core: ImprotVm: disk alias with copyCollapse=false Added disk aliases in ImportVmCommand when copyCollapse=false. This patch contains the following: 1. The bug fix. 2. A test for the bug. 3. Some minor refactoring to extract blocks of ImportVmCommand DAO handling to methods, so they can be mocked out for the test mentioned in (2). Change-Id: I4f03699ece4d20f2d20beb791c3cb1518e39c4d1 Bug-Url: https://bugzilla.redhat.com/872506 Signed-off-by: Allon Mureinik <amure...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java M backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmCommandTest.java 2 files changed, 70 insertions(+), 22 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/9631/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java index c6b295d..671d048 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java @@ -654,39 +654,23 @@ disk.setactive(false); saveImage(disk); snapshotId = disk.getvm_snapshot_id().getValue(); - if (!getSnapshotDao().exists(getVm().getId(), snapshotId)) { - getSnapshotDao().save( - new Snapshot(snapshotId, - SnapshotStatus.OK, - getVm().getId(), - null, - SnapshotType.REGULAR, - disk.getdescription(), - disk.getlast_modified_date(), - disk.getappList())); - } - + saveSnapshot(snapshotId, disk); saveDiskImageDynamic(disk); } + int aliasCounter = 0; for (List<DiskImage> diskList : images.values()) { DiskImage disk = diskList.get(diskList.size() - 1); snapshotId = disk.getvm_snapshot_id().getValue(); disk.setactive(true); - getImageDao().update(disk.getImage()); + ++aliasCounter; + ImagesHandler.setDiskAlias(disk, getVm(), aliasCounter); + updateImage(disk); saveBaseDisk(disk); } // Update active snapshot's data, since it was inserted as a regular snapshot. - getSnapshotDao().update( - new Snapshot(snapshotId, - SnapshotStatus.OK, - getVm().getId(), - null, - SnapshotType.ACTIVE, - "Active VM snapshot", - new Date(), - null)); + updaetActiveSnapshot(snapshotId); } } @@ -698,6 +682,11 @@ /** Save the entire image, including it's storage mapping */ protected void saveImage(DiskImage disk) { BaseImagesCommand.saveImage(disk); + } + + /** Updates an image of a disk */ + protected void updateImage(DiskImage disk) { + getImageDao().update(disk.getImage()); } /** @@ -736,6 +725,41 @@ } } + /** + * Save a snapshot if it does not exist in the database. + * @param snapshotId The snapshot to save. + * @param disk The disk containing the snapshot's information. + */ + protected void saveSnapshot(Guid snapshotId, DiskImage disk) { + if (!getSnapshotDao().exists(getVm().getId(), snapshotId)) { + getSnapshotDao().save( + new Snapshot(snapshotId, + SnapshotStatus.OK, + getVm().getId(), + null, + SnapshotType.REGULAR, + disk.getdescription(), + disk.getlast_modified_date(), + disk.getappList())); + } + } + + /** + * Update a snapshot and make it the active snapshot. + * @param snapshotId The snapshot to update. + */ + protected void updaetActiveSnapshot(Guid snapshotId) { + getSnapshotDao().update( + new Snapshot(snapshotId, + SnapshotStatus.OK, + getVm().getId(), + null, + SnapshotType.ACTIVE, + "Active VM snapshot", + new Date(), + null)); + } + // the last image in each list is the leaf public static Map<Guid, List<DiskImage>> getImagesLeaf(List<DiskImage> images) { Map<Guid, List<DiskImage>> retVal = new HashMap<Guid, List<DiskImage>>(); diff --git a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmCommandTest.java b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmCommandTest.java index 05b0a43..b7771be 100644 --- a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmCommandTest.java +++ b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/ImportVmCommandTest.java @@ -4,6 +4,7 @@ import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; import static org.mockito.Matchers.any; +import static org.mockito.Matchers.eq; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.doReturn; import static org.mockito.Mockito.spy; @@ -96,12 +97,14 @@ baseImage.setId(imageGroupId); baseImage.setImageId(Guid.NewGuid()); baseImage.setSizeInGigabytes(1); + baseImage.setvm_snapshot_id(Guid.NewGuid()); baseImage.setactive(false); DiskImage activeImage = new DiskImage(); activeImage.setId(imageGroupId); activeImage.setImageId(Guid.NewGuid()); activeImage.setSizeInGigabytes(1); + activeImage.setvm_snapshot_id(Guid.NewGuid()); activeImage.setactive(true); activeImage.setParentId(baseImage.getImageId()); @@ -220,4 +223,25 @@ cmd.addVmImagesAndSnapshots(); assertEquals("Disk alias not generated", "testVm_Disk1", collapsedDisk.getDiskAlias()); } + + @Test + public void testAddVmImagesAndSnapshotsWithoutCollapse() { + ImportVmParameters params = createParameters(); + params.setCopyCollapse(false); + ImportVmCommand cmd = spy(new ImportVmCommand(params)); + + for (DiskImage image : params.getVm().getImages()) { + doNothing().when(cmd).saveImage(image); + doNothing().when(cmd).saveSnapshot(any(Guid.class), eq(image)); + doNothing().when(cmd).saveDiskImageDynamic(image); + } + DiskImage activeDisk = params.getVm().getImages().get(1); + + doNothing().when(cmd).updateImage(activeDisk); + doNothing().when(cmd).saveBaseDisk(activeDisk); + doNothing().when(cmd).updaetActiveSnapshot(any(Guid.class)); + + cmd.addVmImagesAndSnapshots(); + assertEquals("Disk alias not generated", "testVm_Disk1", activeDisk.getDiskAlias()); + } } -- To view, visit http://gerrit.ovirt.org/9631 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I4f03699ece4d20f2d20beb791c3cb1518e39c4d1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Allon Mureinik <amure...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches