Maor Lipchuk has uploaded a new change for review. Change subject: core: Support Cinder disks for snapshot in VM ......................................................................
core: Support Cinder disks for snapshot in VM Add Cinder for Creating snapshot when CreateAllSnapshotsFromVmCommand is being called. Change-Id: Ie60a82160db24c410e10d79da49f528bc2ed22fc 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/CreateAllSnapshotsFromVmCommand.java 1 file changed, 18 insertions(+), 13 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/83/40983/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java index b02969c..4169a21 100644 --- a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/CreateAllSnapshotsFromVmCommand.java @@ -217,7 +217,11 @@ fastForwardDisksToActiveSnapshot(); memoryImageBuilder.build(); - if (getTaskIdList().isEmpty()) { + // means that there are no asynchronous tasks to execute and that we can + // end the command synchronously + boolean pendingAsyncTasks = !getReturnValue().getVdsmTaskIdList().isEmpty() || + !CommandCoordinatorUtil.getChildCommandIds(getCommandId()).isEmpty(); + if (!pendingAsyncTasks) { getParameters().setTaskGroupSuccess(true); incrementVmGeneration(); } @@ -265,33 +269,28 @@ } private void createSnapshotsForDisks() { - for (DiskImage image : getDisksList()) { - if (image.getDiskStorageType() == DiskStorageType.CINDER) { + for (DiskImage disk : getDisksList()) { + if (disk.getDiskStorageType() == DiskStorageType.CINDER) { ImagesContainterParametersBase params = buildChildCommandParameters(disk); Future<VdcReturnValueBase> future = CommandCoordinatorUtil.executeAsyncCommand( - VdcActionType.CloneSingleCinderDisk, + VdcActionType.CreateCinderSnapshot, params, cloneContextAndDetachFromParent()); try { VdcReturnValueBase vdcReturnValueBase = future.get(); if (!vdcReturnValueBase.getSucceeded()) { - log.error("Error cloning Cinder disk '{}': {}", disk.getDiskAlias()); + log.error("Error creating snapshot for Cinder disk '{}'", disk.getDiskAlias()); getReturnValue().setFault(vdcReturnValueBase.getFault()); - isSucceeded = false; break; } - Guid imageId = vdcReturnValueBase.getActionReturnValue(); - diskImageMap.put(disk.getId(), imageId); } catch (InterruptedException | ExecutionException e) { - log.error("Error cloning Cinder disk '{}': {}", disk.getDiskAlias(), e.getMessage()); - isSucceeded = false; + log.error("Error creating snapshot for Cinder disk '{}': {}", disk.getDiskAlias(), e.getMessage()); } - - + continue; } VdcReturnValueBase vdcReturnValue = Backend.getInstance().runInternalAction( VdcActionType.CreateSnapshot, - buildCreateSnapshotParameters(image), + buildCreateSnapshotParameters(disk), ExecutionHandler.createDefaultContextForTasks(getContext())); if (vdcReturnValue.getSucceeded()) { @@ -303,6 +302,12 @@ } } + private ImagesContainterParametersBase buildChildCommandParameters(DiskImage cinderDisk) { + ImagesContainterParametersBase createParams = new ImagesContainterParametersBase(cinderDisk.getId()); + //createParams.setParentHasTasks(!getReturnValue().getVdsmTaskIdList().isEmpty()); + return withRootCommandInfo(createParams, getParameters().getParentCommand()); + } + private void fastForwardDisksToActiveSnapshot() { if (getParameters().getDisks() != null) { // Remove disks included in snapshot -- To view, visit https://gerrit.ovirt.org/40983 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Ie60a82160db24c410e10d79da49f528bc2ed22fc 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
