Maor Lipchuk has uploaded a new change for review. Change subject: core: Introduce remove Cinder snapshot call back ......................................................................
core: Introduce remove Cinder snapshot call back Add remove cinder snapshot call back. Change-Id: Iba139eacc85b958b7f6475d1dbb1680d0c44513c 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/storage/RemoveCinderSnapshotCommandCallback.java 1 file changed, 68 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/59/41459/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveCinderSnapshotCommandCallback.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveCinderSnapshotCommandCallback.java new file mode 100644 index 0000000..9437a05 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/storage/RemoveCinderSnapshotCommandCallback.java @@ -0,0 +1,68 @@ +package org.ovirt.engine.core.bll.storage; + +import java.util.List; + +import org.ovirt.engine.core.bll.RemoveCinderSnapshotDiskCommand; +import org.ovirt.engine.core.bll.tasks.CommandCoordinatorUtil; +import org.ovirt.engine.core.common.action.ImagesContainterParametersBase; +import org.ovirt.engine.core.common.businessentities.storage.CinderDisk; +import org.ovirt.engine.core.common.businessentities.storage.DiskImage; +import org.ovirt.engine.core.common.businessentities.storage.ImageStatus; +import org.ovirt.engine.core.compat.CommandStatus; +import org.ovirt.engine.core.compat.Guid; + +public class RemoveCinderSnapshotCommandCallback extends AbstractCinderDiskCommandCallback<RemoveCinderSnapshotDiskCommand<ImagesContainterParametersBase>> { + + @Override + public void doPolling(Guid cmdId, List<Guid> childCmdIds) { + super.doPolling(cmdId, childCmdIds); + CinderBroker cinderBroker = getCinderBroker(); + if (!cinderBroker.isSnapshotExist(getDiskId())) { + // Snapshot has been deleted successfully + getCommand().setCommandStatus(CommandStatus.SUCCEEDED); + return; + } + + ImageStatus imageStatus = cinderBroker.getSnapshotStatus(getDiskId()); + DiskImage disk = getDisk(); + if (imageStatus != null && imageStatus != disk.getImageStatus()) { + switch (imageStatus) { + case ILLEGAL: + getCommand().setCommandStatus(CommandStatus.FAILED); + break; + } + } + } + + @Override + public void onFailed(Guid cmdId, List<Guid> childCmdIds) { + super.onFailed(cmdId, childCmdIds); + getCommand().endAction(); + CommandCoordinatorUtil.removeAllCommandsInHierarchy(cmdId); + } + + @Override + public void onSucceeded(Guid cmdId, List<Guid> childCmdIds) { + super.onSucceeded(cmdId, childCmdIds); + getCommand().endAction(); + CommandCoordinatorUtil.removeAllCommandsInHierarchy(cmdId); + } + + @Override + protected Guid getDiskId() { + return getCommand().getParameters().getImageId(); + } + + @Override + protected CinderDisk getDisk() { + if (disk == null) { + disk = (CinderDisk) getCommand().getDiskDao().get(getDiskId()); + } + return disk; + } + + @Override + protected CinderBroker getCinderBroker() { + return getCommand().getCinderBroker(); + } +} -- To view, visit https://gerrit.ovirt.org/41459 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iba139eacc85b958b7f6475d1dbb1680d0c44513c 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
