Maor Lipchuk has uploaded a new change for review.

Change subject: core: Introduce remove Cinder snapshot command.
......................................................................

core: Introduce remove Cinder snapshot command.

Add new command for remove Cinder snapshot.

Change-Id: I7bccfc24dbddca3052ad794629a066406cbfec75
Bug-Url: https://bugzilla.redhat.com/1185826
Signed-off-by: Maor Lipchuk <[email protected]>
---
A 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveCinderSnapshotDiskCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
2 files changed, 79 insertions(+), 0 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/60/41460/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveCinderSnapshotDiskCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveCinderSnapshotDiskCommand.java
new file mode 100644
index 0000000..fb6ed5c
--- /dev/null
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveCinderSnapshotDiskCommand.java
@@ -0,0 +1,78 @@
+package org.ovirt.engine.core.bll;
+
+import org.ovirt.engine.core.bll.context.CommandContext;
+import org.ovirt.engine.core.bll.storage.RemoveCinderSnapshotCommandCallback;
+import org.ovirt.engine.core.bll.tasks.interfaces.CommandCallback;
+import org.ovirt.engine.core.common.action.ImagesContainterParametersBase;
+import org.ovirt.engine.core.common.businessentities.storage.DiskImage;
+import org.ovirt.engine.core.common.businessentities.storage.ImageStatus;
+import org.ovirt.engine.core.compat.Guid;
+import org.ovirt.engine.core.utils.transaction.TransactionMethod;
+import org.ovirt.engine.core.utils.transaction.TransactionSupport;
+
+@InternalCommandAttribute
+public class RemoveCinderSnapshotDiskCommand<T extends 
ImagesContainterParametersBase> extends BaseImagesCommand<T> {
+
+    public RemoveCinderSnapshotDiskCommand(T parameters) {
+        super(parameters);
+    }
+
+    public RemoveCinderSnapshotDiskCommand(T parameters, CommandContext 
cmdContext) {
+        super(parameters, cmdContext);
+    }
+
+    @Override
+    protected void executeCommand() {
+        deleteSnapshot();
+        persistCommand(getParameters().getParentCommand(), true);
+        getReturnValue().setActionReturnValue(getImageId());
+        setSucceeded(true);
+    }
+
+    private void deleteSnapshot() {
+        getCinderBroker().deleteSnapshot(getImageId());
+    }
+
+    public Guid getStorageDomainId() {
+        return getDiskImage().getStorageIds().get(0);
+    }
+
+    @Override
+    protected void endWithFailure() {
+        setSucceeded(true);
+    }
+
+    @Override
+    protected void endSuccessfully() {
+        getImageDao().remove(getImageId());
+        if (!getParameters().isParentHasTasks()) {
+            getBackend().endAction(getParameters().getParentCommand(),
+                    getParameters().getParentParameters(),
+                    
getContext().clone().withoutCompensationContext().withoutExecutionContext().withoutLock());
+        }
+        setSucceeded(true);
+    }
+
+    @Override
+    public void rollback() {
+        TransactionSupport.executeInNewTransaction(new 
TransactionMethod<Object>() {
+            @Override
+            public Object runInTransaction() {
+                if (!getParameters().isLeaveLocked()) {
+                    DiskImage diskImage = getImage();
+                    if (diskImage != null) {
+                        
getImageDao().updateStatus(diskImage.getImage().getId(), ImageStatus.OK);
+                    }
+                    unLockImage();
+                }
+                return null;
+            }
+        });
+    }
+
+    @Override
+    public CommandCallback getCallback() {
+        return new RemoveCinderSnapshotCommandCallback();
+    }
+
+}
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
index 8c65e30..af81a68 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/VdcActionType.java
@@ -452,6 +452,7 @@
     CloneCinderDisks(3205, ActionGroup.CONFIGURE_VM_STORAGE, 
QuotaDependency.STORAGE),
     RegisterCinderDisk(3206, ActionGroup.CONFIGURE_VM_STORAGE, false, 
QuotaDependency.NONE),
     CreateCinderSnapshot(3207, ActionGroup.CONFIGURE_VM_STORAGE, false, 
QuotaDependency.NONE),
+    RemoveCinderSnapshotDisk(3208, ActionGroup.CONFIGURE_VM_STORAGE, false, 
QuotaDependency.NONE),
 
     // Host Devices
     RefreshHostDevices(4000, ActionGroup.MANIPULATE_HOST, false, 
QuotaDependency.NONE),


-- 
To view, visit https://gerrit.ovirt.org/41460
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I7bccfc24dbddca3052ad794629a066406cbfec75
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