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
