[rhq] modules/plugins
Heiko W. Rupp
pilhuhn at fedoraproject.org
Thu Aug 16 20:05:11 UTC 2012
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASComponent.java | 62 ++++++++++
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java | 7 -
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 7 -
3 files changed, 66 insertions(+), 10 deletions(-)
New commits:
commit 1ace95e35c4684847526df65f46e8ae4c559b92e
Author: Heiko W. Rupp <hwr at redhat.com>
Date: Thu Aug 16 16:03:47 2012 -0400
BZ 844217 - do not "hardcode" the deployment directory at discovery time, but make it a trait so that changes the user is making will be relected.
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 6eb19f6..573742e 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
@@ -18,7 +18,9 @@
*/
package org.rhq.modules.plugins.jbossas7;
+import java.io.File;
import java.util.HashSet;
+import java.util.Map;
import java.util.Set;
import org.jetbrains.annotations.NotNull;
@@ -27,6 +29,7 @@ import org.rhq.core.domain.configuration.Configuration;
import org.rhq.core.domain.configuration.Property;
import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
+import org.rhq.core.domain.measurement.MeasurementDataTrait;
import org.rhq.core.domain.measurement.MeasurementReport;
import org.rhq.core.domain.measurement.MeasurementScheduleRequest;
import org.rhq.core.pluginapi.configuration.ConfigurationUpdateReport;
@@ -37,6 +40,7 @@ import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.Operation;
import org.rhq.modules.plugins.jbossas7.json.ReadAttribute;
+import org.rhq.modules.plugins.jbossas7.json.ReadResource;
import org.rhq.modules.plugins.jbossas7.json.Result;
/**
@@ -65,6 +69,8 @@ public class StandaloneASComponent<T extends ResourceComponent<?>> extends BaseS
collectConfigTrait(report, request);
} else if (requestName.equals("multicastAddress")) {
collectMulticastAddressTrait(report, request);
+ } else if (requestName.equals("deployDir")) {
+ resolveDeployDir(report,request);
} else {
leftovers.add(request); // handled below
}
@@ -73,6 +79,62 @@ public class StandaloneASComponent<T extends ResourceComponent<?>> extends BaseS
super.getValues(report, leftovers);
}
+ /**
+ * Try to determine the deployment directory (usually $as/standalone/deployments ).
+ * For JDG we return fake data, as JDG does not have such a directory.
+ * @param report Measurement report to tack the value on
+ * @param request Measurement request with the schedule id to use
+ */
+ private void resolveDeployDir(MeasurementReport report, MeasurementScheduleRequest request) {
+
+ if ("JDG".equals(pluginConfiguration.getSimpleValue("productType","AS7"))) {
+ log.debug("This is a JDG server, so there is no deployDir");
+ MeasurementDataTrait trait = new MeasurementDataTrait(request,"- not applicable to JDG -");
+ report.addData(trait);
+ return;
+ }
+
+ // So we have an AS7/EAP6
+ Address scanner = new Address("subsystem=deployment-scanner,scanner=default");
+ ReadResource op = new ReadResource(scanner);
+ Result res = getASConnection().execute(op);
+ if (res.isSuccess()) {
+ Map<String,String> scannerMap = (Map<String, String>) res.getResult();
+ String path = scannerMap.get("path");
+ String relativeTo = scannerMap.get("relative-to");
+ File basePath = resolveRelativePath(relativeTo);
+
+ // It is safe to use File.separator, as the agent we are running in, will also lay down the plugins
+ String deployDir = new File(basePath, path).getAbsolutePath();
+
+ MeasurementDataTrait trait = new MeasurementDataTrait(request,deployDir);
+ report.addData(trait);
+ }
+ else {
+ log.error("No default deployment scanner was found, returning no value");
+ }
+ }
+
+ private File resolveRelativePath(String relativeTo) {
+
+ Address addr = new Address("path",relativeTo);
+ ReadResource op = new ReadResource(addr);
+ Result res = getASConnection().execute(op);
+ if (res.isSuccess()) {
+ Map<String,String> pathMap = (Map<String, String>) res.getResult();
+ String path = pathMap.get("path");
+ String relativeToProp = pathMap.get("relative-to");
+ if (relativeToProp==null)
+ return new File(path);
+ else {
+ File basePath = resolveRelativePath(relativeToProp);
+ return new File(basePath, path);
+ }
+ }
+ log.warn("The requested path property " + relativeTo + " is not registered in the server, so not resolving it.");
+ return new File(relativeTo);
+ }
+
@Override
protected Address getServerAddress() {
return getAddress();
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
index 9d93300..efa814d 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/StandaloneASDiscovery.java
@@ -84,13 +84,6 @@ public class StandaloneASDiscovery extends BaseProcessDiscovery {
DiscoveredResourceDetails resourceDetails = super.buildResourceDetails(discoveryContext, process, commandLine);
Configuration pluginConfig = resourceDetails.getPluginConfiguration();
- // Set deployment directory, which only exists for standalone servers
- String baseDir = pluginConfig.getSimpleValue("baseDir");
- if (baseDir != null) {
- File deployDir = new File(baseDir, "deployments");
- pluginConfig.put(new PropertySimple("deployDir", deployDir.getPath()));
- }
-
return resourceDetails;
}
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 638f542..8143d04 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
@@ -1164,7 +1164,6 @@
<c:simple-property name="baseDir" type="file" description="Base directory for server content" displayName="Base Directory" readOnly="true" required="false"/>
<c:simple-property name="configDir" type="file" description="Base configuration directory" displayName="Configuration Directory" readOnly="true" required="false"/>
<c:simple-property name="logDir" type="file" description="the directory where log files will be written for this server" displayName="Log Directory" readOnly="true" required="false"/>
- <c:simple-property name="deployDir" type="file" description="Deploy directory for standalone servers" displayName="Deployment directory" readOnly="true" required="false"/>
<c:simple-property name="productType" type="string" readOnly="true" required="false" description="Server product type (e.g. AS or EAP)"/>
&startScriptPluginConfigGroup;
@@ -1224,6 +1223,8 @@
<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"/>
+ <metric property="deployDir" dataType="trait" displayName="Deploy Directory" defaultInterval="600000" defaultOn="true"
+ description="The deployment directory for bundles (usually 'standalone/deployments'"/>
<event name="logEntry" description="an entry in a log file"/>
@@ -1321,14 +1322,14 @@
name="Template-Deploy Files"
description="Monitor standalone deployment dir for drift. ">
<basedir>
- <value-context>pluginConfiguration</value-context>
+ <value-context>measurementTrait</value-context>
<value-name>deployDir</value-name>
</basedir>
</drift-definition>
<bundle-target>
<destination-base-dir name="Deploy Directory" description="The deployment directory for a standalone server">
- <value-context>pluginConfiguration</value-context>
+ <value-context>measurementTrait</value-context>
<value-name>deployDir</value-name>
</destination-base-dir>
</bundle-target>
More information about the rhq-commits
mailing list