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

Change subject: core: Add fencing policy as parameter to fenceNode VDSM verb
......................................................................

core: Add fencing policy as parameter to fenceNode VDSM verb

Add fencing policy as a parameter to fenceNode VDSM verb. This policy
will be used during VdsNotResponding handling.

Change-Id: I61ca142f0630ec2d8c1ec16e44c01af989c19079
Bug-Url: https://bugzilla.redhat.com/1090799
Signed-off-by: Martin Perina <[email protected]>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceExecutor.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceVdsBaseCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
M 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/FenceVdsVDSCommandParameters.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/FenceVdsVDSCommand.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
12 files changed, 66 insertions(+), 10 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/30584/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceExecutor.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceExecutor.java
index 734c412..e46d3d4 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceExecutor.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/FenceExecutor.java
@@ -8,6 +8,7 @@
 import org.ovirt.engine.core.common.businessentities.FenceActionType;
 import org.ovirt.engine.core.common.businessentities.FenceAgentOrder;
 import org.ovirt.engine.core.common.businessentities.FenceStatusReturnValue;
+import org.ovirt.engine.core.common.businessentities.FencingPolicy;
 import org.ovirt.engine.core.common.businessentities.NonOperationalReason;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.businessentities.VDSStatus;
@@ -38,8 +39,13 @@
     private Guid proxyHostId;
     private String proxyHostName;
     private Guid skippedProxyHostId=null;
+    private FencingPolicy fencingPolicy;
 
     public FenceExecutor(VDS vds, FenceActionType actionType) {
+        this(vds, actionType, null);
+    }
+
+    public FenceExecutor(VDS vds, FenceActionType actionType, FencingPolicy 
fencingPolicy) {
         // TODO remove if block after UI patch that should set also cluster & 
proxy preferences in GetNewVdsFenceStatusParameters
         if (! vds.getId().equals(Guid.Empty)) {
             VDS dbVds =  DbFacade.getInstance().getVdsDao().get(vds.getId());
@@ -52,6 +58,7 @@
         }
         _vds = vds;
         _action = actionType;
+        this.fencingPolicy = fencingPolicy;
     }
 
     public boolean findProxyHost() {
@@ -219,7 +226,7 @@
                             VDSCommandType.FenceVds,
                         new FenceVdsVDSCommandParameters(proxyHostId, 
_vds.getId(), managementIp,
                                     managementPort, managementAgent, 
managementUser, managementPassword,
-                                    managementOptions, actionType));
+                                    managementOptions, actionType, 
fencingPolicy));
     }
 
     private String getManagementOptions(FenceAgentOrder order) {
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 2180d88..c3932be 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
@@ -618,7 +618,8 @@
     private FenceExecutor createFenceExecutor(FenceActionType actionType) {
         return new FenceExecutor(
                 getVds(),
-                actionType
+                actionType,
+                getParameters().getFencingPolicy()
         );
     }
 }
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java
index a2f8f4c..aed57c3 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/RestartVdsCommand.java
@@ -124,6 +124,8 @@
         FenceVdsActionParameters params = new FenceVdsActionParameters(vdsId, 
fenceAction);
         params.setParentCommand(VdcActionType.RestartVds);
         params.setSessionId(sessionId);
+        params.setFencingPolicy(getParameters().getFencingPolicy());
+
         // If Host was in Maintenance, and was restarted manually , it should 
preserve its status after reboot
         if (getParameters().getParentCommand() != 
VdcActionType.VdsNotRespondingTreatment && getVds().getStatus() == 
VDSStatus.Maintenance) {
             params.setChangeHostToMaintenanceOnStart(true);
diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
index bc67b1c..6356c29 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/VdsNotRespondingTreatmentCommand.java
@@ -14,6 +14,7 @@
 import org.ovirt.engine.core.common.action.SetStoragePoolStatusParameters;
 import org.ovirt.engine.core.common.action.VdcActionType;
 import org.ovirt.engine.core.common.action.VdcReturnValueBase;
+import org.ovirt.engine.core.common.businessentities.FencingPolicy;
 import org.ovirt.engine.core.common.businessentities.StoragePoolStatus;
 import org.ovirt.engine.core.common.businessentities.VdsSpmStatus;
 
@@ -76,6 +77,12 @@
                 return;
             }
 
+            // load cluster fencing policy
+            FencingPolicy fencingPolicy = getDbFacade().getVdsGroupDao().get(
+                    getVds().getVdsGroupId()
+            ).getFencingPolicy();
+            getParameters().setFencingPolicy(fencingPolicy);
+
             // Make sure that the StopVdsCommand that runs by the RestartVds
             // don't write over our job, and disrupt marking the job status 
