Maor Lipchuk has uploaded a new change for review.

Change subject: core[WIP]: Add support to remove vm with images
......................................................................

core[WIP]: Add support to remove vm with images

Change-Id: Ib7811c48165ce1cadacba1d038c5e5a3f64effd5
WIP: Adding support when removing VM and remove its Cinder disks.
Signed-off-by: Maor Lipchuk <[email protected]>
---
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/RemoveAllVmImagesCommand.java
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
3 files changed, 24 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/02/36602/1

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 cd69051..749703b 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
@@ -529,7 +529,9 @@
     public static Set<Guid> getAllStorageIdsForImageIds(Collection<DiskImage> 
images) {
         Set<Guid> domainsIds = new HashSet<Guid>();
         for (DiskImage image : images) {
-            domainsIds.addAll(image.getStorageIds());
+            if (image.getDiskStorageType() == DiskStorageType.IMAGE) {
+                domainsIds.addAll(image.getStorageIds());
+            }
         }
         return domainsIds;
     }
@@ -564,7 +566,7 @@
                                                    boolean 
allowOnlyActiveDisks) {
         List<DiskImage> diskImages = new ArrayList<DiskImage>();
         for (Disk disk : listOfDisks) {
-            if (disk.getDiskStorageType() == DiskStorageType.IMAGE &&
+            if (disk.getDiskStorageType() != DiskStorageType.LUN &&
                     (!allowOnlyNotShareableDisks || !disk.isShareable()) &&
                     (!allowOnlySnapableDisks || disk.isAllowSnapshot()) &&
                     (!allowOnlyActiveDisks || 
Boolean.TRUE.equals(((DiskImage)disk).getActive()))) {
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmImagesCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmImagesCommand.java
index ad20141..0f7b508 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmImagesCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmImagesCommand.java
@@ -7,10 +7,13 @@
 import java.util.Set;
 
 import org.ovirt.engine.core.bll.context.CommandContext;
+import org.ovirt.engine.core.bll.tasks.CommandCoordinatorUtil;
 import org.ovirt.engine.core.common.action.RemoveAllVmImagesParameters;
+import org.ovirt.engine.core.common.action.RemoveDiskParameters;
 import org.ovirt.engine.core.common.action.RemoveImageParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.businessentities.Disk;
 import org.ovirt.engine.core.common.businessentities.DiskImage;
 import org.ovirt.engine.core.common.businessentities.ImageStatus;
 import org.ovirt.engine.core.common.businessentities.StorageDomain;
@@ -53,6 +56,13 @@
         Collection<DiskImage> failedRemoving = new LinkedList<>();
         for (final DiskImage image : images) {
             if (mImagesToBeRemoved.contains(image.getImageId())) {
+                if (image.getDiskStorageType() == Disk.DiskStorageType.CINDER) 
{
+                    CommandCoordinatorUtil.executeAsyncCommand(
+                            VdcActionType.RemoveCinderDisk,
+                            buildRemoveCinderDiskParameters(image),
+                            cloneContextAndDetachFromParent());
+                    continue;
+                }
                 VdcReturnValueBase vdcReturnValue =
                         runInternalActionWithTasksContext(
                                 VdcActionType.RemoveImage,
@@ -104,6 +114,15 @@
         return result;
     }
 
+    private RemoveDiskParameters buildRemoveCinderDiskParameters(DiskImage 
image) {
+        RemoveDiskParameters result = new 
RemoveDiskParameters(image.getImageId());
+        result.setParentCommand(getParameters().getParentCommand());
+        result.setParentParameters(getParameters().getParentParameters());
+        result.setEntityInfo(getParameters().getEntityInfo());
+        result.setForceDelete(getParameters().getForceDelete());
+        return result;
+    }
+
     /**
      * Update all disks images of specific disk image to illegal state, and 
set the vm snapshot id to null, since now
      * they are not connected to any VM.
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
index 67bf71c..e1bad38 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DiskDaoDbFacadeImpl.java
@@ -228,6 +228,7 @@
             entity.setStoragePath(split(rs.getString("storage_path")));
             entity.setBoot(rs.getBoolean("boot"));
             entity.setCinderVolumeType(rs.getString("cinder_volume_type"));
+            entity.setActive(Boolean.TRUE.equals(rs.getObject("active")));
         }
 
         @Override


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

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

Reply via email to