Allon Mureinik has uploaded a new change for review. Change subject: core: [WIP]: Live Storage Migration commands ......................................................................
core: [WIP]: Live Storage Migration commands WIP of the Live Storage Migration feature. Currently, this patch contains the 1st task handler only. Change-Id: I253891a0a18863086e36a9b17d008cebbc77adc1 Signed-off-by: Allon Mureinik <[email protected]> --- A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderHandler.java A backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java 2 files changed, 147 insertions(+), 0 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/05/8105/1 diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderHandler.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderHandler.java new file mode 100644 index 0000000..c9fba07 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/CreateImagePlaceholderHandler.java @@ -0,0 +1,79 @@ +package org.ovirt.engine.core.bll.lsm; + +import org.ovirt.engine.core.bll.AbstractSPMAsyncTaskHandler; +import org.ovirt.engine.core.common.VdcObjectType; +import org.ovirt.engine.core.common.businessentities.SyncOptions; +import org.ovirt.engine.core.common.vdscommands.DeleteImageGroupVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.SyncImageGroupVDSCommandParameters; +import org.ovirt.engine.core.common.vdscommands.VDSCommandType; +import org.ovirt.engine.core.common.vdscommands.VDSParametersBase; +import org.ovirt.engine.core.compat.Guid; + +public class CreateImagePlaceholderHandler extends AbstractSPMAsyncTaskHandler<LiveMigrateDiskCommand<?>> { + + public CreateImagePlaceholderHandler(LiveMigrateDiskCommand<?> cmd) { + super(cmd); + } + + @Override + protected void beforeTask() { + // No-op before the sync image command in the database side + } + + @Override + protected VDSCommandType getVDSCommandType() { + return VDSCommandType.SyncImageGroup; + } + + @Override + protected VDSParametersBase getVDSParameters() { + return new SyncImageGroupVDSCommandParameters(getStoragePoolID(), + getStorageDomainID(), + getEnclosingCommand().getDiskImage().getId(), + getImageGroupID(), + SyncOptions.PREPARE | SyncOptions.MIRROR_EXTEND_START); + } + + @Override + protected VdcObjectType getTaskObjectType() { + return VdcObjectType.Disk; + } + + @Override + protected Guid[] getTaskObjects() { + return new Guid[] { getEnclosingCommand().getDiskImage().getId() }; + } + + @Override + protected void revertTask() { + // No op reverting in the database side + } + + @Override + protected VDSCommandType getRevertVDSCommandType() { + return VDSCommandType.DeleteImageGroup; + } + + @Override + protected VDSParametersBase getRevertVDSParameters() { + return new DeleteImageGroupVDSCommandParameters( + getStoragePoolID(), + getStorageDomainID(), + getImageGroupID(), + false, + false, + getEnclosingCommand().getStoragePool().getcompatibility_version().getValue()); + } + + protected Guid getStoragePoolID() { + return getEnclosingCommand().getStoragePoolId().getValue(); + } + + protected Guid getStorageDomainID() { + return getEnclosingCommand().getStorageDomainId().getValue(); + } + + protected Guid getImageGroupID() { + return getEnclosingCommand().getDestinationDiskImage().getstorage_ids().get(0); + } +} diff --git a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java new file mode 100644 index 0000000..b18ec94 --- /dev/null +++ b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java @@ -0,0 +1,68 @@ +package org.ovirt.engine.core.bll.lsm; + +import java.util.Arrays; + +import org.ovirt.engine.core.bll.BaseImagesCommand; +import org.ovirt.engine.core.bll.ImagesHandler; +import org.ovirt.engine.core.bll.snapshots.SnapshotsValidator; +import org.ovirt.engine.core.bll.validator.VmValidator; +import org.ovirt.engine.core.common.action.MoveOrCopyImageGroupParameters; +import org.ovirt.engine.core.common.businessentities.DiskImage; +import org.ovirt.engine.core.compat.Guid; + +public class LiveMigrateDiskCommand<T extends MoveOrCopyImageGroupParameters> extends BaseImagesCommand<T> { + private static final long serialVersionUID = -6216729539906812205L; + + /* Constructors */ + + public LiveMigrateDiskCommand(T parameters) { + super(parameters); + } + + protected LiveMigrateDiskCommand(Guid commandId) { + super(commandId); + } + + + /* Overridden CommandBase Methods */ + + @Override + protected boolean canDoAction() { + VmValidator vmValidator = new VmValidator(getVm()); + SnapshotsValidator snapshotsValidator = new SnapshotsValidator(); + return validate(snapshotsValidator.vmNotDuringSnapshot(getVmId())) + && validate(vmValidator.vmNotDuringMigration()) + && validate(vmValidator.vmNotRunningStateless()) + && ImagesHandler.PerformImagesChecks(getVm(), + getReturnValue().getCanDoActionMessages(), + getVm().getstorage_pool_id(), + Guid.Empty, + true, + true, + true, + true, + true, + false, + true, + true, + Arrays.asList(getDiskImage())); + } + + + /* Overridden stubs for visibility */ + + @Override + protected DiskImage getDiskImage() { + return super.getDiskImage(); + } + + @Override + protected DiskImage getDestinationDiskImage() { + return super.getDestinationDiskImage(); + } + + /* TODO: Permissions Job Messages */ + /* TODO: Permissions (MLA) */ + /* TODO: Quota */ + /* TODO: Locking? */ +} -- To view, visit http://gerrit.ovirt.org/8105 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I253891a0a18863086e36a9b17d008cebbc77adc1 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Allon Mureinik <[email protected]> _______________________________________________ Engine-patches mailing list [email protected] http://lists.ovirt.org/mailman/listinfo/engine-patches
