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
