Daniel Erez has uploaded a new change for review.

Change subject: core: extract PrepareSnapshotConfig method to ImagesHandler
......................................................................

core: extract PrepareSnapshotConfig method to ImagesHandler

Extracted PrepareSnapshotConfigWithoutImageSingleImage
from BaseImagesCommand into ImagesHandler for reusability
in other commands.

Change-Id: I8c5e8d2763df3bcf18fb13a030148de352f57846
Bug-Url: https://bugzilla.redhat.com/1056935
Signed-off-by: Daniel Erez <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveDiskSnapshotsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java
M 
backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java
5 files changed, 55 insertions(+), 50 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/10/27610/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java
index fa61bd5..089f282 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/BaseImagesCommand.java
@@ -1,9 +1,7 @@
 package org.ovirt.engine.core.bll;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 
@@ -11,17 +9,14 @@
 import org.ovirt.engine.core.bll.context.CompensationContext;
 import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator;
 import org.ovirt.engine.core.bll.storage.StorageDomainCommandBase;
-import org.ovirt.engine.core.bll.utils.ClusterUtils;
 import org.ovirt.engine.core.common.action.ImagesActionsParametersBase;
 import org.ovirt.engine.core.common.action.ImagesContainterParametersBase;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.DiskImageDynamic;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
-import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType;
 import org.ovirt.engine.core.common.businessentities.VM;
 import org.ovirt.engine.core.common.businessentities.image_storage_domain_map;
-import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
 import org.ovirt.engine.core.common.locks.LockingGroup;
@@ -36,8 +31,6 @@
 import org.ovirt.engine.core.dao.ImageDao;
 import org.ovirt.engine.core.dao.SnapshotDao;
 import org.ovirt.engine.core.utils.lock.EngineLock;
-import org.ovirt.engine.core.utils.ovf.OvfManager;
-import org.ovirt.engine.core.utils.ovf.OvfReaderException;
 
 /**
  * Base class for all image handling commands
@@ -413,44 +406,5 @@
                         
LockMessagesMatchUtil.makeLockingPair(LockingGroup.VM_SNAPSHOTS, 
VdcBllMessages.ACTION_TYPE_FAILED_OBJECT_LOCKED));
         snapshotsEngineLock.setExclusiveLocks(snapshotsExlusiveLockMap);
         getLockManager().acquireLockWait(snapshotsEngineLock);
-    }
-
-    /**
-     * Prepare a single {@link 
org.ovirt.engine.core.common.businessentities.Snapshot} object representing a 
snapshot of a given VM without the give disk.
-     */
-    protected Snapshot prepareSnapshotConfigWithoutImageSingleImage(Guid 
vmSnapshotId, Guid imageId) {
-        Snapshot snap = null;
-        try {
-            OvfManager ovfManager = new OvfManager();
-            snap = getSnapshotDao().get(vmSnapshotId);
-            String snapConfig = snap.getVmConfiguration();
-
-            if (snap.isVmConfigurationAvailable() && snapConfig != null) {
-                VM vmSnapshot = new VM();
-                ArrayList<DiskImage> snapshotImages = new 
ArrayList<DiskImage>();
-
-                ovfManager.ImportVm(snapConfig,
-                        vmSnapshot,
-                        snapshotImages,
-                        new ArrayList<VmNetworkInterface>());
-
-                // Remove the image form the disk list
-                Iterator<DiskImage> diskIter = snapshotImages.iterator();
-                while (diskIter.hasNext()) {
-                    DiskImage imageInList = diskIter.next();
-                    if (imageInList.getImageId().equals(imageId)) {
-                        log.debugFormat("Recreating vmSnapshot {0} without the 
image {1}", vmSnapshotId, imageId);
-                        diskIter.remove();
-                        break;
-                    }
-                }
-
-                String newOvf = ovfManager.ExportVm(vmSnapshot, 
snapshotImages, ClusterUtils.getCompatibilityVersion(vmSnapshot));
-                snap.setVmConfiguration(newOvf);
-            }
-        } catch (OvfReaderException e) {
-            log.errorFormat("Can't remove image {0} from snapshot {1}", 
imageId, vmSnapshotId);
-        }
-        return snap;
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
index db2f0fe..f110eff 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImagesHandler.java
@@ -6,6 +6,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -13,6 +14,7 @@
 import org.apache.commons.lang.StringUtils;
 import org.ovirt.engine.core.bll.context.CompensationContext;
 import org.ovirt.engine.core.bll.storage.StorageHelperDirector;
+import org.ovirt.engine.core.bll.utils.ClusterUtils;
 import org.ovirt.engine.core.bll.utils.VmDeviceUtils;
 import org.ovirt.engine.core.bll.validator.StorageDomainValidator;
 import org.ovirt.engine.core.common.businessentities.BaseDisk;
@@ -25,6 +27,7 @@
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.businessentities.LUNs;
 import org.ovirt.engine.core.common.businessentities.LunDisk;
+import org.ovirt.engine.core.common.businessentities.Snapshot;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatic;
 import org.ovirt.engine.core.common.businessentities.StorageDomainStatus;
@@ -37,6 +40,7 @@
 import org.ovirt.engine.core.common.businessentities.VolumeFormat;
 import org.ovirt.engine.core.common.businessentities.VolumeType;
 import org.ovirt.engine.core.common.businessentities.image_storage_domain_map;
+import 
org.ovirt.engine.core.common.businessentities.network.VmNetworkInterface;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
 import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import org.ovirt.engine.core.common.errors.VdcBllMessages;
@@ -50,6 +54,8 @@
 import org.ovirt.engine.core.utils.collections.MultiValueMapUtils;
 import org.ovirt.engine.core.utils.log.Log;
 import org.ovirt.engine.core.utils.log.LogFactory;
+import org.ovirt.engine.core.utils.ovf.OvfManager;
+import org.ovirt.engine.core.utils.ovf.OvfReaderException;
 import org.ovirt.engine.core.utils.transaction.TransactionMethod;
 import org.ovirt.engine.core.utils.transaction.TransactionSupport;
 
@@ -766,4 +772,49 @@
         }
         return intersection;
     }
