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 5 files changed, 139 insertions(+), 9 deletions(-)
New commits: commit 6eb0643d9d1e27376628048f564759cb87868487 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)
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 49dfc1d..ace2a35 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; @@ -744,6 +745,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 836393e..8b85deb 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 @@ -189,6 +189,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 4331fcc..d4d0141 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 @@ -921,6 +921,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"/>
@@ -1336,6 +1338,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