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

Reply via email to