modules/plugins/jboss-as-7/pom.xml | 6 modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java | 74 ++++++++++ modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java | 4 modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java | 53 +++++-- modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java | 13 + modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 4 modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java | 4 modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java | 3 8 files changed, 149 insertions(+), 12 deletions(-)
New commits: commit 94eb3bb0338c2f16469b942df2912539fac89f07 Author: Ian Springer ian.springer@redhat.com Date: Thu May 24 11:40:12 2012 -0400
[BZ 813066] exclude the 'multicastAddress' trait from the null-metric-values test for Managed Servers, since a null value is expected when the managed servers are not in HA mode (https://bugzilla.redhat.com/show_bug.cgi?id=813066) (cherry picked from commit b1e5c9b624041846262c53ebebefef102f513307)
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml index f0a7f3d..c690ee1 100644 --- a/modules/plugins/jboss-as-7/pom.xml +++ b/modules/plugins/jboss-as-7/pom.xml @@ -380,6 +380,12 @@ <replace dir="${jboss7.home}" includes="standalone/configuration/standalone*.xml, domain/configuration/host*.xml" token="<inet-address " value="<loopback-address "/> + <!-- TODO (ips, 05/24/12): The below starts the managed servers in HA mode, but it also causes a + slew of HornetQ authentication errors - figure out how to make those go + away. --> + <!--<replace dir="${jboss7.home}" + includes="domain/configuration/host.xml" + token=' group="main-server-group"' value=' group="other-server-group"'/>--> </target> </configuration> </execution> diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java index 5d53c02..04c40de 100644 --- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java +++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/AbstractJBossAS7PluginTest.java @@ -46,8 +46,8 @@ public abstract class AbstractJBossAS7PluginTest extends AbstractAgentPluginTest
protected static final String PLUGIN_NAME = "JBossAS7";
- public static final String MANAGEMENT_USERNAME = "test"; - public static final String MANAGEMENT_PASSWORD = "test"; + public static final String MANAGEMENT_USERNAME = "admin"; + public static final String MANAGEMENT_PASSWORD = "admin";
private static final int TYPE_HIERARCHY_DEPTH = 6;
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java index 4fe5798..2b7ec7a 100644 --- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java +++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/itest/GenericJBossAS7PluginTest.java @@ -51,7 +51,8 @@ public class GenericJBossAS7PluginTest extends AbstractJBossAS7PluginTest { public void testAllMetricsHaveNonNullValues() throws Exception { Map<ResourceType, String[]> excludedMetricNamesByType = new HashMap<ResourceType, String[]>(); // It's normal for the "startTime" trait to be null for a Managed Server that is down/disabled. - excludedMetricNamesByType.put(ManagedServerTest.RESOURCE_TYPE, new String[] {"startTime"}); + // It's normal for the "multicastAddress" trait to be null for a Managed Server that is not configured for JGroups HA. + excludedMetricNamesByType.put(ManagedServerTest.RESOURCE_TYPE, new String[] {"startTime", "multicastAddress"}); assertAllNumericMetricsAndTraitsHaveNonNullValues(excludedMetricNamesByType); }
commit 002707acaed4221c7d7e2004d5b4be6c2d787b79 Author: Ian Springer ian.springer@redhat.com Date: Wed May 23 21:31:11 2012 -0400
[BZ 813066] expose new 'multicastAddress' trait on Standalone Server and Managed Server Resources that are running in HA/cluster mode (https://bugzilla.redhat.com/show_bug.cgi?id=813066) (cherry picked from commit 6eb0643d9d1e27376628048f564759cb87868487)
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java index ca247f5..b5b1192 100644 --- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java +++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseComponent.java @@ -62,6 +62,7 @@ import org.rhq.core.pluginapi.inventory.ResourceContext; import org.rhq.core.pluginapi.measurement.MeasurementFacet; import org.rhq.core.pluginapi.operation.OperationFacet; import org.rhq.core.pluginapi.operation.OperationResult; +import org.rhq.core.pluginapi.util.StartScriptConfiguration; import org.rhq.modules.plugins.jbossas7.helper.ServerPluginConfiguration; import org.rhq.modules.plugins.jbossas7.json.Address; import org.rhq.modules.plugins.jbossas7.json.CompositeOperation; @@ -742,6 +743,79 @@ public class BaseComponent<T extends ResourceComponent<?>> implements AS7Compone return (T) res.getResult(); }
+ protected Address getServerAddress() { + throw new UnsupportedOperationException(); + } + + protected String getSocketBindingGroup() { + throw new UnsupportedOperationException(); + } + + protected void collectMulticastAddressTrait(MeasurementReport report, MeasurementScheduleRequest request) { + Address jgroupsUdpStackAddress = new Address(getServerAddress()); + jgroupsUdpStackAddress.add("subsystem", "jgroups"); + jgroupsUdpStackAddress.add("stack", "udp"); + jgroupsUdpStackAddress.add("transport", "TRANSPORT"); + + String socketBinding; + try { + socketBinding = readAttribute(jgroupsUdpStackAddress, "socket-binding"); + } catch (Exception e) { + socketBinding = null; + } + + if (socketBinding != null) { + Address jgroupsSocketBindingAddress = new Address(getServerAddress()); + String socketBindingGroup = getSocketBindingGroup(); + jgroupsSocketBindingAddress.add("socket-binding-group", socketBindingGroup); + jgroupsSocketBindingAddress.add("socket-binding", socketBinding); + String multicastHost = null; + Integer multicastPort; + try { + try { + Map<String, String> map = readAttribute(jgroupsSocketBindingAddress, "multicast-address", Map.class); + String expressionValue = map.get("EXPRESSION_VALUE"); + int beginIndex = expressionValue.indexOf("${jboss.default.multicast.address"); + if (beginIndex >= 0) { + int endIndex = expressionValue.indexOf('}', beginIndex); + if (endIndex >= 0) { + String expression = expressionValue.substring(beginIndex + 2, endIndex); + StartScriptConfiguration startScriptConfig = getServerComponent().getStartScriptConfiguration(); + List<String> startScriptArgs = startScriptConfig.getStartScriptArgs(); + for (String startScriptArg : startScriptArgs) { + if (startScriptArg.startsWith("-Djboss.default.multicast.address=")) { + multicastHost = startScriptArg.substring("-Djboss.default.multicast.address=".length()); + break; + } + } + if (multicastHost == null) { + int colonIndex = expression.indexOf(':'); + String defaultValue = (colonIndex >= 0) ? expression.substring(colonIndex + 1) : null; + if (defaultValue != null) { + multicastHost = defaultValue; + } else { + log.error("Failed to resolve expression value [" + expressionValue + + "] of 'multicast-address' attribute."); + } + } + } + } + } catch (ClassCastException cce) { + multicastHost = readAttribute(jgroupsSocketBindingAddress, "multicast-address"); + } + multicastPort = readAttribute(jgroupsSocketBindingAddress, "multicast-port", Integer.class); + } catch (Exception e) { + throw new RuntimeException("Failed to lookup multicast address for socket binding [" + socketBinding + "]."); + } + + if (multicastHost != null && multicastPort != null) { + String multicastAddress = multicastHost + ":" + multicastPort; + MeasurementDataTrait data = new MeasurementDataTrait(request, multicastAddress); + report.addData(data); + } + } + } + private static class ComplexRequest { private String prop; private String sub; diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java index 3aaa542..50f994a 100644 --- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java +++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/BaseServerComponent.java @@ -186,6 +186,10 @@ public abstract class BaseServerComponent<T extends ResourceComponent<?>> extend return serverPluginConfig; }
+ public StartScriptConfiguration getStartScriptConfiguration() { + return startScriptConfig; + } + @Override public ASConnection getASConnection() { return connection; diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java index 945682c..d26f54e 100644 --- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java +++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/ManagedASComponent.java @@ -102,18 +102,14 @@ public class ManagedASComponent extends BaseComponent<HostControllerComponent<?> return super.getAvailability(); }
- public void getValues(MeasurementReport report, Set<MeasurementScheduleRequest> requests) throws Exception { - - Set<MeasurementScheduleRequest> leftovers = new HashSet<MeasurementScheduleRequest>(requests.size()); Set<MeasurementScheduleRequest> skmRequests = new HashSet<MeasurementScheduleRequest>(requests.size()); - for (MeasurementScheduleRequest req : requests) { - if (req.getName().startsWith("_skm:")) - skmRequests.add(req); - } + Set<MeasurementScheduleRequest> leftovers = new HashSet<MeasurementScheduleRequest>(requests.size());
for (MeasurementScheduleRequest request : requests) { - if (request.getName().equals("startTime")) { + if (request.getName().startsWith("_skm:")) { + skmRequests.add(request); + } else if (request.getName().equals("startTime")) { String path = getPath(); path = path.replace("server-config", "server"); Address address = new Address(path); @@ -127,10 +123,13 @@ public class ManagedASComponent extends BaseComponent<HostControllerComponent<?> MeasurementDataTrait data = new MeasurementDataTrait(request, new Date(startTime).toString()); report.addData(data); } - } else if (!request.getName().startsWith("_skm:")) { + } else if (request.getName().equals("multicastAddress")) { + collectMulticastAddressTrait(report, request); + } else { leftovers.add(request); } } + // Now handle the skm (this could go into a common method with BaseServerComponent's impl. if (skmRequests.size() > 0) { Address address = new Address(); @@ -169,6 +168,42 @@ public class ManagedASComponent extends BaseComponent<HostControllerComponent<?> }
@Override + protected Address getServerAddress() { + String serverConfigElement = getAddress().get(1); + String serverName = serverConfigElement.substring(serverConfigElement.indexOf('=') + 1); + Address serverAddress = getAddress().getParent(); + serverAddress.add("server", serverName); + return serverAddress; + } + + @Override + protected String getSocketBindingGroup() { + String socketBindingGroup; + try { + socketBindingGroup = readAttribute("socket-binding-group"); + } catch (Exception e) { + socketBindingGroup = null; + } + if (socketBindingGroup == null) { + String group; + try { + group = readAttribute("group"); + } catch (Exception e) { + group = null; + } + if (group != null) { + Address groupAddress = new Address("server-group", group); + try { + socketBindingGroup = readAttribute(groupAddress, "socket-binding-group"); + } catch (Exception e) { + // ignore + } + } + } + return socketBindingGroup; + } + + @Override public Configuration loadResourceConfiguration() throws Exception { Configuration configuration = super.loadResourceConfiguration();
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java index f024530..6eb19f6 100644 --- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java +++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java @@ -63,6 +63,8 @@ public class StandaloneASComponent<T extends ResourceComponent<?>> extends BaseS String requestName = request.getName(); if (requestName.equals(SERVER_CONFIG_TRAIT)) { collectConfigTrait(report, request); + } else if (requestName.equals("multicastAddress")) { + collectMulticastAddressTrait(report, request); } else { leftovers.add(request); // handled below } @@ -72,6 +74,17 @@ public class StandaloneASComponent<T extends ResourceComponent<?>> extends BaseS }
@Override + protected Address getServerAddress() { + return getAddress(); + } + + @Override + protected String getSocketBindingGroup() { + // TODO (ips): Can this ever be something other than "standard-sockets"? + return "standard-sockets"; + } + + @Override public OperationResult invokeOperation(String name, Configuration parameters) throws Exception { if (name.equals("start")) { diff --git a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml index c49a0ee..3c34e96 100644 --- a/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml +++ b/modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml @@ -905,6 +905,8 @@ <metric property="status" dataType="trait" displayName="Server state" description="Detailed server state" displayType="summary"/> <metric property="startTime" dataType="trait" displayName="Start time of the server" defaultOn="true"/> + <metric property="multicastAddress" displayName="JGroups Multicast Address" dataType="trait" displayType="summary" + description="the host and port used by JGroups for multicast"/>
<event name="logEntry" description="an entry in a log file"/>
@@ -1322,6 +1324,8 @@ displayType="summary"/> &serverKindMetrics; <metric property="startTime" dataType="trait" displayName="Server Start Time" defaultOn="true"/> + <metric property="multicastAddress" displayName="JGroups Multicast Address" dataType="trait" displayType="summary" + description="the host and port used by JGroups for multicast"/>
<metric property="config-file" dataType="trait" displayName="Server Config File" displayType="summary" defaultInterval="3600000" description="The name of the server configuration file this server is using"/>
rhq-commits@lists.fedorahosted.org