Maor Lipchuk has uploaded a new change for review. Change subject: core: Add call back command for remove VM with Cinder disks ......................................................................
core: Add call back command for remove VM with Cinder disks Adding new call back from remove VM with Cinder disks Change-Id: I1e07d72543656681f4a761db629bbcbc1bb40021 Bug-Url: https://bugzilla.redhat.com/?????? Signed-off-by: Maor Lipchuk <[email protected]> --- M backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommand.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommandCallBack.java 2 files changed, 62 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/29/39229/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommand.java index 91c97d4..31c4cdb 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommand.java @@ -9,6 +9,7 @@ import org.ovirt.engine.core.bll.context.CommandContext; import org.ovirt.engine.core.bll.tasks.CommandCoordinatorUtil; +import org.ovirt.engine.core.bll.tasks.interfaces.CommandCallback; import org.ovirt.engine.core.common.action.RemoveAllVmCinderDisksParameters; import org.ovirt.engine.core.common.action.RemoveDiskParameters; import org.ovirt.engine.core.common.action.VdcActionType; @@ -90,4 +91,9 @@ } return cinderDisks; } + + @Override + public CommandCallback getCallback() { + return new RemoveAllVmCinderDisksCommandCallBack<>(); + } } diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommandCallBack.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommandCallBack.java new file mode 100644 index 0000000..8ec9ace --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RemoveAllVmCinderDisksCommandCallBack.java @@ -0,0 +1,56 @@ +package org.ovirt.engine.core.bll; + +import java.util.List; + +import org.ovirt.engine.core.bll.tasks.CommandCoordinatorUtil; +import org.ovirt.engine.core.bll.tasks.interfaces.CommandCallback; +import org.ovirt.engine.core.common.action.RemoveAllVmCinderDisksParameters; +import org.ovirt.engine.core.compat.CommandStatus; +import org.ovirt.engine.core.compat.Guid; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class RemoveAllVmCinderDisksCommandCallBack<T extends RemoveAllVmCinderDisksCommand<RemoveAllVmCinderDisksParameters>> extends CommandCallback { + private static final Logger log = LoggerFactory.getLogger(RemoveAllVmCinderDisksCommandCallBack.class); + + @Override + public void doPolling(Guid cmdId, List<Guid> childCmdIds) { + + boolean anyFailed = false; + for (Guid childCmdId : childCmdIds) { + switch (CommandCoordinatorUtil.getCommandStatus(childCmdId)) { + case ACTIVE: + log.info("Waiting for child commands to complete"); + return; + case FAILED: + case FAILED_RESTARTED: + case UNKNOWN: + anyFailed = true; + break; + default: + break; + } + } + + T command = getCommand(cmdId); + command.getParameters().setTaskGroupSuccess(!anyFailed); + command.setCommandStatus(anyFailed ? CommandStatus.FAILED : CommandStatus.SUCCEEDED); + log.info("All commands have completed, status '{}'", command.getCommandStatus()); + } + + @Override + public void onSucceeded(Guid cmdId, List<Guid> childCmdIds) { + getCommand(cmdId).endAction(); + CommandCoordinatorUtil.removeAllCommandsInHierarchy(cmdId); + } + + @Override + public void onFailed(Guid cmdId, List<Guid> childCmdIds) { + getCommand(cmdId).endAction(); + CommandCoordinatorUtil.removeAllCommandsInHierarchy(cmdId); + } + + private T getCommand(Guid cmdId) { + return (T) CommandCoordinatorUtil.retrieveCommand(cmdId); + } +} -- To view, visit https://gerrit.ovirt.org/39229 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I1e07d72543656681f4a761db629bbcbc1bb40021 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
