Federico Simoncelli has uploaded a new change for review.

Change subject: backend: remove vm check from LiveMigrateDiskCommand
......................................................................

backend: remove vm check from LiveMigrateDiskCommand

This patch shifts the VM status check from the LiveMigrateDiskCommand
to VmReplicateDiskStartTaskHandler.

This will:
* prevent CreateImagePlaceholderTaskHandler from failing if the VM
  crashes during its execution
* shift the failure to the appropriate handler (VmReplicateDiskStart)
* allow the CreateImagePlaceholderTaskHandler compensation to take
  place and remove the destination image when necessary

Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=957703
Change-Id: Iac42a5d10373a0c1fcf9a224fb902f0ce481d3b7
Signed-off-by: Federico Simoncelli <fsimo...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/LiveMigrateDiskCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java
2 files changed, 12 insertions(+), 2 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/76/19876/1

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
index ffc1d42..ca72bce 100644
--- 
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
@@ -35,8 +35,6 @@
         getParameters().setDiskAlias(getDiskAlias());
         getParameters().setImageGroupID(getImageGroupId());
         getParameters().setCommandType(getActionType());
-        
getParameters().setTaskGroupSuccess(getParameters().getTaskGroupSuccess()
-                && getVm().getStatus().isRunningOrPaused());
     }
 
     /* Overridden CommandBase Methods */
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java
index c357dee..bc2d3fc 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/lsm/VmReplicateDiskStartTaskHandler.java
@@ -6,6 +6,7 @@
 import org.ovirt.engine.core.common.action.LiveMigrateDiskParameters;
 import org.ovirt.engine.core.common.asynctasks.AsyncTaskType;
 import org.ovirt.engine.core.common.errors.VdcBLLException;
+import org.ovirt.engine.core.common.errors.VdcBllErrors;
 import 
org.ovirt.engine.core.common.vdscommands.SyncImageGroupDataVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
 import org.ovirt.engine.core.common.vdscommands.VDSParametersBase;
@@ -22,6 +23,11 @@
 
     @Override
     protected void beforeTask() {
+        if 
(Guid.Empty.equals(getEnclosingCommand().getParameters().getVdsId())) {
+            throw new VdcBLLException(VdcBllErrors.down,
+                    "VM " + getEnclosingCommand().getParameters().getVmId() + 
" is not running on any VDS");
+        }
+
         // Start disk migration
         VmReplicateDiskParameters migrationStartParams = new 
VmReplicateDiskParameters
                 (getEnclosingCommand().getParameters().getVdsId(),
@@ -65,6 +71,12 @@
 
     @Override
     protected void revertTask() {
+        if 
(Guid.Empty.equals(getEnclosingCommand().getParameters().getVdsId())) {
+            log.errorFormat("VM {0} is not running on any VDS, skipping 
VmReplicateDiskFinish",
+                    getEnclosingCommand().getParameters().getVmId());
+            return;
+        }
+
         // Undo the replicateStart - use replicateFinish back to the source
         VmReplicateDiskParameters migrationStartParams = new 
VmReplicateDiskParameters
                 (getEnclosingCommand().getParameters().getVdsId(),


-- 
To view, visit http://gerrit.ovirt.org/19876
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iac42a5d10373a0c1fcf9a224fb902f0ce481d3b7
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Federico Simoncelli <fsimo...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to