Martin Peřina has uploaded a new change for review.

Change subject: core: Move VDS to Maintenance only if StopSPM is successful
......................................................................

core: Move VDS to Maintenance only if StopSPM is successful

Fixes MaintenanceNumberOfVdssCommand so only VDSs for which StopSPM was
executed successfully, will continues with Move to Maintenance process.

Change-Id: I5c58f9a9629d2e7a496f02c4dececeb842d44543
Bug-Url: https://bugzilla.redhat.com/1023145
Signed-off-by: Martin Perina <mper...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceNumberOfVdssCommand.java
1 file changed, 16 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/31/21231/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceNumberOfVdssCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceNumberOfVdssCommand.java
index 035f8a0..40c570b 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceNumberOfVdssCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceNumberOfVdssCommand.java
@@ -4,6 +4,7 @@
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
+import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
@@ -31,6 +32,7 @@
 import org.ovirt.engine.core.common.utils.Pair;
 import 
org.ovirt.engine.core.common.vdscommands.SetVdsStatusVDSCommandParameters;
 import org.ovirt.engine.core.common.vdscommands.VDSCommandType;
+import org.ovirt.engine.core.common.vdscommands.VDSReturnValue;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
 import org.ovirt.engine.core.vdsbroker.vdsbroker.CancelMigrationVDSParameters;
@@ -55,16 +57,13 @@
     }
 
     private void MoveVdssToGoingToMaintenanceMode() {
-        List<VDS> spms = new ArrayList<VDS>();
-        for (VDS vds : vdssToMaintenance.values()) {
-            if (vds.getSpmStatus() != VdsSpmStatus.SPM) {
-                setVdsStatusToPrepareForMaintaice(vds);
-            } else {
-                spms.add(vds);
+        Iterator<Guid> it = vdssToMaintenance.keySet().iterator();
+        while (it.hasNext()) {
+            VDSReturnValue result = 
setVdsStatusToPrepareForMaintenance(vdssToMaintenance.get(it.next()));
+            if (!result.getSucceeded()) {
+                // remove VDS from map because of an error
+                it.remove();
             }
-        }
-        for (VDS vds : spms) {
-            setVdsStatusToPrepareForMaintaice(vds);
         }
         cancelIncommingMigrations();
         freeLock();
@@ -81,16 +80,21 @@
         }
     }
 
-    private void setVdsStatusToPrepareForMaintaice(VDS vds) {
+    private VDSReturnValue setVdsStatusToPrepareForMaintenance(VDS vds) {
+        VDSReturnValue result;
         if (vds.getStatus() != VDSStatus.PreparingForMaintenance && 
vds.getStatus() != VDSStatus.NonResponsive
                 && vds.getStatus() != VDSStatus.Down) {
-            runVdsCommand(VDSCommandType.SetVdsStatus,
+            result = runVdsCommand(VDSCommandType.SetVdsStatus,
                     new SetVdsStatusVDSCommandParameters(vds.getId(), 
VDSStatus.PreparingForMaintenance));
+        } else {
+            result = new VDSReturnValue();
+            result.setSucceeded(true);
         }
+        return result;
     }
 
     private void MigrateAllVdss() {
-        for (Guid vdsId : getParameters().getVdsIdList()) {
+        for (Guid vdsId : vdssToMaintenance.keySet()) {
             // ParametersCurrentUser = CurrentUser
             MaintenanceVdsParameters tempVar = new 
MaintenanceVdsParameters(vdsId, getParameters().getIsInternal());
             tempVar.setSessionId(getParameters().getSessionId());


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I5c58f9a9629d2e7a496f02c4dececeb842d44543
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Peřina <mper...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to