correctly
             ExecutionContext ec = (ExecutionContext) 
ObjectUtils.clone(this.getExecutionContext());
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
index 3b76cb5..e0a5e2e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/action/FenceVdsActionParameters.java
@@ -1,6 +1,7 @@
 package org.ovirt.engine.core.common.action;
 
 import org.ovirt.engine.core.common.businessentities.FenceActionType;
+import org.ovirt.engine.core.common.businessentities.FencingPolicy;
 import org.ovirt.engine.core.compat.Guid;
 
 public class FenceVdsActionParameters extends VdsActionParameters {
@@ -16,6 +17,8 @@
     private boolean keepPolicyPMEnabled;
 
     private FenceActionType action;
+
+    private FencingPolicy fencingPolicy;
 
     public FenceVdsActionParameters() {
         this(null, FenceActionType.Restart);
@@ -50,4 +53,12 @@
     public void setChangeHostToMaintenanceOnStart(boolean 
changeHostStatusOnStart) {
         this.changeHostToMaintenanceOnStart = changeHostStatusOnStart;
     }
+
+    public FencingPolicy getFencingPolicy() {
+        return fencingPolicy;
+    }
+
+    public void setFencingPolicy(FencingPolicy fencingPolicy) {
+        this.fencingPolicy = fencingPolicy;
+    }
 }
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/FenceVdsVDSCommandParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/FenceVdsVDSCommandParameters.java
index dea35af..403c20e 100644
--- 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/FenceVdsVDSCommandParameters.java
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/vdscommands/FenceVdsVDSCommandParameters.java
@@ -1,11 +1,12 @@
 package org.ovirt.engine.core.common.vdscommands;
 
 import org.ovirt.engine.core.common.businessentities.FenceActionType;
+import org.ovirt.engine.core.common.businessentities.FencingPolicy;
 import org.ovirt.engine.core.compat.Guid;
 
 public class FenceVdsVDSCommandParameters extends 
VdsIdVDSCommandParametersBase {
     public FenceVdsVDSCommandParameters(Guid vdsId, Guid targetVdsId, String 
ip, String port, String type, String user,
-            String password, String options, FenceActionType action) {
+            String password, String options, FenceActionType action, 
FencingPolicy fencingPolicy) {
         super(vdsId);
         _targetVdsId = targetVdsId;
         _ip = ip;
@@ -15,6 +16,7 @@
         _password = password;
         _action = action;
         _options = options;
+        this.fencingPolicy = fencingPolicy;
     }
 
     private Guid _targetVdsId;
@@ -25,6 +27,8 @@
     private String _password;
     private String _options;
     private FenceActionType _action;
+
+    private FencingPolicy fencingPolicy;
 
     public Guid getTargetVdsID() {
         return _targetVdsId;
@@ -63,6 +67,10 @@
         _action = FenceActionType.Restart;
     }
 
+    public FencingPolicy getFencingPolicy() {
+        return fencingPolicy;
+    }
+
     @Override
     public String toString() {
         return String.format("%s, targetVdsId = %s, action = %s, ip = %s, port 
= %s, type = %s, user = %s, " +
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
index 3f651da..1c297c5 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/jsonrpc/JsonRpcVdsServer.java
@@ -417,7 +417,8 @@
             String password,
             String action,
             String secured,
-            String options) {
+            String options,
+            Map<String, Object> fencingPolicy) {
         JsonRpcRequest request =
                 new RequestBuilder("Host.fenceNode").withParameter("addr", ip)
                         .withParameter("port", port)
@@ -427,6 +428,7 @@
                         .withParameter("action", action)
                         .withOptionalParameter("secure", secured)
                         .withOptionalParameter("options", options)
+                        .withParameter("fencingPolicy", fencingPolicy)
                         .build();
         Map<String, Object> response =
                 new FutureMap(this.client, request).withResponseKey("power")
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/FenceVdsVDSCommand.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/FenceVdsVDSCommand.java
index e3f2786..6319b66 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/FenceVdsVDSCommand.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/FenceVdsVDSCommand.java
@@ -1,8 +1,12 @@
 package org.ovirt.engine.core.vdsbroker.vdsbroker;
 
+import java.util.HashMap;
+import java.util.Map;
+
 import org.ovirt.engine.core.common.AuditLogType;
 import org.ovirt.engine.core.common.businessentities.FenceActionType;
 import org.ovirt.engine.core.common.businessentities.FenceStatusReturnValue;
+import org.ovirt.engine.core.common.businessentities.FencingPolicy;
 import org.ovirt.engine.core.common.businessentities.VDS;
 import org.ovirt.engine.core.common.vdscommands.FenceVdsVDSCommandParameters;
 import org.ovirt.engine.core.compat.Guid;
@@ -55,7 +59,8 @@
         if (!isAlreadyInRequestedStatus(options)) {
             _result = getBroker().fenceNode(getParameters().getIp(), "",
                     getParameters().getType(), getParameters().getUser(),
-                    getParameters().getPassword(), getActualActionName(), "", 
options);
+                    getParameters().getPassword(), getActualActionName(), "", 
options,
+                    convertFencingPolicy(getParameters().getFencingPolicy()));
 
             proceedProxyReturnValue();
             getVDSReturnValue().setSucceeded(false);
@@ -111,7 +116,8 @@
         FenceActionType action = getParameters().getAction();
         _result = getBroker().fenceNode(getParameters().getIp(), "",
                 getParameters().getType(), getParameters().getUser(),
-                getParameters().getPassword(), "status", "", options);
+                getParameters().getPassword(), "status", "", options,
+                convertFencingPolicy(getParameters().getFencingPolicy()));
         if (_result.power != null) {
             String powerStatus = _result.power.toLowerCase();
             if ((action == FenceActionType.Start && powerStatus.equals("on")) 
||
@@ -121,6 +127,14 @@
         return ret;
     }
 
+    private Map<String, Object> convertFencingPolicy(FencingPolicy 
fencingPolicy) {
+        Map<String, Object> map = new HashMap<>();
+        if (fencingPolicy != null) {
+            map.put(VdsProperties.SKIP_FENCING_IF_SD_ACTIVE, 
fencingPolicy.isSkipFencingIfSDActive());
+        }
+        return map;
+    }
+
     @Override
     protected StatusForXmlRpc getReturnStatus() {
         return (_result.mStatus != null) ? _result.mStatus : new 
StatusForXmlRpc();
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
index 64a7c68..6385517 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/IVdsServer.java
@@ -94,7 +94,7 @@
     StatusOnlyReturnForXmlRpc setSafeNetworkConfig();
 
     FenceStatusReturnForXmlRpc fenceNode(String ip, String port, String type, 
String user, String password,
-            String action, String secured, String options);
+            String action, String secured, String options,  Map<String, 
Object> fencingPolicy);
 
     ServerConnectionStatusReturnForXmlRpc connectStorageServer(int serverType, 
String spUUID, Map<String, String>[] args);
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
index 3670f39..826c32f 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsProperties.java
@@ -365,6 +365,10 @@
     public static final String QOS_PEAK = "peak";
     public static final String QOS_BURST = "burst";
 
+    // fencing policy
+    public static final String SKIP_FENCING_IF_SD_ACTIVE = 
"skipFencingIfSDActive";
+
+
     public static String migrationMethodtoString(MigrationMethod method) {
         switch (method) {
         case OFFLINE:
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
index de27444..5b22632 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerConnector.java
@@ -76,7 +76,7 @@
     public Map<String, Object> setSafeNetworkConfig();
 
     public Map<String, Object> fenceNode(String ip, String port, String type, 
String user, String password,
-            String action, String secured, String options);
+            String action, String secured, String options, Map<String, Object> 
fencingPolicy);
 
     public Map<String, Object> connectStorageServer(int serverType, String 
spUUID, Map<String, String>[] args);
 
diff --git 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
index 0d54aaa..0f49554d 100644
--- 
a/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
+++ 
b/backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/VdsServerWrapper.java
@@ -400,10 +400,10 @@
 
     @Override
     public FenceStatusReturnForXmlRpc fenceNode(String ip, String port, String 
type, String user, String password,
-            String action, String secured, String options) {
+            String action, String secured, String options,  Map<String, 
Object> fencingPolicy) {
         try {
             Map<String, Object> xmlRpcReturnValue = vdsServer.fenceNode(ip, 
port, type, user, password, action,
-                    secured, options);
+                    secured, options, fencingPolicy);
             FenceStatusReturnForXmlRpc wrapper = new 
FenceStatusReturnForXmlRpc(xmlRpcReturnValue);
             return wrapper;
         } catch (UndeclaredThrowableException ute) {


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I61ca142f0630ec2d8c1ec16e44c01af989c19079
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Martin Peřina <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to