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

Reply via email to