Jiří Moskovčák has uploaded a new change for review.

Change subject: core: don't throw an exception, when moving unresponsive VDS to 
maintenance
......................................................................

core: don't throw an exception, when moving unresponsive VDS to maintenance

When VDS which is part of hosted engine cluster becoms non-responsive,
it throws an exception when running SetHaMaintenance command which
results in roll back of the whole maintenance command preventing
user from removing the broken VDS

Change-Id: Ibf9b489f73793ea1135a72bf1a9184e0822386d8
Bug-Url: https://bugzilla.redhat.com/1162998
Signed-off-by: Jiri Moskovcak <jmosk...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetHaMaintenanceModeVDSCommand.java
2 files changed, 23 insertions(+), 9 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/54/35654/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java
index 68abf83..b63417c 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/MaintenanceVdsCommand.java
@@ -60,14 +60,12 @@
                 SetHaMaintenanceModeVDSCommandParameters params
                         = new 
SetHaMaintenanceModeVDSCommandParameters(getVds(), HaMaintenanceMode.LOCAL, 
true);
                 if (!runVdsCommand(VDSCommandType.SetHaMaintenanceMode, 
params).getSucceeded()) {
-                    // HA maintenance failure is fatal only if the Hosted 
Engine vm is running on this host
-                    for (VM vm : vms) {
-                        if (vm.isHostedEngine()) {
-                            setSucceeded(false);
-                            return;
-                        }
-                    }
                     haMaintenanceFailed = true;
+                    // HA maintenance failure is fatal only if the Hosted 
Engine vm is running on this host
+                    if (isHostedEngineOnVds()) {
+                        setSucceeded(false);
+                        return;
+                    }
                 }
             }
 
@@ -215,4 +213,13 @@
         return jobProperties;
     }
 
+    private boolean isHostedEngineOnVds() {
+        for (VM vm : vms) {
+            if (vm.isHostedEngine()) {
+                return true;
+            }
+        }
+        return false;
+    }
+
 }
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetHaMaintenanceModeVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetHaMaintenanceModeVDSCommand.java
index 0ad63b8..e3c8fd4 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetHaMaintenanceModeVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/SetHaMaintenanceModeVDSCommand.java
@@ -15,8 +15,15 @@
     @Override
     protected void executeVdsBrokerCommand() {
         if (getVds().getHighlyAvailableIsConfigured()) {
-            status = 
getBroker().setHaMaintenanceMode(getParameters().getMode().name(), 
getParameters().isEnabled());
-            proceedProxyReturnValue();
+            try {
+                status = 
getBroker().setHaMaintenanceMode(getParameters().getMode().name(), 
getParameters().isEnabled());
+                proceedProxyReturnValue();
+            }
+            catch (RuntimeException e) {
+                setVdsRuntimeError(e);
+                // prevent exception handler from rethrowing an exception
+                getVDSReturnValue().setExceptionString(null);
+            }
         }
     }
 }


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ibf9b489f73793ea1135a72bf1a9184e0822386d8
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Jiří Moskovčák <jmosk...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to