[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