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

Reply via email to