Arik Hadas has uploaded a new change for review.

Change subject: core: change the way we rerun HA VMs on fence flows
......................................................................

core: change the way we rerun HA VMs on fence flows

On both manual and automatic fencing flows, we used to rerun highly
available VMs by invoking RunVmCommand directly. The problem is that
this way we don't retry if it fails. The solution is to rerun the
highly available VMs using AutoStartVmsRunner job in these flows as
well.

Change-Id: Ic259ff22c4b6f24b09eb973de6e31ebc51aa966b
Bug-Url: https://bugzilla.redhat.com/1077706
Signed-off-by: Arik Hadas <aha...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java
2 files changed, 8 insertions(+), 13 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/49/26049/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java
index 31126f0..6f385ff 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/ClearNonResponsiveVdsVmsCommand.java
@@ -6,9 +6,6 @@
 
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.common.AuditLogType;
-import org.ovirt.engine.core.common.action.RunVmParams;
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
-import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdsActionParameters;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
 import org.ovirt.engine.core.common.businessentities.VM;
@@ -46,10 +43,10 @@
     protected void executeCommand() {
         List<VM> vms = 
DbFacade.getInstance().getVmDao().getAllRunningForVds(getVdsId());
         Collections.sort(vms, Collections.reverseOrder(new VmsComparer()));
-        ArrayList<VdcActionParametersBase> runVmParamsList = new 
ArrayList<VdcActionParametersBase>();
+        List<Guid> autoStartVmIdsToRerun = new ArrayList<>();
         for (VM vm : vms) {
             if (vm.isAutoStartup()) {
-                runVmParamsList.add(new RunVmParams(vm.getId()));
+                autoStartVmIdsToRerun.add(vm.getId());
             }
             VDSReturnValue returnValue = Backend
                     .getInstance()
@@ -69,8 +66,8 @@
                 .getResourceManager()
                 .RunVdsCommand(VDSCommandType.UpdateVdsVMsCleared,
                         new 
UpdateVdsVMsClearedVDSCommandParameters(getVdsId()));
-        if (runVmParamsList.size() > 0) {
-            
Backend.getInstance().runInternalMultipleActions(VdcActionType.RunVm, 
runVmParamsList);
+        if (!autoStartVmIdsToRerun.isEmpty()) {
+            
AutoStartVmsRunner.getInstance().addVmsToRun(autoStartVmIdsToRerun);
         }
         setSucceeded(true);
     }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java
index c220057..1129863 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java
@@ -14,8 +14,6 @@
 import org.ovirt.engine.core.bll.job.ExecutionHandler;
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.action.FenceVdsActionParameters;
-import org.ovirt.engine.core.common.action.RunVmParams;
-import org.ovirt.engine.core.common.action.VdcActionParametersBase;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.businessentities.FenceActionType;
 import org.ovirt.engine.core.common.businessentities.FenceAgentOrder;
@@ -467,7 +465,7 @@
     }
 
     protected void restartVdsVms() {
-        ArrayList<VdcActionParametersBase> runVmParamsList = new 
ArrayList<VdcActionParametersBase>();
+        List<Guid> autoStartVmIdsToRerun = new ArrayList<>();
         // restart all running vms of a failed vds.
         for (VM vm : mVmList) {
             destroyVmOnDestination(vm);
@@ -488,11 +486,11 @@
 
             // Handle highly available VMs
             if (vm.isAutoStartup()) {
-                runVmParamsList.add(new RunVmParams(vm.getId()));
+                autoStartVmIdsToRerun.add(vm.getId());
             }
         }
-        if (runVmParamsList.size() > 0) {
-            
Backend.getInstance().runInternalMultipleActions(VdcActionType.RunVm, 
runVmParamsList);
+        if (!autoStartVmIdsToRerun.isEmpty()) {
+            
AutoStartVmsRunner.getInstance().addVmsToRun(autoStartVmIdsToRerun);
         }
         setVm(null);
         setVmId(Guid.Empty);


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

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

Reply via email to