Liron Ar has uploaded a new change for review. Change subject: core: revert when failing to export a template ......................................................................
core: revert when failing to export a template When failing to export a template, the engine can attempt to delete the already exported images. Change-Id: I8d80c5d15f7321f67d54e7593cb2da1fd7186a25 Bug-Url: https://bugzilla.redhat.com/967628 Signed-off-by: Liron Aravot <lara...@redhat.com> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CopyImageGroupCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmCommand.java M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java M backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java 6 files changed, 23 insertions(+), 10 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/81/15781/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java index 48fba43..920380ea 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/AddVmAndCloneImageCommand.java @@ -17,6 +17,7 @@ import org.ovirt.engine.core.common.businessentities.CopyVolumeType; import org.ovirt.engine.core.common.businessentities.Disk; import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.ImageDbOperationScope; import org.ovirt.engine.core.common.businessentities.ImageOperation; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.errors.VdcBLLException; @@ -60,6 +61,7 @@ srcStorageDomainId, diskImage.getId(), diskImage.getImageId(), parentCommandType); + parameters.setRevertDbOperationScope(ImageDbOperationScope.IMAGE); VdcReturnValueBase result = executeChildCopyingCommand(parameters); handleCopyResult(newDiskImage, parameters, result); } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CopyImageGroupCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CopyImageGroupCommand.java index 4f4ae9e..0d33f8d 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CopyImageGroupCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CopyImageGroupCommand.java @@ -183,19 +183,14 @@ @Override protected void revertTasks() { - // Revert should be performed only for AddVmFromSnapshot at this point. - if (getParameters().getParentCommand() == VdcActionType.AddVmFromSnapshot || getParameters().getParentCommand() == VdcActionType.ImportVm - || getParameters().getParentCommand() == VdcActionType.ImportVmTemplate) { + if (getParameters().getRevertDbOperationScope() != null) { Guid destImageId = getParameters().getDestinationImageId(); RemoveImageParameters removeImageParams = new RemoveImageParameters(destImageId); - if (getParameters().getParentCommand() == VdcActionType.AddVmFromSnapshot) { - removeImageParams.setParentParameters(getParameters()); - removeImageParams.setParentCommand(VdcActionType.CopyImageGroup); - } else { - removeImageParams.setParentParameters(removeImageParams); - removeImageParams.setParentCommand(VdcActionType.RemoveImage); - } + removeImageParams.setParentParameters(removeImageParams); + removeImageParams.setParentCommand(VdcActionType.RemoveImage); + removeImageParams.setStorageDomainId(getParameters().getStorageDomainId()); + removeImageParams.setDbOperationScope(getParameters().getRevertDbOperationScope()); removeImageParams.setEntityId(getDestinationImageId()); // Setting the image as the monitored entity, so there will not be dependency VdcReturnValueBase returnValue = diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java index 7bcc01a..58694eb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ExportVmTemplateCommand.java @@ -15,6 +15,7 @@ import org.ovirt.engine.core.common.action.VdcReturnValueBase; import org.ovirt.engine.core.common.businessentities.CopyVolumeType; import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.common.businessentities.ImageDbOperationScope; import org.ovirt.engine.core.common.businessentities.StorageDomainType; import org.ovirt.engine.core.common.errors.VdcBLLException; import org.ovirt.engine.core.common.errors.VdcBllMessages; @@ -64,6 +65,7 @@ p.setVolumeFormat(disk.getVolumeFormat()); p.setVolumeType(disk.getVolumeType()); p.setForceOverride(getParameters().getForceOverride()); + p.setRevertDbOperationScope(ImageDbOperationScope.NONE); p.setSourceDomainId(imageFromSourceDomainMap.get(disk.getId()).getStorageIds().get(0)); VdcReturnValueBase vdcRetValue = Backend.getInstance().runInternalAction( VdcActionType.CopyImageGroup, 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 c263fac..a10e477 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 @@ -37,6 +37,7 @@ import org.ovirt.engine.core.common.businessentities.DiskImageBase; import org.ovirt.engine.core.common.businessentities.DiskImageDynamic; import org.ovirt.engine.core.common.businessentities.Entities; +import org.ovirt.engine.core.common.businessentities.ImageDbOperationScope; import org.ovirt.engine.core.common.businessentities.Snapshot; import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotStatus; import org.ovirt.engine.core.common.businessentities.Snapshot.SnapshotType; @@ -585,6 +586,7 @@ p.setStoragePoolId(getParameters().getStoragePoolId()); p.setImportEntity(true); p.setEntityId(getVm().getId()); + p.setRevertDbOperationScope(ImageDbOperationScope.IMAGE); p.setQuotaId(disk.getQuotaId() != null ? disk.getQuotaId() : getParameters().getQuotaId()); if (getParameters().getVm().getDiskMap() != null && getParameters().getVm().getDiskMap().containsKey(diskGuidList.get(i))) { diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java index 61ef9c7..6b4e76a 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ImportVmTemplateCommand.java @@ -25,6 +25,7 @@ import org.ovirt.engine.core.common.businessentities.DiskImage; import org.ovirt.engine.core.common.businessentities.DiskImageDynamic; import org.ovirt.engine.core.common.businessentities.Entities; +import org.ovirt.engine.core.common.businessentities.ImageDbOperationScope; import org.ovirt.engine.core.common.businessentities.StorageDomain; import org.ovirt.engine.core.common.businessentities.StorageDomainStatic; import org.ovirt.engine.core.common.businessentities.StorageDomainType; @@ -301,6 +302,7 @@ tempVar.setForceOverride(getParameters().getForceOverride()); tempVar.setImportEntity(true); tempVar.setEntityId(containerID); + tempVar.setRevertDbOperationScope(ImageDbOperationScope.IMAGE); for (DiskImage diskImage : getParameters().getVmTemplate().getDiskList()) { if (diskGuidList.get(i).equals(diskImage.getId())) { tempVar.setQuotaId(diskImage.getQuotaId()); diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java index 039baf8..fdb0323 100644 --- a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/MoveOrCopyImageGroupParameters.java @@ -1,6 +1,7 @@ package org.ovirt.engine.core.common.action; import org.ovirt.engine.core.common.businessentities.CopyVolumeType; +import org.ovirt.engine.core.common.businessentities.ImageDbOperationScope; import org.ovirt.engine.core.common.businessentities.ImageOperation; import org.ovirt.engine.core.common.businessentities.VolumeFormat; import org.ovirt.engine.core.common.businessentities.VolumeType; @@ -18,6 +19,7 @@ private boolean forceOverride; private NGuid sourceDomainId; private Guid destImageGroupId; + ImageDbOperationScope revertDbOperationScope; public MoveOrCopyImageGroupParameters() { } @@ -128,4 +130,12 @@ public void setSourceDomainId(NGuid value) { sourceDomainId = value; } + + public ImageDbOperationScope getRevertDbOperationScope() { + return revertDbOperationScope; + } + + public void setRevertDbOperationScope(ImageDbOperationScope revertDbOperationScope) { + this.revertDbOperationScope = revertDbOperationScope; + } } -- To view, visit http://gerrit.ovirt.org/15781 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I8d80c5d15f7321f67d54e7593cb2da1fd7186a25 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Liron Ar <lara...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches