Eli Mesika has uploaded a new change for review.

Change subject: core:  in PM only selecting apc or ipmilan...
......................................................................

core:  in PM only selecting apc or ipmilan...

in PM only selecting apc or ipmilan changes the options, choosing other
types is static

The reason for that was that fence options mapping were called with
'general' version and since this key is versioned, the static value for
this key in ConfigValues.java was returned. This value misses some of
the recent agents added in 3.2 and 3.3 and cause this BZ.

This patch fix this issue by getting 6the fence options mapping from the
database for the given cluster version.

Change-Id: I2f815e90d95e8cd21aca51a803dccde8079dee5d
Bug-Url: https://bugzilla.redhat.com/show_bug.cgi?id=1014513
Signed-off-by: Eli Mesika <emes...@redhat.com>
---
M 
backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAgentFenceOptionsQuery.java
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAgentFenceOptionsQueryParameters.java
M 
backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/pm/VdsFenceOptions.java
M 
backend/manager/modules/vdsbroker/src/main/java/org/ovirt/engine/core/vdsbroker/vdsbroker/FenceVdsVDSCommand.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
M 
frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
6 files changed, 43 insertions(+), 14 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/32/20332/1

diff --git 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAgentFenceOptionsQuery.java
 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAgentFenceOptionsQuery.java
index 040eb37..7facb15 100644
--- 
a/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAgentFenceOptionsQuery.java
+++ 
b/backend/manager/modules/bll/src/main/java/org/ovirt/engine/core/bll/GetAgentFenceOptionsQuery.java
@@ -2,10 +2,10 @@
 
 import java.util.HashMap;
 
-import org.ovirt.engine.core.common.queries.VdcQueryParametersBase;
+import 
org.ovirt.engine.core.common.queries.GetAgentFenceOptionsQueryParameters;
 import org.ovirt.engine.core.utils.pm.VdsFenceOptions;
 
-public class GetAgentFenceOptionsQuery<P extends VdcQueryParametersBase> 
extends FenceQueryBase<P> {
+public class GetAgentFenceOptionsQuery<P extends 
GetAgentFenceOptionsQueryParameters> extends FenceQueryBase<P> {
 
     public GetAgentFenceOptionsQuery(P parameters) {
         super(parameters);
@@ -13,7 +13,8 @@
 
     @Override
     protected void executeQueryCommand() {
-        VdsFenceOptions options = new VdsFenceOptions();
+        String version = getParameters().getVersion();
+        VdsFenceOptions options = new VdsFenceOptions(version);
         HashMap<String, HashMap<String, String>> map = 
options.getFencingOptionMappingMap();
         getQueryReturnValue().setReturnValue(map);
         getQueryReturnValue().setSucceeded(map.size() > 0);
diff --git 
a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAgentFenceOptionsQueryParameters.java
 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAgentFenceOptionsQueryParameters.java
new file mode 100644
index 0000000..c26aaba
--- /dev/null
+++ 
b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/queries/GetAgentFenceOptionsQueryParameters.java
@@ -0,0 +1,19 @@
+package org.ovirt.engine.core.common.queries;
+
+public class GetAgentFenceOptionsQueryParameters extends 
VdcQueryParametersBase {
+    private static final long serialVersionUID = 3645032828911858219L;
+    private String version;
+
+    public String getVersion() {
+        return version;
+    }
+
+    public void setVersion(String version) {
+        this.version = version;
+    }
+
+    public GetAgentFenceOptionsQueryParameters(String version) {
+        super();
+        this.version = version;
+    }
+}
diff --git 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/pm/VdsFenceOptions.java
 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/pm/VdsFenceOptions.java
index b70f1cf..c9c0a00 100644
--- 
a/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/pm/VdsFenceOptions.java
+++ 
b/backend/manager/modules/utils/src/main/java/org/ovirt/engine/core/utils/pm/VdsFenceOptions.java
@@ -37,13 +37,13 @@
     private String fencingOptions;
     private static HashMap<String, String> fencingAgentInstanceOptions;
     private static HashSet<String> fencingSpecialParams;
+    private String version;
 
     /**
      * Initializes a new instance of the <see cref="VdsFencingOptions"/> class.
      */
-    public VdsFenceOptions() {
-        InitCache();
-        Init();
+    public VdsFenceOptions(String version) {
+        this(null, null, version);
     }
 
     /**
@@ -54,11 +54,12 @@
      * @param fencingOptions
      *            The fencing options.
      */
-    public VdsFenceOptions(String agent, String fencingOptions) {
+    public VdsFenceOptions(String agent, String fencingOptions, String 
version) {
         if (StringUtils.isNotEmpty(agent)) {
             this.fenceAgent = agent;
             this.fencingOptions = fencingOptions;
         }
+        this.version = version;
         InitCache();
         Init();
     }
@@ -74,7 +75,7 @@
      * alom:secure=secure,port=ipport;apc:secure=secure,port=ipport,slot=port
      */
     private void CacheFencingAgentsOptionMapping() {
-        String localfencingOptionMapping = Config.<String> 
GetValue(ConfigValues.VdsFenceOptionMapping);
+        String localfencingOptionMapping = Config.<String> 
GetValue(ConfigValues.VdsFenceOptionMapping, version);
         String[] agentsOptionsStr = 
localfencingOptionMapping.split(Pattern.quote(SEMICOLON), -1);
         for (String agentOptionsStr : agentsOptionsStr) {
             String[] parts = agentOptionsStr.split(Pattern.quote(COLON), -1);
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 0233b0d..e2e8283 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
@@ -3,6 +3,7 @@
 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.VDS;
 import org.ovirt.engine.core.common.vdscommands.FenceVdsVDSCommandParameters;
 import org.ovirt.engine.core.compat.Guid;
 import org.ovirt.engine.core.dal.dbbroker.DbFacade;
@@ -45,8 +46,10 @@
 
     @Override
     protected void executeVdsBrokerCommand() {
+        // We have to pass here the proxy host cluster compatibility version
+        VDS vds = getDbFacade().getVdsDao().get(getParameters().getVdsId());
         VdsFenceOptions vdsFencingOptions = new 
VdsFenceOptions(getParameters().getType(),
-                getParameters().getOptions());
+                getParameters().getOptions(), 
vds.getVdsGroupCompatibilityVersion().toString());
         String options = vdsFencingOptions.ToInternalString();
         // ignore starting already started host or stopping already stopped 
host.
         if (!isAlreadyInRequestedStatus(options)) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
index 1c11c4b..73ba1c2 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java
@@ -68,6 +68,7 @@
 import org.ovirt.engine.core.common.mode.ApplicationMode;
 import org.ovirt.engine.core.common.queries.CommandVersionsInfo;
 import org.ovirt.engine.core.common.queries.ConfigurationValues;
+import 
org.ovirt.engine.core.common.queries.GetAgentFenceOptionsQueryParameters;
 import org.ovirt.engine.core.common.queries.GetAllAttachableDisks;
 import 
org.ovirt.engine.core.common.queries.GetAllFromExportDomainQueryParameters;
 import org.ovirt.engine.core.common.queries.GetAllProvidersParameters;
@@ -1692,7 +1693,7 @@
         getConfigFromCache(tempVar, aQuery);
     }
 
-    public static void getPmOptions(AsyncQuery aQuery, String pmType) {
+    public static void getPmOptions(AsyncQuery aQuery, String pmType, String 
version) {
         aQuery.converterCallback = new IAsyncConverter() {
             @Override
             public Object Convert(Object source, AsyncQuery _asyncQuery)
@@ -1716,7 +1717,7 @@
             }
         };
         aQuery.setData(new Object[] { pmType });
-        Frontend.RunQuery(VdcQueryType.GetAgentFenceOptions, new 
VdcQueryParametersBase(), aQuery);
+        Frontend.RunQuery(VdcQueryType.GetAgentFenceOptions, new 
GetAgentFenceOptionsQueryParameters(version), aQuery);
     }
 
     public static void getNetworkList(AsyncQuery aQuery, Guid dataCenterId) {
diff --git 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
index b7ccc9d..d5475dd 100644
--- 
a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
+++ 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/hosts/HostModel.java
@@ -1333,7 +1333,11 @@
         getPmOptions().setIsChangable(isPm);
         getPmOptions().setIsValid(true);
         getPmSecure().setIsChangable(isPm);
-
+        VDSGroup cluster = (VDSGroup) getCluster().getSelectedItem();
+        String version = AsyncDataProvider.getDefaultConfigurationVersion();
+        if (cluster != null) {
+            version = cluster.getcompatibility_version().toString();
+        }
         String pmType = (String) getPmType().getSelectedItem();
         if (!StringHelper.isNullOrEmpty(pmType)) {
             AsyncDataProvider.getPmOptions(new AsyncQuery(this, new 
INewAsyncCallback() {
@@ -1347,7 +1351,7 @@
                         
getPmSecure().setIsAvailable(pmOptions.contains(PmSecureKey));
                     }
                 }
-            }), pmType);
+            }), pmType, version);
         } else {
             getPmPort().setIsAvailable(false);
             getPmSlot().setIsAvailable(false);
@@ -1385,7 +1389,7 @@
                         
getPmSecondarySecure().setIsAvailable(pmOptions.contains(PmSecureKey));
                     }
                 }
-            }), pmSecondaryType);
+            }), pmSecondaryType, version);
         } else {
             getPmSecondaryPort().setIsAvailable(false);
             getPmSecondarySlot().setIsAvailable(false);


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

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2f815e90d95e8cd21aca51a803dccde8079dee5d
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.3
Gerrit-Owner: Eli Mesika <emes...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to