+
+    public static Snapshot prepareSnapshotConfigWithoutImageSingleImage(Guid 
vmSnapshotId, Guid imageId) {
+        Snapshot snapshot = 
DbFacade.getInstance().getSnapshotDao().get(vmSnapshotId);
+        if (snapshot == null) {
+            log.errorFormat("Can't remove image {0} from snapshot {1}", 
imageId, vmSnapshotId);
+        }
+        return prepareSnapshotConfigWithoutImageSingleImage(snapshot, imageId);
+    }
+
+    /**
+     * Prepare a single {@link 
org.ovirt.engine.core.common.businessentities.Snapshot} object representing a 
snapshot of a given VM without the give disk.
+     */
+    public static Snapshot 
prepareSnapshotConfigWithoutImageSingleImage(Snapshot snapshot, Guid imageId) {
+        try {
+            OvfManager ovfManager = new OvfManager();
+            String snapConfig = snapshot.getVmConfiguration();
+
+            if (snapshot.isVmConfigurationAvailable() && snapConfig != null) {
+                VM vmSnapshot = new VM();
+                ArrayList<DiskImage> snapshotImages = new 
ArrayList<DiskImage>();
+
+                ovfManager.ImportVm(snapConfig,
+                        vmSnapshot,
+                        snapshotImages,
+                        new ArrayList<VmNetworkInterface>());
+
+                // Remove the image form the disk list
+                Iterator<DiskImage> diskIter = snapshotImages.iterator();
+                while (diskIter.hasNext()) {
+                    DiskImage imageInList = diskIter.next();
+                    if (imageInList.getImageId().equals(imageId)) {
+                        log.debugFormat("Recreating vmSnapshot {0} without the 
image {1}", snapshot.getId(), imageId);
+                        diskIter.remove();
+                        break;
+                    }
+                }
+
+                String newOvf = ovfManager.ExportVm(vmSnapshot, 
snapshotImages, ClusterUtils.getCompatibilityVersion(vmSnapshot));
+                snapshot.setVmConfiguration(newOvf);
+            }
+        } catch (OvfReaderException e) {
+            log.errorFormat("Can't remove image {0} from snapshot {1}", 
imageId, snapshot.getId());
+        }
+        return snapshot;
+    }
 }
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 3599d13..645cfef 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
@@ -171,7 +171,7 @@
 
     protected void updateSnapshotVmConfiguration() {
         Guid imageId = 
getParameters().getImageIds().get(getParameters().getExecutionIndex());
-        Snapshot snapshotWithoutImage = 
prepareSnapshotConfigWithoutImageSingleImage(getSnapshotId(), imageId);
+        Snapshot snapshotWithoutImage = 
ImagesHandler.prepareSnapshotConfigWithoutImageSingleImage(getSnapshotId(), 
imageId);
         getSnapshotDao().update(snapshotWithoutImage);
     }
 
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java
index 913fb8b..6bfc71c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveImageCommand.java
@@ -231,7 +231,7 @@
             Guid vmSnapshotId = snapshotDisk.getVmSnapshotId();
             if (vmSnapshotId != null && !Guid.Empty.equals(vmSnapshotId)) {
                 Snapshot updated =
-                        
prepareSnapshotConfigWithoutImageSingleImage(vmSnapshotId,
+                        
ImagesHandler.prepareSnapshotConfigWithoutImageSingleImage(vmSnapshotId,
                                 snapshotDisk.getImageId());
                 if (updated != null) {
                     result.add(updated);
diff --git 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java
 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java
index 39a543e..58b2986 100644
--- 
a/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java
+++ 
b/backend/manager/modules/bll/src/test/java/org/ovirt/engine/core/bll/RemoveImageCommandTest.java
@@ -112,7 +112,7 @@
         doReturn(disk2).when(cmd).getDiskImage();
         doReturn(disk2).when(cmd).getImage();
         doReturn(disk2.getId()).when(cmd).getImageId();
-        Snapshot actual = 
cmd.prepareSnapshotConfigWithoutImageSingleImage(vmSnapshotId, 
disk2.getImageId());
+        Snapshot actual = 
ImagesHandler.prepareSnapshotConfigWithoutImageSingleImage(snap, 
disk2.getImageId());
         String actualOvf = actual.getVmConfiguration();
 
         ArrayList<DiskImage> actualImages = new ArrayList<DiskImage>();
@@ -146,7 +146,7 @@
         doReturn(disk2).when(cmd).getDiskImage();
         doReturn(disk2).when(cmd).getImage();
         doReturn(disk2.getId()).when(cmd).getImageId();
-        Snapshot actual = 
cmd.prepareSnapshotConfigWithoutImageSingleImage(vmSnapshotId, 
disk2.getImageId());
+        Snapshot actual = 
ImagesHandler.prepareSnapshotConfigWithoutImageSingleImage(snap, 
disk2.getImageId());
         String actualOvf = actual.getVmConfiguration();
 
         ArrayList<DiskImage> actualImages = new ArrayList<DiskImage>();


-- 
To view, visit http://gerrit.ovirt.org/27610
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I8c5e8d2763df3bcf18fb13a030148de352f57846
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Daniel Erez <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to