[rhq] modules/plugins
by Heiko W. Rupp
modules/plugins/jboss-as-7/pom.xml | 2 +-
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java | 4 +++-
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java | 1 +
3 files changed, 5 insertions(+), 2 deletions(-)
New commits:
commit 14fc3e1c71e67517449dcbe6543327cee9ffddcb
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sat Dec 31 15:21:30 2011 +0100
Rollback jackson to 1.7.4, as 1.9.3 has a bug (JACKSON-744)
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index f39c296..8220355 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -16,7 +16,7 @@
<properties>
<json.version>${project.json.version}</json.version>
- <jackson.version>1.9.3</jackson.version>
+ <jackson.version>1.7.4</jackson.version>
<jboss.sasl.version>1.0.0.Beta9</jboss.sasl.version>
</properties>
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
index 11f823d..e895dd4 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
@@ -21,6 +21,7 @@ package org.rhq.modules.plugins.jbossas7;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
@@ -430,7 +431,8 @@ public class ConfigurationLoadingTest extends AbstractConfigurationHandlingTest
ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(definition,connection,null);
Configuration config = delegate.loadResourceConfiguration();
assert config!=null;
- assert config.getProperties().size()==5 : "Got " + config.getProperties().size() + " props instead of 5: " + config.getProperties().toString();
+ Collection<Property> properties = config.getProperties();
+ assert properties.size()==6 : "Got " + properties.size() + " props instead of 6: " + properties.toString();
PropertySimple simple = config.getSimple("check-interval");
assert simple !=null;
Integer integerValue = simple.getIntegerValue();
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 67f2243..2dcd49f 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -59,6 +59,7 @@ public class OperationJsonTest {
assert op!=null;
assert op.getOperation()!=null : "op.operation was null!";
assert op.getOperation().equals(operation.getOperation()) : "Operation is " + op.getOperation();
+ assert op.getName()!=null : "op.getName is null";
assert op.getName().equals("socket-binding") : "attribute name is " + op.getName() + " and not 'socket-binding'";
assert op.getValue().equals("jndi") : "attribute value is " + op.getValue();
assert op.getAddress().size()==2 : "Address did not contain 2 parts, but " + op.getAddress().size();
11 years, 11 months
[rhq] modules/core modules/enterprise
by Heiko W. Rupp
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java | 4
modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementDataNumeric.java | 5
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java | 36 +
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerLocal.java | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java | 200 +++++++++-
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java | 65 +++
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/NumericDataPoint.java | 65 +++
7 files changed, 360 insertions(+), 17 deletions(-)
New commits:
commit 685a93c8b98e796173e5830159b33aa8350676a0
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Fri Dec 30 17:02:00 2011 +0100
Support submission of (numerical) metrics into the server and retrieval of raw numeric values.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java
index d0d26ab..d22689f 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementData.java
@@ -82,6 +82,10 @@ public abstract class MeasurementData implements Serializable {
this.setName(request.getName());
}
+ protected MeasurementData(long timestamp, int scheduleId) {
+ this(new MeasurementDataPK(timestamp,scheduleId));
+ }
+
public int getScheduleId() {
return id.scheduleId;
}
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementDataNumeric.java b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementDataNumeric.java
index 4e82c43..d0bf41f 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementDataNumeric.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/measurement/MeasurementDataNumeric.java
@@ -59,6 +59,11 @@ public class MeasurementDataNumeric extends MeasurementData implements Serializa
this.rawNumericType = request.getRawNumericType();
}
+ public MeasurementDataNumeric(long collectionTime, int scheduleId,Double value) {
+ super(collectionTime,scheduleId);
+ this.value = value;
+ }
+
@Deprecated
// Have to make this protected so that people only use the constructor taking a request (so the name can be set for live values)
public MeasurementDataNumeric(MeasurementDataPK md, Double value) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java
index 7ffb8e1..7bb7c8f 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerBean.java
@@ -20,6 +20,7 @@ package org.rhq.enterprise.server.measurement;
import java.sql.Connection;
import java.sql.PreparedStatement;
+import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
@@ -176,9 +177,9 @@ public class MeasurementDataManagerBean implements MeasurementDataManagerLocal,
long start = System.currentTimeMillis();
// TODO GH: Deal with offset (this is only for situations where the clock doesn't match on the agent)
- /*
+ /*
* even if these methods check for null/empty collections, they cross the EJB boundary and so unnecessarily
- * start transactions. by checking the null/emptiness of a collection here, by only create transactions
+ * start transactions. by checking the null/emptiness of a collection here, by only create transactions
* when real work will be done;
*/
if (report.getNumericData() != null && !report.getNumericData().isEmpty()) {
@@ -799,6 +800,37 @@ public class MeasurementDataManagerBean implements MeasurementDataManagerLocal,
return values;
}
+ @Override
+ public List<MeasurementDataNumeric> findRawData(Subject subject, int scheduleId, long startTime, long endTime) {
+
+ List<MeasurementDataNumeric> result = new ArrayList<MeasurementDataNumeric>();
+ String table = MeasurementDataManagerUtility.getCurrentRawTable();
+ Connection connection = null;
+ PreparedStatement ps = null;
+ ResultSet rs = null;
+ try {
+ connection = rhqDs.getConnection();
+ ps = connection.prepareStatement( // TODO supply real impl that spans multiple tables
+ "SELECT time_stamp,value FROM " + table + " WHERE schedule_id= ? AND time_stamp BETWEEN ? AND ?");
+ ps.setLong(1,scheduleId);
+ ps.setLong(2,startTime);
+ ps.setLong(3,endTime);
+ rs = ps.executeQuery();
+
+ while (rs.next()) {
+ MeasurementDataNumeric point = new MeasurementDataNumeric(rs.getLong(1),scheduleId,rs.getDouble(2));
+ result.add(point);
+ }
+ } catch (SQLException e) {
+ e.printStackTrace(); // TODO: Customise this generated block
+ } finally {
+ JDBCUtil.safeClose(connection, ps, rs);
+ }
+
+
+ return result;
+ }
+
private List<MeasurementDataRequest> createRequests(List<MeasurementDefinition> definitions) {
List<MeasurementDataRequest> requests = new ArrayList<MeasurementDataRequest>();
for (MeasurementDefinition definition : definitions) {
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerLocal.java
index e80f16a..4ea8302 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/measurement/MeasurementDataManagerLocal.java
@@ -189,4 +189,6 @@ public interface MeasurementDataManagerLocal {
List<List<MeasurementDataNumericHighLowComposite>> findDataForResource(Subject subject, int resourceId,
int[] definitionIds, long beginTime, long endTime, int numPoints);
+
+ List<MeasurementDataNumeric> findRawData(Subject subject, int scheduleId, long startTime, long endTime);
}
\ No newline at end of file
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
index 99dd6fe..ba9785c 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerBean.java
@@ -18,18 +18,34 @@
*/
package org.rhq.enterprise.server.rest;
+import java.io.IOException;
+import java.io.OutputStream;
+import java.io.PrintWriter;
import java.net.URI;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.Date;
+import java.util.HashSet;
import java.util.List;
+import java.util.Set;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.interceptor.Interceptors;
+import javax.sql.DataSource;
+import javax.ws.rs.Consumes;
import javax.ws.rs.GET;
+import javax.ws.rs.POST;
+import javax.ws.rs.PUT;
import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
+import javax.ws.rs.WebApplicationException;
import javax.ws.rs.core.CacheControl;
import javax.ws.rs.core.Context;
import javax.ws.rs.core.EntityTag;
@@ -38,6 +54,7 @@ import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriBuilder;
import javax.ws.rs.core.UriInfo;
@@ -45,9 +62,13 @@ import org.jboss.cache.Fqn;
import org.rhq.core.domain.common.EntityContext;
import org.rhq.core.domain.measurement.DataType;
+import org.rhq.core.domain.measurement.MeasurementDataNumeric;
import org.rhq.core.domain.measurement.MeasurementDefinition;
import org.rhq.core.domain.measurement.MeasurementSchedule;
import org.rhq.core.domain.measurement.composite.MeasurementDataNumericHighLowComposite;
+import org.rhq.core.util.jdbc.JDBCUtil;
+import org.rhq.enterprise.server.RHQConstants;
+import org.rhq.enterprise.server.measurement.util.MeasurementDataManagerUtility;
import org.rhq.enterprise.server.resource.ResourceManagerLocal;
import org.rhq.enterprise.server.rest.domain.Link;
import org.rhq.enterprise.server.rest.domain.MetricAggregate;
@@ -55,6 +76,7 @@ import org.rhq.enterprise.server.measurement.MeasurementAggregate;
import org.rhq.enterprise.server.measurement.MeasurementDataManagerLocal;
import org.rhq.enterprise.server.measurement.MeasurementScheduleManagerLocal;
import org.rhq.enterprise.server.rest.domain.MetricSchedule;
+import org.rhq.enterprise.server.rest.domain.NumericDataPoint;
/**
* Deal with metrics
@@ -62,6 +84,7 @@ import org.rhq.enterprise.server.rest.domain.MetricSchedule;
*/
@Interceptors(SetCallerInterceptor.class)
@Stateless
+(a)javax.annotation.Resource(name = "RHQ_DS", mappedName = RHQConstants.DATASOURCE_JNDI_NAME)
public class MetricHandlerBean extends AbstractRestBean implements MetricHandlerLocal {
@EJB
@@ -71,6 +94,10 @@ public class MetricHandlerBean extends AbstractRestBean implements MetricHandle
@EJB
ResourceManagerLocal resMgr;
+ @javax.annotation.Resource(name = "RHQ_DS")
+ private DataSource rhqDs;
+
+
private static final long EIGHT_HOURS = 8 * 3600L * 1000L;
@Override
@@ -87,20 +114,7 @@ public class MetricHandlerBean extends AbstractRestBean implements MetricHandle
startTime = endTime - EIGHT_HOURS;
}
-
- MeasurementSchedule schedule;
- schedule = getFromCache(scheduleId,MeasurementSchedule.class);
- if (schedule==null) {
- schedule = scheduleManager.getScheduleById(caller,scheduleId);
- if (schedule==null) {
- throw new StuffNotFoundException("Schedule with id " + scheduleId);
- }
- else
- putToCache(scheduleId,MeasurementSchedule.class,schedule);
- }
-
- if (schedule.getDefinition().getDataType()!= DataType.MEASUREMENT)
- throw new IllegalArgumentException("Schedule [" + scheduleId + "] is not a (numerical) metric");
+ MeasurementSchedule schedule = obtainSchedule(scheduleId);
MeasurementAggregate aggr = dataManager.getAggregate(caller, scheduleId, startTime, endTime);
MetricAggregate res = new MetricAggregate(scheduleId, aggr.getMin(),aggr.getAvg(),aggr.getMax());
@@ -156,6 +170,28 @@ public class MetricHandlerBean extends AbstractRestBean implements MetricHandle
return builder.build();
}
+ /**
+ * Get the schedule for the passed schedule id
+ * @param scheduleId id to look up
+ * @return schedule
+ * @throws StuffNotFoundException if there is no schedule with the passed id
+ */
+ private MeasurementSchedule obtainSchedule(int scheduleId) {
+ MeasurementSchedule schedule;
+ schedule = getFromCache(scheduleId,MeasurementSchedule.class);
+ if (schedule==null) {
+ schedule = scheduleManager.getScheduleById(caller,scheduleId);
+ if (schedule==null) {
+ throw new StuffNotFoundException("Schedule with id " + scheduleId);
+ }
+ else
+ putToCache(scheduleId,MeasurementSchedule.class,schedule);
+ }
+
+ if (schedule.getDefinition().getDataType()!= DataType.MEASUREMENT)
+ throw new IllegalArgumentException("Schedule [" + scheduleId + "] is not a (numerical) metric");
+ return schedule;
+ }
private MetricAggregate fill(MetricAggregate res, List<MeasurementDataNumericHighLowComposite> list, int scheduleId,
boolean hideEmpty) {
long minTime=Long.MAX_VALUE;
@@ -180,7 +216,6 @@ public class MetricHandlerBean extends AbstractRestBean implements MetricHandle
return res;
}
- @Override
@GET
@Path("data")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML, MediaType.TEXT_HTML})
@@ -382,4 +417,139 @@ public class MetricHandlerBean extends AbstractRestBean implements MetricHandle
return Response.ok(ret,httpHeaders.getAcceptableMediaTypes().get(0)).build();
}
+
+ @GET
+ @Path("data/{scheduleId}/raw")
+ public StreamingOutput getMetricDataRaw(@PathParam("scheduleId") int scheduleId,
+ @QueryParam("startTime") long startTime,
+ @QueryParam("endTime") long endTime,
+ long duration,
+ Request request,
+ HttpHeaders headers) {
+
+
+ if (endTime==0)
+ endTime = System.currentTimeMillis();
+ if (startTime==0)
+ startTime = endTime - EIGHT_HOURS;
+ if (duration>0) // overrides start time
+ startTime = endTime - duration*1000L; // duration is in seconds
+
+ if (startTime < System.currentTimeMillis()-7L*86400*1000)
+ throw new IllegalArgumentException("Start time is older than 7 days");
+
+ // Check if the schedule exists
+ obtainSchedule(scheduleId);
+
+ RawNumericJsonStreamingOutput so = new RawNumericJsonStreamingOutput();
+ so.scheduleId = scheduleId;
+ so.startTime = startTime;
+ so.endTime = endTime;
+
+
+ return so;
+ }
+
+ @Override
+ @PUT
+ @Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ @Path("data/{scheduleId}/raw/{timeStamp}")
+ public Response putMetricValue(@PathParam("scheduleId") int scheduleId, @PathParam("timeStamp") long timestamp,
+ NumericDataPoint point, @Context HttpHeaders headers) {
+
+ MeasurementSchedule schedule = obtainSchedule(scheduleId);
+
+ Set<MeasurementDataNumeric> data = new HashSet<MeasurementDataNumeric>(1);
+ data.add(new MeasurementDataNumeric(point.getTimeStamp(),scheduleId,point.getValue()));
+
+ dataManager.addNumericData(data);
+
+ return Response.ok().build(); // TODO correct code?
+ }
+
+
+ @Override
+ @POST
+ @Path("data/raw")
+ @Consumes({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
+ public Response postMetricValues(Collection<NumericDataPoint> points, @Context HttpHeaders headers) {
+
+ Set<MeasurementDataNumeric> data = new HashSet<MeasurementDataNumeric>(points.size());
+ for (NumericDataPoint point : points) {
+ data.add(new MeasurementDataNumeric(point.getTimeStamp(), point.getScheduleId(),point.getValue()));
+ }
+
+ dataManager.addNumericData(data);
+
+ return Response.ok().build();
+
+ }
+
+ /**
+ * Write the numeric data points to the output stream in JSON encoding
+ * without creating tons of objects in the middle to have them marshalled
+ * by JAX-RS
+ */
+ private class RawNumericJsonStreamingOutput implements StreamingOutput {
+
+ int scheduleId;
+ long startTime;
+ long endTime;
+
+ @Override
+ public void write(OutputStream outputStream) throws IOException, WebApplicationException {
+
+ String[] tables = MeasurementDataManagerUtility.getTables(startTime,endTime);
+ StringBuilder sb = new StringBuilder();
+ for (int i = 0 ; i < tables.length ; i ++) {
+ sb.append("SELECT time_stamp,value FROM ");
+ sb.append(tables[i]);
+ sb.append(" WHERE schedule_id = ? AND time_stamp BETWEEN ? AND ?");
+ if (i < tables.length-1)
+ sb.append(" UNION ALL ");
+ }
+
+
+
+
+ Connection connection = null;
+ PreparedStatement ps = null;
+ ResultSet rs = null;
+ try {
+ connection = rhqDs.getConnection();
+ ps = connection.prepareStatement( sb.toString() );
+ for (int i = 0; i < tables.length ; i++) {
+ ps.setInt(i * 3 + 1, scheduleId);
+ ps.setLong(i*3+2,startTime);
+ ps.setLong(i*3+3,endTime);
+ }
+ rs = ps.executeQuery();
+
+ PrintWriter pw = new PrintWriter(outputStream);
+ pw.println("[");
+ while (rs.next()) {
+ pw.print("{");
+ pw.print("\"scheduleId\":");
+ pw.print(scheduleId);
+ pw.print(", ");
+ pw.print("\"timeStamp\":");
+ pw.print(rs.getLong(1));
+ pw.print(", ");
+ pw.print("\"value\":");
+ pw.print(rs.getLong(2));
+ pw.print("}");
+ if (!rs.isLast())
+ pw.print(",\n");
+ }
+ pw.println("]");
+ pw.flush();
+ pw.close();
+ } catch (SQLException e) {
+ log.error(e);
+ } finally {
+ JDBCUtil.safeClose(connection, ps, rs);
+ }
+ }
+ }
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
index 6631ef4..2c75a55 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/MetricHandlerLocal.java
@@ -18,12 +18,14 @@
*/
package org.rhq.enterprise.server.rest;
+import java.util.Collection;
import java.util.List;
import javax.ejb.Local;
import javax.ws.rs.Consumes;
import javax.ws.rs.DefaultValue;
import javax.ws.rs.GET;
+import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
@@ -34,10 +36,12 @@ import javax.ws.rs.core.HttpHeaders;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Request;
import javax.ws.rs.core.Response;
+import javax.ws.rs.core.StreamingOutput;
import javax.ws.rs.core.UriInfo;
import org.rhq.enterprise.server.rest.domain.MetricAggregate;
import org.rhq.enterprise.server.rest.domain.MetricSchedule;
+import org.rhq.enterprise.server.rest.domain.NumericDataPoint;
/**
* Deal with metrics
@@ -76,16 +80,77 @@ public interface MetricHandlerLocal {
@Path("data/resource/{resourceId}")
List<MetricAggregate> getAggregatesForResource(@PathParam("resourceId") int resourceId);
+ /**
+ * Get information about the schedule
+ * @param scheduleId id of the schedule
+ * @param request Injected request
+ * @param headers Injected http headers
+ * @param uriInfo Injected Uri
+ * @return the schedule
+ */
@GET
@Path("/schedule/{id}")
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML,MediaType.TEXT_HTML})
Response getSchedule(@PathParam("id") int scheduleId, @Context Request request, @Context HttpHeaders headers,
@Context UriInfo uriInfo);
+ /**
+ * Update a schedule. Currently change of collection interval and enabled/disabled state are supported.
+ * @param scheduleId Id of the schedule to update
+ * @param in Modified schedule object
+ * @param headers Injected http headers
+ * @return Result of updating
+ */
@PUT
@Path("/schedule/{id}")
@Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
@Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
Response updateSchedule(@PathParam("id") int scheduleId, MetricSchedule in,@Context HttpHeaders headers);
+ /**
+ * Expose the raw metrics for the given schedule
+ * @param scheduleId Schedule id
+ * @param startTime Start time, if 0 and duration=, start time = 8h before endTime
+ * @param endTime End time. If 0, now is used
+ * @param duration Duration in seconds. If duration=0, startTime is used
+ * @param request Injected Request headers
+ * @param headers Injected HttpHeaders
+ * @return a JSON encoded stream of numerical values
+ */
+ @GET
+ @Path("data/{scheduleId}/raw")
+ @Produces({MediaType.APPLICATION_JSON})
+ StreamingOutput getMetricDataRaw(@PathParam("scheduleId") int scheduleId,
+ @QueryParam("startTime") long startTime,
+ @QueryParam("endTime") long endTime,
+ @QueryParam("duration") long duration,
+ @Context Request request,
+ @Context HttpHeaders headers);
+
+ /**
+ * Submit a single (numerical) metric value to the server.
+ * @param scheduleId Id of the schedule to submit to
+ * @param timestamp Timestamp of the entry
+ * @param point Datapoint of class NumericDataPoint
+ * @param headers Injected HTTP headers
+ * @return
+ */
+ @PUT
+ @Produces({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ @Path("data/{scheduleId}/raw/{timeStamp}")
+ Response putMetricValue(@PathParam("scheduleId")int scheduleId,
+ @PathParam("timeStamp")long timestamp, NumericDataPoint point,
+ @Context HttpHeaders headers);
+
+ /**
+ * Submit a series of (numerical) metric values to the server
+ * @param points Collection of NumericDataPoint entries
+ * @param headers Injected HTTP headers
+ * @return
+ */
+ @POST
+ @Path("data/raw")
+ @Consumes({MediaType.APPLICATION_JSON,MediaType.APPLICATION_XML})
+ Response postMetricValues(Collection<NumericDataPoint> points, @Context HttpHeaders headers);
}
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/NumericDataPoint.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/NumericDataPoint.java
new file mode 100644
index 0000000..e1ef904
--- /dev/null
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/rest/domain/NumericDataPoint.java
@@ -0,0 +1,65 @@
+package org.rhq.enterprise.server.rest.domain;
+
+import javax.xml.bind.annotation.XmlAttribute;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * One numerical data point of a schedule.
+ * This point does not contain the schedule id, as it is expected
+ * to be used to return lists of data points for a schedule.
+ *
+ * Xml names for the item and the attributes are shortened to
+ * conserve space when transferring to clients
+ *
+ * @author Heiko W. Rupp
+ */
+@XmlRootElement
+public class NumericDataPoint {
+
+ long timeStamp;
+ Double value;
+ private int scheduleId;
+
+ @SuppressWarnings("unused")
+ public NumericDataPoint() {
+ // Needed for JAXB
+ }
+
+ public NumericDataPoint(long timeStamp, Double value) {
+ this.timeStamp = timeStamp;
+ this.value = value;
+ }
+
+ public NumericDataPoint(long timeStamp, int scheduleId, Double value) {
+ this.timeStamp = timeStamp;
+ this.scheduleId = scheduleId;
+ this.value = value;
+ }
+
+ @XmlAttribute
+ public long getTimeStamp() {
+ return timeStamp;
+ }
+
+ @XmlAttribute
+ public Double getValue() {
+ return value;
+ }
+
+ @XmlAttribute
+ public int getScheduleId() {
+ return scheduleId;
+ }
+
+ public void setScheduleId(int scheduleId) {
+ this.scheduleId = scheduleId;
+ }
+
+ public void setTimeStamp(long timeStamp) {
+ this.timeStamp = timeStamp;
+ }
+
+ public void setValue(Double value) {
+ this.value = value;
+ }
+}
11 years, 11 months
[rhq] modules/plugins
by Heiko W. Rupp
modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java | 2 ++
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java | 2 +-
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java | 2 +-
3 files changed, 4 insertions(+), 2 deletions(-)
New commits:
commit 14b81e5036bbbc47bb09fac2dc86b7166b1846fd
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Sun Dec 25 11:42:47 2011 +0100
Initialize additionalProperties; give more debug output when assert fails.
diff --git a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
index 0517ee1..23df1a5 100644
--- a/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
+++ b/modules/plugins/jboss-as-7/src/main/java/org/rhq/modules/plugins/jbossas7/json/Operation.java
@@ -47,10 +47,12 @@ public class Operation {
this.operation = operation;
this.address = new Address(addressKey,addressValue);
this._address = address.path;
+ additionalProperties = new HashMap<String, Object>();
}
public Operation(String operation, Address address) {
this.operation = operation;
+ additionalProperties = new HashMap<String, Object>();
if (address!=null && address.path!=null) {
this.address = address;
this._address = address.path;
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
index ef58967..11f823d 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
@@ -430,7 +430,7 @@ public class ConfigurationLoadingTest extends AbstractConfigurationHandlingTest
ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(definition,connection,null);
Configuration config = delegate.loadResourceConfiguration();
assert config!=null;
- assert config.getProperties().size()==5 : "Got " + config.getProperties().size() + " props instead of 5";
+ assert config.getProperties().size()==5 : "Got " + config.getProperties().size() + " props instead of 5: " + config.getProperties().toString();
PropertySimple simple = config.getSimple("check-interval");
assert simple !=null;
Integer integerValue = simple.getIntegerValue();
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
index 354ab8d..67f2243 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/OperationJsonTest.java
@@ -59,7 +59,7 @@ public class OperationJsonTest {
assert op!=null;
assert op.getOperation()!=null : "op.operation was null!";
assert op.getOperation().equals(operation.getOperation()) : "Operation is " + op.getOperation();
- assert op.getName().equals("socket-binding") : "attribute name is " + op.getName();
+ assert op.getName().equals("socket-binding") : "attribute name is " + op.getName() + " and not 'socket-binding'";
assert op.getValue().equals("jndi") : "attribute value is " + op.getValue();
assert op.getAddress().size()==2 : "Address did not contain 2 parts, but " + op.getAddress().size();
11 years, 11 months
[rhq] modules/enterprise
by Simeon Pinder
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java | 15 +++--
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java | 11 +++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java | 10 ++-
modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionView.java | 26 +++++-----
4 files changed, 40 insertions(+), 22 deletions(-)
New commits:
commit 894c2ec182b75d50ab0238a3a211966e517f939b
Author: Simeon Pinder <spinder(a)redhat.com>
Date: Thu Dec 22 17:57:02 2011 -0500
[BZ 767734] conditionally disabling remaining tags references from Bundles.
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
index 5ac460c..bbc4175 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/deployment/BundleDeploymentView.java
@@ -124,7 +124,11 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
+ deployment.getDestination().getName(), LinkManager.getBundleDestinationLink(version.getBundle().getId(),
deployment.getDestination().getId())));
addMember(new HeaderLabel(Canvas.getImgURL("subsystems/bundle/BundleDeployment_24.png"), deployment.getName()));
- addMember(createTagEditor());
+
+ //conditionally add tags. Defaults to true, not available in JON builds.
+ if (CoreGUI.isTagsEnabledForUI()) {
+ addMember(createTagEditor());
+ }
addMember(createSummaryForm());
addMemberDeploymentsTable();
@@ -219,8 +223,8 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
// deployment represents content on the remote machines, showing purge only for live
// deployments makes sense).
if (deployment.isLive()) {
- IButton revertButton = new LocatableIButton(actionLayout.extendLocatorId("Revert"), MSG
- .view_bundle_revert());
+ IButton revertButton = new LocatableIButton(actionLayout.extendLocatorId("Revert"),
+ MSG.view_bundle_revert());
revertButton.setIcon("subsystems/bundle/BundleAction_Revert_16.png");
revertButton.addClickHandler(new com.smartgwt.client.widgets.events.ClickHandler() {
public void onClick(com.smartgwt.client.widgets.events.ClickEvent event) {
@@ -252,8 +256,9 @@ public class BundleDeploymentView extends LocatableVLayout implements Bookmarkab
new Message(MSG.view_bundle_dest_purgeSuccessful(destinationName),
Message.Severity.Info));
// Bundle destination is purged, go back to bundle deployment view - it is not live anymore
- CoreGUI.goToView(LinkManager.getBundleDeploymentLink(bundle.getId(), deployment
- .getId()), true);
+ CoreGUI.goToView(
+ LinkManager.getBundleDeploymentLink(bundle.getId(), deployment.getId()),
+ true);
}
});
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
index 1e47427..d0966f2 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/destination/BundleDestinationView.java
@@ -101,7 +101,12 @@ public class BundleDestinationView extends LocatableVLayout implements Bookmarka
addMember(backButton);
addMember(header);
- addMember(createTagEditor());
+
+ //conditionally add tags. Defaults to true, not available in JON builds.
+ if (CoreGUI.isTagsEnabledForUI()) {
+ addMember(createTagEditor());
+ }
+
addMember(createSummaryForm());
addMember(createDeploymentsTable());
addMember(detail);
@@ -223,8 +228,8 @@ public class BundleDestinationView extends LocatableVLayout implements Bookmarka
new Message(MSG.view_bundle_dest_purgeSuccessful(destination.getName()),
Message.Severity.Info));
// Bundle destination is purged, go back to bundle destination view
- CoreGUI.goToView(LinkManager.getBundleDestinationLink(bundle.getId(), destination
- .getId()), true);
+ CoreGUI.goToView(
+ LinkManager.getBundleDestinationLink(bundle.getId(), destination.getId()), true);
}
});
}
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
index e8eabfa..7a39e5a 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/list/BundleView.java
@@ -108,7 +108,11 @@ public class BundleView extends LocatableVLayout implements BookmarkableView {
addMember(backButton);
addMember(headerLabel);
- addMember(createTagEditor());
+
+ //conditionally add tags. Defaults to true, not available in JON builds.
+ if (CoreGUI.isTagsEnabledForUI()) {
+ addMember(createTagEditor());
+ }
addMember(createSummaryForm());
addMember(tabs);
@@ -184,8 +188,8 @@ public class BundleView extends LocatableVLayout implements BookmarkableView {
StaticTextItem versionCountItem = new StaticTextItem("versionCount", MSG.view_bundle_list_versionsCount());
versionCountItem.setValue(bundle.getBundleVersions() != null ? bundle.getBundleVersions().size() : 0);
- StaticTextItem destinationsCountItem = new StaticTextItem("destinationsCount", MSG
- .view_bundle_list_destinationsCount());
+ StaticTextItem destinationsCountItem = new StaticTextItem("destinationsCount",
+ MSG.view_bundle_list_destinationsCount());
destinationsCountItem.setValue(bundle.getDestinations() != null ? bundle.getDestinations().size() : 0);
StaticTextItem descriptionItem = new StaticTextItem("description", MSG.common_title_description());
diff --git a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionView.java b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionView.java
index 19116bb..5737a9c 100644
--- a/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionView.java
+++ b/modules/enterprise/gui/coregui/src/main/java/org/rhq/enterprise/gui/coregui/client/bundle/version/BundleVersionView.java
@@ -93,7 +93,10 @@ public class BundleVersionView extends LocatableVLayout implements BookmarkableV
addMember(new HeaderLabel(Canvas.getImgURL("subsystems/bundle/BundleVersion_24.png"), version.getName() + ": "
+ version.getVersion()));
- addMember(createTagEditor());
+ //conditionally add tags. Defaults to true, not available in JON builds.
+ if (CoreGUI.isTagsEnabledForUI()) {
+ addMember(createTagEditor());
+ }
addMember(createSummaryForm());
@@ -268,16 +271,17 @@ public class BundleVersionView extends LocatableVLayout implements BookmarkableV
criteria.fetchConfigurationDefinition(true);
criteria.fetchTags(true);
- bundleManager.findBundleVersionsByCriteriaWithDestinationFilter(criteria, new AsyncCallback<PageList<BundleVersion>>() {
- public void onFailure(Throwable caught) {
- CoreGUI.getErrorHandler().handleError(MSG.view_bundle_version_loadFailure(), caught);
- }
+ bundleManager.findBundleVersionsByCriteriaWithDestinationFilter(criteria,
+ new AsyncCallback<PageList<BundleVersion>>() {
+ public void onFailure(Throwable caught) {
+ CoreGUI.getErrorHandler().handleError(MSG.view_bundle_version_loadFailure(), caught);
+ }
- public void onSuccess(PageList<BundleVersion> result) {
- BundleVersion version = result.get(0);
- ViewId nextPath = viewPath.next().getCurrent();
- viewBundleVersion(version, nextPath);
- }
- });
+ public void onSuccess(PageList<BundleVersion> result) {
+ BundleVersion version = result.get(0);
+ ViewId nextPath = viewPath.next().getCurrent();
+ viewBundleVersion(version, nextPath);
+ }
+ });
}
}
11 years, 11 months
[rhq] Branch 'stefan/backingcontent' - 2 commits - modules/core modules/enterprise
by snegrea
modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java | 2
modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java | 17 +-
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java | 57 +++++-----
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java | 4
modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml | 4
modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml | 7 -
modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml | 2
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java | 3
modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java | 2
9 files changed, 52 insertions(+), 46 deletions(-)
New commits:
commit c8a8e505db51c460edfdbf9ab72c5e8ac6e55f61
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu Dec 22 16:29:00 2011 -0600
[BZ 769986] The version field is no longer required when uploading a package. If the user types a version then the display version is used to capture that information.
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
index 2a08598..666cac8 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/CreateNewPackageUIBean.java
@@ -136,7 +136,7 @@ public class CreateNewPackageUIBean {
return response;
}
- public String createNewPackage(String packageName, String version, int architectureId, int packageTypeId) {
+ private String createNewPackage(String packageName, String displayVersion, int architectureId, int packageTypeId) {
// Collect the necessary information
Subject subject = EnterpriseFacesContextUtility.getSubject();
@@ -155,11 +155,6 @@ public class CreateNewPackageUIBean {
return null;
}
- if (version == null || version.trim().equals("")) {
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Package version must be specified");
- return null;
- }
-
if (repoOption == null) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
"A repository deployment option must be specified");
@@ -189,8 +184,8 @@ public class CreateNewPackageUIBean {
repoId = determineRepo(repoOption, subject, resource.getId());
} catch (ContentException ce) {
String errorMessages = ThrowableUtil.getAllMessages(ce);
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to determine repository. Cause: "
- + errorMessages);
+ FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR,
+ "Failed to determine repository. Cause: " + errorMessages);
return "failure";
}
} else {
@@ -199,7 +194,7 @@ public class CreateNewPackageUIBean {
repoId = FacesContextUtility.getRequiredRequestParameter("id");
}
}
-
+
try {
PackageVersion packageVersion = null;
try {
@@ -221,31 +216,38 @@ public class CreateNewPackageUIBean {
//store information about uploaded file for packageDetails as most of it is already available
Map<String, String> packageUploadDetails = new HashMap<String, String>();
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_SIZE, String.valueOf(fileItem.getFileSize()));
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_INSTALL_DATE, String.valueOf(System
- .currentTimeMillis()));
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_SIZE,
+ String.valueOf(fileItem.getFileSize()));
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_INSTALL_DATE,
+ String.valueOf(System.currentTimeMillis()));
packageUploadDetails.put(ContentManagerLocal.UPLOAD_OWNER, subject.getName());
packageUploadDetails.put(ContentManagerLocal.UPLOAD_FILE_NAME, fileItem.getFileName());
+ String sha = null;
+ String md5 = null;
try {//Easier to implement here than in server side bean. Shouldn't affect performance too much.
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_MD5, new MessageDigestGenerator(
- MessageDigestGenerator.MD5).calcDigestString(fileItem.getFile()));
- packageUploadDetails.put(ContentManagerLocal.UPLOAD_SHA256, new MessageDigestGenerator(
- MessageDigestGenerator.SHA_256).calcDigestString(fileItem.getFile()));
+ md5 = new MessageDigestGenerator(MessageDigestGenerator.MD5).calcDigestString(fileItem
+ .getFile());
+ sha = new MessageDigestGenerator(MessageDigestGenerator.SHA_256).calcDigestString(fileItem
+ .getFile());
} catch (IOException e1) {
log.warn("Error calculating file digest(s)", e1);
}
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_MD5, md5);
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_SHA256, sha);
+ packageUploadDetails.put(ContentManagerLocal.UPLOAD_DISPLAY_VERSION, displayVersion);
+
Integer iRepoId = usingARepo ? Integer.parseInt(repoId) : null;
packageVersion = contentManager.getUploadedPackageVersion(subject, packageName, packageTypeId,
- version, architectureId, packageStream, packageUploadDetails, iRepoId);
+ formatVersion(sha), architectureId, packageStream, packageUploadDetails, iRepoId);
} catch (NoResultException nre) {
//eat the exception. Some of the queries return no results if no package yet exists which is fine.
} catch (Exception e) {
String errorMessages = ThrowableUtil.getAllMessages(e);
- FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to create package [" + packageName
- + "] in repository. Cause: " + errorMessages);
+ FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Failed to create package ["
+ + packageName + "] in repository. Cause: " + errorMessages);
return "failure";
}
} finally {
@@ -258,7 +260,6 @@ public class CreateNewPackageUIBean {
return "failure";
}
-
int[] packageVersionList = new int[] { packageVersion.getId() };
// Put the package ID in the session so it can fit into the deploy existing package workflow
@@ -320,7 +321,7 @@ public class CreateNewPackageUIBean {
public SelectItem[] getPackageTypesWithResourceTypeNames() {
return getPackageTypes(true);
}
-
+
private SelectItem[] getPackageTypes(boolean includeResourceTypeResolution) {
Resource resource = EnterpriseFacesContextUtility.getResourceIfExists();
@@ -346,7 +347,7 @@ public class CreateNewPackageUIBean {
return items;
}
-
+
public SelectItem[] getSubscribedRepos() {
Resource resource = EnterpriseFacesContextUtility.getResource();
@@ -385,7 +386,7 @@ public class CreateNewPackageUIBean {
if (!isResourcePackage()) {
return true;
}
-
+
boolean isPackageBacked = isResourcePackageBacked();
boolean backingPackageExists = lookupBackingPackage() != null;
@@ -395,7 +396,7 @@ public class CreateNewPackageUIBean {
public boolean isResourcePackage() {
return EnterpriseFacesContextUtility.getResourceIfExists() != null;
}
-
+
public boolean isResourcePackageBacked() {
Resource resource = EnterpriseFacesContextUtility.getResource();
ResourceType resourceType = resource.getResourceType();
@@ -446,10 +447,10 @@ public class CreateNewPackageUIBean {
if (packageName != null) {
return packageName;
}
-
+
UploadNewPackageUIBean uploadUIBean = FacesContextUtility.getManagedBean(UploadNewPackageUIBean.class);
UploadItem fileItem = uploadUIBean.getFileItem();
-
+
return fileItem == null ? null : fileItem.getFileName();
}
@@ -540,4 +541,8 @@ public class CreateNewPackageUIBean {
return repoId;
}
+
+ private String formatVersion(String sha) {
+ return "[sha256=" + sha + "]";
+ }
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
index 2e7e95e..3fe6228 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/content/DeployPackagesUIBean.java
@@ -80,6 +80,8 @@ public class DeployPackagesUIBean extends PagedDataTableUIBean {
// Going forward, we'll need to create this earlier and store the user entered configuration in these
// objects. jdobies, Mar 3, 2008
+ // The following code is completely unnecessary as the package version ids are already
+ // stored in session.
ContentUIManagerLocal contentUIManager = LookupUtil.getContentUIManager();
int[] packagesVersionsIdsToDeploy = new int[packageIds.length];
for (int iterator = 0; iterator < packageIds.length; iterator++) {
@@ -92,7 +94,7 @@ public class DeployPackagesUIBean extends PagedDataTableUIBean {
try {
ContentManagerLocal contentManager = LookupUtil.getContentManager();
- contentManager.deployPackages(subject, new int[] { resource.getId() }, new int[] {}, notes);
+ contentManager.deployPackages(subject, new int[] { resource.getId() }, packagesVersionsIdsToDeploy, notes);
} catch (Exception e) {
FacesContextUtility.addMessage(FacesMessage.SEVERITY_ERROR, "Could not send deploy request to agent", e);
}
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
index b45e738..15c3f35 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/content/repo-plain.xhtml
@@ -688,10 +688,10 @@
<ui:remove><!-- row 3 --></ui:remove>
<h:panelGroup style="float: right">
- <b>Version <span class="required-marker-text">*</span></b>
+ <b>Version</b>
</h:panelGroup>
<h:panelGroup style="clear: both">
- <h:inputText id="initialVersion" value="#{CreateNewPackageUIBean.version}" required="true"/>
+ <h:inputText id="initialVersion" value="#{CreateNewPackageUIBean.version}"/>
<h:message for="initialVersion" styleClass="ValidationErrorText"/>
</h:panelGroup>
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
index dba508b..0b6c45b 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/create-plain.xhtml
@@ -89,19 +89,16 @@
<h:panelGrid columns="2">
<h:panelGroup style="float: right">
- <b>Version <span class="required-marker-text">*</span></b>
+ <b>Version</b>
</h:panelGroup>
<h:panelGroup style="clear: both">
- <h:inputText id="updateVersion" value="#{CreateNewPackageUIBean.version}" required="true"/>
- <h:message for="updateVersion" styleClass="ValidationErrorText"/>
+ <h:inputText id="updateVersion" value="#{CreateNewPackageUIBean.version}"/>
</h:panelGroup>
</h:panelGrid>
</rich:panel>
- <div class="note-panel"><span class="required-marker-text">*</span><span> denotes a required field.</span></div>
-
<rich:panel>
<f:facet name="header">Repository</f:facet>
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
index 29c3c85..5b03fd2 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerBean.java
@@ -1712,13 +1712,14 @@ public class ContentManagerBean implements ContentManagerLocal, ContentManagerRe
packageVersion.setFileSize(Long.valueOf(contentDetails.get(UPLOAD_FILE_SIZE)).longValue());
packageVersion.setSHA256(contentDetails.get(UPLOAD_SHA256));
-
+
//populate extra details, persist
if (packageUploadDetails != null) {
packageVersion.setFileCreatedDate(Long.valueOf(packageUploadDetails
.get(ContentManagerLocal.UPLOAD_FILE_INSTALL_DATE)));
packageVersion.setFileName(packageUploadDetails.get(ContentManagerLocal.UPLOAD_FILE_NAME));
packageVersion.setMD5(packageUploadDetails.get(ContentManagerLocal.UPLOAD_MD5));
+ packageVersion.setDisplayVersion(packageUploadDetails.get(ContentManagerLocal.UPLOAD_DISPLAY_VERSION));
}
entityManager.merge(packageVersion);
diff --git a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
index 1957091..566b4fc 100644
--- a/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
+++ b/modules/enterprise/server/jar/src/main/java/org/rhq/enterprise/server/content/ContentManagerLocal.java
@@ -76,6 +76,8 @@ public interface ContentManagerLocal {
public static final String UPLOAD_MD5 = "md5";
+ public static final String UPLOAD_DISPLAY_VERSION = "displayVersion";
+
/**
* This is currently ignored as the SHA is computed upon
* persist.
commit 2f99226848b0e2f2b213bda257379444de36a180
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Thu Dec 22 16:26:46 2011 -0600
[BZ 769986] Updated JSF content view to correctly display the version of packages.
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
index 2bfc04f..ba4eff0 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/InstalledPackage.java
@@ -53,7 +53,7 @@ import org.rhq.core.domain.resource.Resource;
@NamedQuery(name = InstalledPackage.QUERY_FIND_BY_RESOURCE_ID_AND_PKG_VER_ID, query = "SELECT ip FROM InstalledPackage AS ip WHERE ip.resource.id = :resourceId AND ip.packageVersion.id = :packageVersionId"),
@NamedQuery(name = InstalledPackage.QUERY_FIND_BY_RESOURCE_AND_PACKAGE, query = "SELECT ip FROM InstalledPackage AS ip WHERE ip.resource.id = :resourceId AND ip.packageVersion.generalPackage.id = :packageId "),
@NamedQuery(name = InstalledPackage.QUERY_FIND_BY_RESOURCE_AND_PACKAGE_VER, query = "SELECT ip FROM InstalledPackage AS ip WHERE ip.resource.id = :resourceId AND ip.packageVersion.id = :packageVersionId "),
- @NamedQuery(name = InstalledPackage.QUERY_FIND_PACKAGE_LIST_ITEM_COMPOSITE, query = "SELECT new org.rhq.core.domain.content.composite.PackageListItemComposite(ip.id, gp.name, pt.displayName, ip.packageVersion.version, ip.installationDate ) "
+ @NamedQuery(name = InstalledPackage.QUERY_FIND_PACKAGE_LIST_ITEM_COMPOSITE, query = "SELECT new org.rhq.core.domain.content.composite.PackageListItemComposite(ip.id, gp.name, pt.displayName, ip.packageVersion.version, ip.packageVersion.displayVersion, ip.installationDate ) "
+ " FROM InstalledPackage ip JOIN ip.resource res LEFT JOIN ip.packageVersion pv LEFT JOIN pv.generalPackage gp LEFT JOIN gp.packageType pt "
+ "WHERE res.id = :resourceId "
+ " AND (:packageTypeFilterId = pt.id OR :packageTypeFilterId is null) "
diff --git a/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java b/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
index 76e886e..e51d530 100644
--- a/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
+++ b/modules/core/domain/src/main/java/org/rhq/core/domain/content/composite/PackageListItemComposite.java
@@ -37,22 +37,17 @@ public class PackageListItemComposite implements Serializable {
private final String packageName;
private final String packageTypeName;
private final String version;
+ private final String displayVersion;
private final Long timestamp;
- public PackageListItemComposite(int id, String packageName, String packageTypeName, String version) {
- this.id = id;
- this.packageName = packageName;
- this.packageTypeName = packageTypeName;
- this.version = version;
- this.timestamp = null;
- }
-
- public PackageListItemComposite(int id, String packageName, String packageTypeName, String version, Long timestamp) {
+ public PackageListItemComposite(int id, String packageName, String packageTypeName, String version,
+ String displayVersion, Long timestamp) {
this.id = id;
this.packageName = packageName;
this.packageTypeName = packageTypeName;
this.version = version;
this.timestamp = timestamp;
+ this.displayVersion = displayVersion;
}
public int getId() {
@@ -71,6 +66,10 @@ public class PackageListItemComposite implements Serializable {
return version;
}
+ public String getDisplayVersion() {
+ return displayVersion;
+ }
+
public Long getTimestamp() {
return timestamp;
}
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
index 7ff59f3..bc551d1 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/rhq/resource/content/view-plain.xhtml
@@ -105,7 +105,7 @@
</onc:sortableColumnHeader>
</f:facet>
- <h:outputText value="#{item.version}"/>
+ <h:outputText value="#{ not empty item.displayVersion ? item.displayVersion : item.version }"/>
</rich:column>
<rich:column>
11 years, 11 months
[rhq] modules/enterprise
by mazz
modules/enterprise/gui/installer-war/src/main/webapp/header.jsp | 4
modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java | 58 ++++++++--
modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/web.xml | 9 +
3 files changed, 56 insertions(+), 15 deletions(-)
New commits:
commit ca7c3763fd627f0c26a8f6cfd48f3e929f64e2be
Author: John Mazzitelli <mazz(a)redhat.com>
Date: Thu Dec 22 15:58:36 2011 -0500
[BZ 759640] this also appears related to BZ 765670 - have the installer ping the startup servlet to know if the server is fully installed and ready
diff --git a/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp b/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
index 673b018..7c04d9d 100644
--- a/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
+++ b/modules/enterprise/gui/installer-war/src/main/webapp/header.jsp
@@ -20,7 +20,7 @@
<c:if test="<%= new ServerInformation().isFullyDeployed() && request.getRequestURI().indexOf("installer/start") == -1 %>">
<script type="text/javascript" language="JavaScript">
- var startPage = '/Dashboard.do';
+ var startPage = '/startupstatus';
var xmlRequest = false;
function doLoad()
@@ -49,7 +49,7 @@
}
xmlRequest.onreadystatechange = processStateChange;
- xmlRequest.open('GET', startPage, true);
+ xmlRequest.open('HEAD', startPage, true);
xmlRequest.send(null);
}
diff --git a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
index bc3942a..3add80f 100644
--- a/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
+++ b/modules/enterprise/gui/portal-war/src/main/java/org/rhq/enterprise/gui/startup/StartupServlet.java
@@ -18,6 +18,7 @@
*/
package org.rhq.enterprise.gui.startup;
+import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.sql.Connection;
@@ -31,6 +32,8 @@ import javax.management.MBeanServerInvocationHandler;
import javax.management.ObjectName;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
import javax.sql.DataSource;
import org.apache.commons.logging.Log;
@@ -44,7 +47,6 @@ import org.rhq.core.domain.auth.Subject;
import org.rhq.core.domain.cloud.Server;
import org.rhq.core.domain.cloud.Server.OperationMode;
import org.rhq.core.domain.common.ProductInfo;
-import org.rhq.core.domain.common.ServerDetails;
import org.rhq.core.domain.configuration.PropertyDynamicType;
import org.rhq.core.domain.resource.Agent;
import org.rhq.core.gui.configuration.helper.PropertyRenderingUtility;
@@ -65,7 +67,17 @@ import org.rhq.enterprise.server.plugin.pc.MasterServerPluginContainer;
import org.rhq.enterprise.server.plugin.pc.ServerPluginServiceManagement;
import org.rhq.enterprise.server.resource.ResourceTypeManagerLocal;
import org.rhq.enterprise.server.scheduler.SchedulerLocal;
-import org.rhq.enterprise.server.scheduler.jobs.*;
+import org.rhq.enterprise.server.scheduler.jobs.AsyncResourceDeleteJob;
+import org.rhq.enterprise.server.scheduler.jobs.CheckForSuspectedAgentsJob;
+import org.rhq.enterprise.server.scheduler.jobs.CheckForTimedOutConfigUpdatesJob;
+import org.rhq.enterprise.server.scheduler.jobs.CheckForTimedOutContentRequestsJob;
+import org.rhq.enterprise.server.scheduler.jobs.CheckForTimedOutOperationsJob;
+import org.rhq.enterprise.server.scheduler.jobs.CloudManagerJob;
+import org.rhq.enterprise.server.scheduler.jobs.DataPurgeJob;
+import org.rhq.enterprise.server.scheduler.jobs.DynaGroupAutoRecalculationJob;
+import org.rhq.enterprise.server.scheduler.jobs.PurgePluginsJob;
+import org.rhq.enterprise.server.scheduler.jobs.PurgeResourceTypesJob;
+import org.rhq.enterprise.server.scheduler.jobs.SavedSearchResultCountRecalculationJob;
import org.rhq.enterprise.server.util.LookupUtil;
import org.rhq.enterprise.server.util.concurrent.AlertSerializer;
import org.rhq.enterprise.server.util.concurrent.AvailabilityReportSerializer;
@@ -73,6 +85,8 @@ import org.rhq.enterprise.server.util.concurrent.AvailabilityReportSerializer;
/**
* This servlet is ensured to be initialized after the rest of the RHQ Server has been deployed and started.
* Specifically, we know that at {@link #init()} time, all EJBs have been deployed and available.
+ *
+ * This also accepts requests and responds with information regarding the state of the startup.
*/
public class StartupServlet extends HttpServlet {
@@ -80,6 +94,20 @@ public class StartupServlet extends HttpServlet {
private Log log = LogFactory.getLog(this.getClass());
+ private boolean initialized = false;
+
+ /**
+ * This merely returns an HTTP status code to indicate the status of the startup.
+ * Under normal conditions, this will always return a 200 status code.
+ */
+ @Override
+ protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ resp.setHeader("Cache-Control", "no-cache, no-store");
+ resp.setHeader("Expires", "-1");
+ resp.setHeader("Pragma", "no-cache");
+ resp.setStatus(initialized ? HttpServletResponse.SC_OK : HttpServletResponse.SC_SERVICE_UNAVAILABLE);
+ }
+
/**
* Performs the final RHQ Server initialization work that needs to talk place. EJBs are available in this method.
*
@@ -87,6 +115,8 @@ public class StartupServlet extends HttpServlet {
*/
@Override
public void init() throws ServletException {
+ initialized = false;
+
log.info("All business tier deployments are complete - finishing the startup...");
// As a security measure, make sure the installer has been undeployed
@@ -138,6 +168,7 @@ public class StartupServlet extends HttpServlet {
logServerStartedMessage();
+ initialized = true;
return;
}
@@ -339,8 +370,12 @@ public class StartupServlet extends HttpServlet {
try {
ServerCommunicationsServiceUtil.getService().startCommunicationServices();
- ServerCommunicationsServiceUtil.getService().getServiceContainer().addCommandListener(
- new ExternalizableStrategyCommandListener(org.rhq.core.server.ExternalizableStrategy.Subsystem.AGENT));
+ ServerCommunicationsServiceUtil
+ .getService()
+ .getServiceContainer()
+ .addCommandListener(
+ new ExternalizableStrategyCommandListener(
+ org.rhq.core.server.ExternalizableStrategy.Subsystem.AGENT));
} catch (Exception e) {
throw new ServletException("Cannot start the server-side communications services.", e);
}
@@ -574,19 +609,19 @@ public class StartupServlet extends HttpServlet {
Server server = LookupUtil.getServerManager().getServer();
if (agentAddress == null || agentAddress.trim().equals("")) {
- overrides.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_ADDRESS, server
- .getAddress());
+ overrides.setProperty(ServiceContainerConfigurationConstants.CONNECTOR_BIND_ADDRESS,
+ server.getAddress());
}
if (serverAddress == null || serverAddress.trim().equals("")) {
overrides.setProperty(AgentConfigurationConstants_SERVER_BIND_ADDRESS, server.getAddress());
}
if (serverPort == null || serverPort.trim().equals("")) {
if (SecurityUtil.isTransportSecure(serverTransport)) {
- overrides.setProperty(AgentConfigurationConstants_SERVER_BIND_PORT, Integer.toString(server
- .getSecurePort()));
+ overrides.setProperty(AgentConfigurationConstants_SERVER_BIND_PORT,
+ Integer.toString(server.getSecurePort()));
} else {
- overrides.setProperty(AgentConfigurationConstants_SERVER_BIND_PORT, Integer.toString(server
- .getPort()));
+ overrides.setProperty(AgentConfigurationConstants_SERVER_BIND_PORT,
+ Integer.toString(server.getPort()));
}
}
@@ -684,7 +719,8 @@ public class StartupServlet extends HttpServlet {
Subject overlord = LookupUtil.getSubjectManager().getOverlord();
ProductInfo productInfo = LookupUtil.getSystemManager().getProductInfo(overlord);
log.info("--------------------------------------------------"); // 50 dashes
- log.info(productInfo.getFullName() + " " + productInfo.getVersion() + " (build " + productInfo.getBuildNumber() + ") Server started.");
+ log.info(productInfo.getFullName() + " " + productInfo.getVersion() + " (build " + productInfo.getBuildNumber()
+ + ") Server started.");
log.info("--------------------------------------------------"); // 50 dashes
}
diff --git a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/web.xml b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/web.xml
index 1beef97..7528dd9 100644
--- a/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/web.xml
+++ b/modules/enterprise/gui/portal-war/src/main/webapp/WEB-INF/web.xml
@@ -457,13 +457,18 @@
<url-pattern>/client/download</url-pattern>
</servlet-mapping>
+ <!-- provides startup progress information (mainly for the installer) -->
+ <servlet-mapping>
+ <servlet-name>initializer</servlet-name>
+ <url-pattern>/startupstatus</url-pattern>
+ </servlet-mapping>
+
+ <!-- TODO what is this for? -->
<servlet-mapping>
<servlet-name>sessionAccess</servlet-name>
<url-pattern>/sessionAccess</url-pattern>
</servlet-mapping>
-
-
<!-- The download servlet; this URI /downloads will effectively look like its pointing to rhq-downloads -->
<servlet-mapping>
<servlet-name>DownloadServlet</servlet-name>
11 years, 11 months
[rhq] modules/integration-tests
by Heiko W. Rupp
modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/AbstractIntegrationTest.java | 6 ++++--
modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/UploadAndDeployTest.java | 8 ++++----
2 files changed, 8 insertions(+), 6 deletions(-)
New commits:
commit 41c87d1c7ed3f0719cee76067afb3e84c7644481
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Dec 21 21:29:45 2011 +0100
Fix compile errors.
diff --git a/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/AbstractIntegrationTest.java b/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/AbstractIntegrationTest.java
index fbf81b5..6714c40 100644
--- a/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/AbstractIntegrationTest.java
+++ b/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/AbstractIntegrationTest.java
@@ -57,9 +57,11 @@ import org.rhq.modules.plugins.jbossas7.json.PROPERTY_VALUE;
public abstract class AbstractIntegrationTest {
protected static final String DC_HOST = "localhost";
protected static final int DC_HTTP_PORT = 9990;
+ protected static final String DC_USER = "rhqadmin";
+ protected static final String DC_PASS = "rhqadmin";
String uploadToAs(String deploymentName) throws IOException {
- ASUploadConnection conn = new ASUploadConnection(DC_HOST, DC_HTTP_PORT);
+ ASUploadConnection conn = new ASUploadConnection(DC_HOST, DC_HTTP_PORT,DC_USER,DC_PASS);
OutputStream os = conn.getOutputStream(deploymentName);
@@ -92,7 +94,7 @@ public abstract class AbstractIntegrationTest {
}
ASConnection getASConnection() {
- ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT,DC_USER,DC_PASS);
return connection;
}
diff --git a/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/UploadAndDeployTest.java b/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/UploadAndDeployTest.java
index 9b35471..cc55f1c 100644
--- a/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/UploadAndDeployTest.java
+++ b/modules/integration-tests/jboss-as-7-plugin-test/src/test/java/org/rhq/modules/integrationTests/jbossas7plugin/UploadAndDeployTest.java
@@ -90,7 +90,7 @@ public class UploadAndDeployTest extends AbstractIntegrationTest {
System.out.println("sha: " + bytes_value);
System.out.println();
- ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT,DC_USER,DC_PASS);
Address deploymentsAddress = new Address("deployment", TEST_WAR);
Operation op = new Operation("add",deploymentsAddress);
@@ -168,7 +168,7 @@ public class UploadAndDeployTest extends AbstractIntegrationTest {
System.out.println("sha: " + bytes_value);
System.out.println();
- ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT,DC_USER,DC_PASS);
/*
Address deploymentsAddress = new Address();
@@ -275,7 +275,7 @@ public class UploadAndDeployTest extends AbstractIntegrationTest {
cop.addStep(step2a);
- ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT,DC_USER,DC_PASS);
JsonNode ret = connection.executeRaw(cop);
System.out.println(ret);
System.out.flush();
@@ -326,7 +326,7 @@ public class UploadAndDeployTest extends AbstractIntegrationTest {
cop.addStep(step1);
- ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT);
+ ASConnection connection = new ASConnection(DC_HOST, DC_HTTP_PORT,DC_USER,DC_PASS);
JsonNode ret = connection.executeRaw(cop);
System.out.println(ret);
System.out.flush();
11 years, 11 months
[rhq] Branch 'stefan/backingcontent' - 2 commits - modules/plugins
by snegrea
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java | 19 ++++++++++
modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java | 17 ++++++++
modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/ApplicationComponent.java | 19 ++++++++++
modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/util/JarContentDelegate.java | 16 ++++++++
4 files changed, 71 insertions(+)
New commits:
commit a24c60686a9a5aef505e864745d667d5c149d9b9
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed Dec 21 11:36:07 2011 -0600
[BZ 767393] Update JBoss AS5 plugin to use display version for manifest versions.
diff --git a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
index a8eba4d..7d51d3f 100644
--- a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
+++ b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/StandaloneManagedDeploymentComponent.java
@@ -60,6 +60,8 @@ import org.rhq.core.pluginapi.inventory.DeleteResourceFacet;
import org.rhq.core.pluginapi.measurement.MeasurementFacet;
import org.rhq.core.util.ZipUtil;
import org.rhq.core.util.exception.ThrowableUtil;
+import org.rhq.core.util.file.ContentFileInfo;
+import org.rhq.core.util.file.JarContentFileInfo;
import org.rhq.plugins.jbossas5.util.DeploymentUtils;
import org.rhq.plugins.jbossas5.util.FileContentDelegate;
@@ -145,6 +147,8 @@ public class StandaloneManagedDeploymentComponent extends AbstractManagedDeploym
String fileName = this.deploymentFile.getName();
String sha256 = getSHA256(this.deploymentFile);
String version = getVersion(sha256);
+ String displayVersion = getDisplayVersion(deploymentFile);
+
// Package name is the deployment's file name (e.g. foo.ear).
PackageDetailsKey key = new PackageDetailsKey(fileName, version, PKG_TYPE_FILE, ARCHITECTURE);
ResourcePackageDetails packageDetails = new ResourcePackageDetails(key);
@@ -155,6 +159,7 @@ public class StandaloneManagedDeploymentComponent extends AbstractManagedDeploym
packageDetails.setFileCreatedDate(null); // TODO: get created date via SIGAR
packageDetails.setSHA256(sha256);
packageDetails.setInstallationTimestamp(Long.valueOf(System.currentTimeMillis()));
+ packageDetails.setDisplayVersion(displayVersion);
Set<ResourcePackageDetails> packages = new HashSet<ResourcePackageDetails>();
packages.add(packageDetails);
@@ -187,6 +192,20 @@ public class StandaloneManagedDeploymentComponent extends AbstractManagedDeploym
return "[sha256=" + sha256 + "]";
}
+ /**
+ * Retrieve the display version for the component. The display version should be stored
+ * in the manifest of the application (implementation and/or specification version).
+ * It will attempt to retrieve the version for both archived or exploded deployments.
+ *
+ * @param file component file
+ * @return
+ */
+ private String getDisplayVersion(File file) {
+ //JarContentFileInfo extracts the version from archived and exploded deployments
+ ContentFileInfo contentFileInfo = new JarContentFileInfo(file);
+ return contentFileInfo.getVersion(null);
+ }
+
public RemovePackagesResponse removePackages(Set<ResourcePackageDetails> packages) {
throw new UnsupportedOperationException("Cannot remove the package backing an EAR/WAR resource.");
}
diff --git a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
index 3bb920a..da4ba86 100644
--- a/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
+++ b/modules/plugins/jboss-as-5/src/main/java/org/rhq/plugins/jbossas5/util/JarContentDelegate.java
@@ -36,6 +36,8 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.util.MessageDigestGenerator;
+import org.rhq.core.util.file.ContentFileInfo;
+import org.rhq.core.util.file.JarContentFileInfo;
/**
* Discovers Jar files as artifacts including loading their manifest version into the artifact config.
@@ -123,6 +125,7 @@ public class JarContentDelegate extends FileContentDelegate {
details.setFileSize(file.length());
details.setClassification(MIME_TYPE_JAR);
details.setSHA256(sha256);
+ details.setDisplayVersion(getDisplayVersion(file));
details.setExtraProperties(config);
} catch (IOException e) {
@@ -143,4 +146,18 @@ public class JarContentDelegate extends FileContentDelegate {
private String getVersion(String sha256) {
return "[sha256=" + sha256 + "]";
}
+
+ /**
+ * Retrieve the display version for the component. The display version should be stored
+ * in the manifest of the application (implementation and/or specification version).
+ * It will attempt to retrieve the version for both archived or exploded deployments.
+ *
+ * @param file component file
+ * @return
+ */
+ private String getDisplayVersion(File file) {
+ //JarContentFileInfo extracts the version from archived and exploded deployments
+ ContentFileInfo contentFileInfo = new JarContentFileInfo(file);
+ return contentFileInfo.getVersion(null);
+ }
}
commit 14352ceb1fb5468dd4718592fb7facd72693dac7
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed Dec 21 11:20:58 2011 -0600
[BZ 767247] Update JBoss AS4 plugin to use display version for manifest set version.
diff --git a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/ApplicationComponent.java b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/ApplicationComponent.java
index bf7e925..b2e0185 100644
--- a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/ApplicationComponent.java
+++ b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/ApplicationComponent.java
@@ -54,6 +54,8 @@ import org.rhq.core.pluginapi.operation.OperationResult;
import org.rhq.core.pluginapi.util.FileUtils;
import org.rhq.core.util.ZipUtil;
import org.rhq.core.util.exception.ThrowableUtil;
+import org.rhq.core.util.file.ContentFileInfo;
+import org.rhq.core.util.file.JarContentFileInfo;
import org.rhq.plugins.jbossas.helper.MainDeployer;
import org.rhq.plugins.jbossas.util.FileContentDelegate;
import org.rhq.plugins.jmx.MBeanResourceComponent;
@@ -129,6 +131,8 @@ public class ApplicationComponent extends MBeanResourceComponent<JBossASServerCo
String sha256 = getSHA256(file);
String version = getVersion(sha256);
+ String displayVersion = getDisplayVersion(file);
+
PackageDetailsKey key = new PackageDetailsKey(fileName, version, PKG_TYPE_FILE, ARCHITECTURE);
ResourcePackageDetails details = new ResourcePackageDetails(key);
details.setFileName(fileName);
@@ -139,6 +143,7 @@ public class ApplicationComponent extends MBeanResourceComponent<JBossASServerCo
details.setFileCreatedDate(file.lastModified()); // TODO: get created date via SIGAR
details.setSHA256(sha256);
details.setInstallationTimestamp(Long.valueOf(System.currentTimeMillis()));
+ details.setDisplayVersion(displayVersion);
packages.add(details);
}
@@ -167,6 +172,20 @@ public class ApplicationComponent extends MBeanResourceComponent<JBossASServerCo
return "[sha256=" + sha256 + "]";
}
+ /**
+ * Retrieve the display version for the component. The display version should be stored
+ * in the manifest of the application (implementation and/or specification version).
+ * It will attempt to retrieve the version for both archived or exploded deployments.
+ *
+ * @param file component file
+ * @return
+ */
+ private String getDisplayVersion(File file) {
+ //JarContentFileInfo extracts the version from archived and exploded deployments
+ ContentFileInfo contentFileInfo = new JarContentFileInfo(file);
+ return contentFileInfo.getVersion(null);
+ }
+
public RemovePackagesResponse removePackages(Set<ResourcePackageDetails> packages) {
throw new UnsupportedOperationException("Cannot remove the package backing an EAR/WAR resource.");
}
diff --git a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/util/JarContentDelegate.java b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/util/JarContentDelegate.java
index 9dd080e..33a2f02 100644
--- a/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/util/JarContentDelegate.java
+++ b/modules/plugins/jboss-as/src/main/java/org/rhq/plugins/jbossas/util/JarContentDelegate.java
@@ -36,6 +36,8 @@ import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.content.PackageDetailsKey;
import org.rhq.core.domain.content.transfer.ResourcePackageDetails;
import org.rhq.core.util.MessageDigestGenerator;
+import org.rhq.core.util.file.ContentFileInfo;
+import org.rhq.core.util.file.JarContentFileInfo;
/**
* Discovers Jar files as artifacts including loading their manifest version into the artifact config.
@@ -121,6 +123,7 @@ public class JarContentDelegate extends FileContentDelegate {
details.setFileSize(file.length());
details.setClassification(MIME_TYPE_JAR);
details.setSHA256(sha256);
+ details.setDisplayVersion(getDisplayVersion(file));
details.setExtraProperties(config);
} catch (IOException e) {
@@ -142,4 +145,17 @@ public class JarContentDelegate extends FileContentDelegate {
return "[sha256=" + sha256 + "]";
}
+ /**
+ * Retrieve the display version for the component. The display version should be stored
+ * in the manifest of the application (implementation and/or specification version).
+ * It will attempt to retrieve the version for both archived or exploded deployments.
+ *
+ * @param file component file
+ * @return
+ */
+ private String getDisplayVersion(File file) {
+ //JarContentFileInfo extracts the version from archived and exploded deployments
+ ContentFileInfo contentFileInfo = new JarContentFileInfo(file);
+ return contentFileInfo.getVersion(null);
+ }
}
\ No newline at end of file
11 years, 11 months
[rhq] 2 commits - modules/enterprise modules/plugins
by Heiko W. Rupp
modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt | 17 +
modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceManagerBeanTest.java | 93 +++++++++-
modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpSender.java | 16 +
modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpTrapSender.java | 4
modules/plugins/jboss-as-7/pom.xml | 2
modules/plugins/jboss-as-7/src/main/resources/META-INF/rhq-plugin.xml | 2
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java | 27 ++
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java | 45 ++++
modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java | 61 +++++-
modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml | 15 +
modules/plugins/jboss-as-7/src/test/resources/web.json | 62 ++++++
11 files changed, 328 insertions(+), 16 deletions(-)
New commits:
commit 47086c02a2ed841262811c5a9ac1b92e22e7368d
Author: Mohamed Hamza Ben Mansour <>
Date: Wed Dec 21 18:19:37 2011 +0100
BZ 744262 - add resource lineage to SNMP traps.
diff --git a/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt b/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
index 61fdb09..20bb110 100644
--- a/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
+++ b/modules/enterprise/server/container/src/main/resources/etc/RHQ-mib.txt
@@ -11,14 +11,14 @@ IMPORTS
FROM SNMPv2-TC;
rhqMIB MODULE-IDENTITY
- LAST-UPDATED "201010180000Z"
+ LAST-UPDATED "201112200000Z"
ORGANIZATION "RHQ-Project"
CONTACT-INFO "http://www.rhq-project.org/"
DESCRIPTION
"The MIB module for RHQ alerts.
This file is part of the RHQ management platform
- Copyright (C) 2005-2010 Red Hat, Inc.
+ Copyright (C) 2005-2011 Red Hat, Inc.
All rights reserved.
"
@@ -26,6 +26,8 @@ rhqMIB MODULE-IDENTITY
DESCRIPTION "Initial version"
REVISION "201010180000Z"
DESCRIPTION "Better trap support"
+ REVISION "201112200000Z"
+ DESCRIPTION "Also emit resource lineage"
::= { snmpModules 1 }
jboss OBJECT IDENTIFIER ::= {enterprises 18016 }
@@ -85,6 +87,14 @@ alertUrl OBJECT-TYPE
"The url of the individual alert"
::= { alert 6 }
+alertHierarchy OBJECT-TYPE
+ SYNTAX DisplayString (SIZE (0..1024))
+ MAX-ACCESS read-only
+ STATUS current
+ DESCRIPTION
+ "The hierarchy of the resource that triggered the alert"
+ ::= { alert 6 }
+
-- conformance information
snmpMIBConformance
@@ -110,7 +120,8 @@ alertGroup OBJECT-GROUP
alertPlatformName,
alertCondition,
alertSeverity,
- alertUrl }
+ alertUrl,
+ alertHierarchy }
STATUS current
DESCRIPTION "A collection of objects providing information about an alert"
::= { snmpMIBGroups 1 }
diff --git a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceManagerBeanTest.java b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceManagerBeanTest.java
index 664be6d..3e753f0 100644
--- a/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceManagerBeanTest.java
+++ b/modules/enterprise/server/jar/src/test/java/org/rhq/enterprise/server/resource/test/ResourceManagerBeanTest.java
@@ -22,6 +22,8 @@ import java.util.List;
import java.util.Random;
import javax.persistence.EntityManager;
+import javax.transaction.NotSupportedException;
+import javax.transaction.SystemException;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeMethod;
@@ -110,6 +112,95 @@ public class ResourceManagerBeanTest extends UpdatePluginMetadataTestBase {
assert errors.size() == 0;
}
+
+ public void testResourceLineage() throws Exception {
+ // given a resource id for the leaf resource in a resource hierachy
+ int leafResourceId = givenASampleResourceHierarchy();
+
+ // when
+ List<Resource> resourceLineage = resourceManager.getResourceLineage(leafResourceId);
+
+ // then
+ StringBuilder stringBuilder = new StringBuilder();
+ for (Resource resource : resourceLineage) {
+ stringBuilder.append(resource.getName());
+ if (resourceLineage.indexOf(resource) != resourceLineage.size() - 1) {
+ stringBuilder.append("::");
+ }
+ }
+ System.err.println(stringBuilder.toString());
+
+ }
+
+ private int givenASampleResourceHierarchy() throws NotSupportedException,
+ SystemException {
+ getTransactionManager().begin();
+ EntityManager em = getEntityManager();
+ int leafResoureId = 0;
+ try {
+ ResourceType platformType = createResourceType(em, "platform"
+ + System.currentTimeMillis(), "test", null,
+ ResourceCategory.PLATFORM);
+ ResourceType appserverType = createResourceType(em, "jboss AS 5"
+ + System.currentTimeMillis(), "jbossas5", platformType,
+ ResourceCategory.SERVER);
+ ResourceType jvmType = createResourceType(em,
+ "JVM" + System.currentTimeMillis(), "jbossas5",
+ appserverType, ResourceCategory.SERVICE);
+ ResourceType memType = createResourceType(em, "Memory Subsystem"
+ + System.currentTimeMillis(), "jbossas5", jvmType,
+ ResourceCategory.SERVICE);
+ Agent agent = new Agent("hamza007", "hamzahost", 1, "", "hamzatoken");
+ em.persist(agent);
+ em.flush();
+
+ Resource platform = createResource(em, platformType, agent,
+ "platformKey" + System.currentTimeMillis(),
+ "host.dev.corp", null);
+ Resource appserver = createResource(em, appserverType, agent,
+ "JEAP" + System.currentTimeMillis(), "JBOSS EAP 5.1.1",
+ platform);
+ Resource jvm = createResource(em, memType, agent, "jvm"
+ + System.currentTimeMillis(), "JBoss AS JVM", appserver);
+ Resource memSubystem = createResource(em, appserverType, agent,
+ "mem" + System.currentTimeMillis(), "Memory Subsystem", jvm);
+ leafResoureId = memSubystem.getId();
+ getTransactionManager().commit();
+ } catch (Exception e) {
+ try {
+ System.out.println("CANNOT Prepare TEST: Cause: " + e);
+ getTransactionManager().rollback();
+ } catch (Exception ignore) {
+ }
+ } finally {
+ em.close();
+ }
+ return leafResoureId;
+ }
+
+ private Resource createResource(EntityManager em, ResourceType platformType,
+ Agent agent, String resourceKey, String resourceName,
+ Resource parent) {
+ Resource resource = new Resource(resourceKey, resourceName, platformType);
+ resource.setUuid("" + new Random().nextInt());
+ resource.setAgent(agent);
+ resource.setParentResource(parent);
+ em.persist(resource);
+ return resource;
+ }
+
+
+ private ResourceType createResourceType(EntityManager em, String name,
+ String pluginName, ResourceType parentResourceType,
+ ResourceCategory resourceCategory) {
+ ResourceType platformType = new ResourceType(name, pluginName,
+ resourceCategory, parentResourceType);
+ ResourceType resourceType = platformType;
+ em.persist(resourceType);
+ return resourceType;
+ }
+
+
private Resource createNewResourceWithNewType() throws Exception {
getTransactionManager().begin();
EntityManager em = getEntityManager();
@@ -173,4 +264,4 @@ public class ResourceManagerBeanTest extends UpdatePluginMetadataTestBase {
}
}
}
-}
\ No newline at end of file
+}
diff --git a/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpSender.java b/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpSender.java
index 627e23d..1ea5e0b 100644
--- a/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpSender.java
+++ b/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpSender.java
@@ -60,16 +60,30 @@ public class SnmpSender extends AlertSender {
String platformName = lineage.get(0).getName();
String conditions = alertManager.prettyPrintAlertConditions(alert, false);
String alertUrl = alertManager.prettyPrintAlertURL(alert);
+
+
+ String hierarchy = getResourceHierarchyAsString(lineage);
Date bootTime = new Date(); // TODO: want to use LookupUtil.getCoreServer().getBootTime() but ServiceMBean is not visible
String result = snmpTrapSender.sendSnmpTrap(alert, alertParameters, platformName, conditions, bootTime,
- alertUrl);
+ alertUrl, hierarchy);
return SenderResult.getSimpleSuccess(result);
} catch (Throwable t) {
return SenderResult.getSimpleFailure("failed - cause: " + t);
}
}
+ private String getResourceHierarchyAsString(List<Resource> lineage) {
+ StringBuilder stringBuilder = new StringBuilder();
+ for (Resource resource : lineage) {
+ stringBuilder.append(resource.getName());
+ if (lineage.indexOf(resource) != lineage.size() - 1) {
+ stringBuilder.append("::");
+ }
+ }
+ return stringBuilder.toString();
+ }
+
@Override
public String previewConfiguration() {
SnmpInfo info = SnmpInfo.load(alertParameters);
diff --git a/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpTrapSender.java b/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpTrapSender.java
index ba4bf84..53bfd85 100644
--- a/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpTrapSender.java
+++ b/modules/enterprise/server/plugins/alert-snmp/src/main/java/org/rhq/enterprise/server/plugins/alertSnmp/SnmpTrapSender.java
@@ -464,7 +464,7 @@ public class SnmpTrapSender implements PDUFactory {
* @return 'Error code' of the operation
*/
public String sendSnmpTrap(Alert alert, Configuration alertParameters, String platformName, String conditions,
- Date bootTime, String alertUrl) {
+ Date bootTime, String alertUrl, String hierarchy) {
if (!this.snmpEnabled) {
return "SNMP is not enabled.";
}
@@ -486,6 +486,8 @@ public class SnmpTrapSender implements PDUFactory {
getVariableBindings(baseOid + ".5" + "={s}" + alert.getAlertDefinition().getPriority().toString().toLowerCase());
// url of the alert detail
getVariableBindings(baseOid + ".6" + "={s}" + alertUrl);
+ // hierarchy of the resource on alert
+ getVariableBindings(baseOid + ".7" + "={s}" + hierarchy);
setSysUpTimeFromBootTime(bootTime); // needs to be called before checkTrapVariables();
checkTrapVariables(this.vbs);
commit 470dc5a6f40012d3632fef4f07c3b3c6f5951016
Author: Heiko W. Rupp <hwr(a)redhat.com>
Date: Wed Dec 21 12:10:54 2011 +0100
Add tests for child:key=value groups in config. Also update Jackson.
diff --git a/modules/plugins/jboss-as-7/pom.xml b/modules/plugins/jboss-as-7/pom.xml
index 8220355..f39c296 100644
--- a/modules/plugins/jboss-as-7/pom.xml
+++ b/modules/plugins/jboss-as-7/pom.xml
@@ -16,7 +16,7 @@
<properties>
<json.version>${project.json.version}</json.version>
- <jackson.version>1.7.4</jackson.version>
+ <jackson.version>1.9.3</jackson.version>
<jboss.sasl.version>1.0.0.Beta9</jboss.sasl.version>
</properties>
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 ee6b902..7e88906 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
@@ -765,7 +765,7 @@
<c:simple-property name="mapped-file" required="false" type="boolean" defaultValue="true"
description="Map to the JSP source."/>
<c:simple-property name="check-interval" required="false" type="integer" defaultValue="60"
- description="Check interval for JSP updates using a background thread."/> <!-- TODO revisit default when https://issues.jboss.org/browse/AS7-3098 is fixed -->
+ description="Check interval in seconds for JSP updates using a background thread."/> <!-- TODO revisit default when https://issues.jboss.org/browse/AS7-3098 is fixed -->
<c:simple-property name="modification-test-interval" required="false" type="integer" defaultValue="4"
description="Minimum amount of time between two tests for updates, in seconds."/>
<c:simple-property name="recompile-on-fail" required="false" type="boolean" defaultValue="false"
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
index 0266071..e1627e3 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/AbstractConfigurationHandlingTest.java
@@ -28,6 +28,8 @@ import javax.xml.bind.util.ValidationEventCollector;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.codehaus.jackson.JsonNode;
+import org.codehaus.jackson.map.ObjectMapper;
+import org.codehaus.jackson.node.ObjectNode;
import org.rhq.core.clientapi.agent.metadata.ConfigurationMetadataParser;
import org.rhq.core.clientapi.agent.metadata.InvalidPluginDescriptorException;
@@ -35,6 +37,7 @@ import org.rhq.core.clientapi.descriptor.DescriptorPackages;
import org.rhq.core.clientapi.descriptor.plugin.PluginDescriptor;
import org.rhq.core.clientapi.descriptor.plugin.ServerDescriptor;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.Operation;
/**
@@ -107,6 +110,30 @@ public class AbstractConfigurationHandlingTest {
public JsonNode executeRaw(Operation operation) {
if (content==null)
throw new IllegalStateException("Content not yet set");
+
+ Address address = operation.getAddress();
+ if (address!=null && !address.isEmpty()) {
+ // we need to clone the content and then for the result find the right sub-content to put into result and
+ // return this one.
+
+ // find the sub-content we want
+ String[] parts = address.getPath().split("=");
+ String key = parts[0];
+ String val = parts[1];
+ JsonNode result = content.get("result");
+ JsonNode keyNode = result.get(key);
+ JsonNode valNode = keyNode.get(val);
+
+ // clone the original content
+ ObjectMapper tmpMapper = new ObjectMapper();
+ JsonNode tmp = tmpMapper.createObjectNode();
+ ((ObjectNode)tmp).putAll(((ObjectNode)content));
+
+ // replace the result with the sub-content
+ ((ObjectNode)tmp).put("result",valNode);
+
+ return tmp;
+ }
return content;
}
}
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
index 0a46516..ef58967 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationLoadingTest.java
@@ -416,6 +416,51 @@ public class ConfigurationLoadingTest extends AbstractConfigurationHandlingTest
}
+ public void test9() throws Exception {
+ String resultString = loadJsonFromFile("web.json");
+ ConfigurationDefinition definition = loadDescriptor("test9");
+
+ ObjectMapper mapper = new ObjectMapper();
+ ComplexResult result = mapper.readValue(resultString,ComplexResult.class);
+ JsonNode json = mapper.valueToTree(result);
+
+ FakeConnection connection = new FakeConnection();
+ connection.setContent(json);
+
+ ConfigurationLoadDelegate delegate = new ConfigurationLoadDelegate(definition,connection,null);
+ Configuration config = delegate.loadResourceConfiguration();
+ assert config!=null;
+ assert config.getProperties().size()==5 : "Got " + config.getProperties().size() + " props instead of 5";
+ PropertySimple simple = config.getSimple("check-interval");
+ assert simple !=null;
+ Integer integerValue = simple.getIntegerValue();
+ assert integerValue !=null : "check-interval was null";
+ assert integerValue ==17 : "check-interval was not 17 but " + integerValue;
+ PropertySimple disabled = config.getSimple("disabled");
+ assert disabled !=null : "disabled was null";
+ Boolean booleanValue = disabled.getBooleanValue();
+ assert booleanValue !=null;
+ assert booleanValue;
+ PropertySimple listings = config.getSimple("listings");
+ assert listings !=null;
+ Boolean booleanValue1 = listings.getBooleanValue();
+ assert booleanValue1 !=null;
+ assert !booleanValue1;
+ PropertySimple simple1 = config.getSimple("max-depth");
+ assert simple1 !=null;
+ Integer integerValue1 = simple1.getIntegerValue();
+ assert integerValue1 !=null;
+ assert integerValue1 ==3;
+ PropertySimple simple2 = config.getSimple("default-virtual-server");
+ assert simple2 !=null;
+ String stringValue = simple2.getStringValue();
+ assert stringValue !=null;
+ assert stringValue.equals("default-host");
+
+
+
+ }
+
private String loadJsonFromFile(String fileName) throws Exception {
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(fileName);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
diff --git a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
index a512133..09439f3 100644
--- a/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
+++ b/modules/plugins/jboss-as-7/src/test/java/org/rhq/modules/plugins/jbossas7/ConfigurationUpdatingTest.java
@@ -31,6 +31,7 @@ import org.rhq.core.domain.configuration.PropertyList;
import org.rhq.core.domain.configuration.PropertyMap;
import org.rhq.core.domain.configuration.PropertySimple;
import org.rhq.core.domain.configuration.definition.ConfigurationDefinition;
+import org.rhq.modules.plugins.jbossas7.json.Address;
import org.rhq.modules.plugins.jbossas7.json.CompositeOperation;
import org.rhq.modules.plugins.jbossas7.json.Operation;
@@ -62,7 +63,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(new PropertySimple("needed","test"));
conf.put(new PropertySimple("optional",null));
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 1;
Operation step1 = cop.step(0);
@@ -89,7 +90,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyList);
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 1 : "#Steps should be 1 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -120,7 +121,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyMap);
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 1 : "#Steps should be 1 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -148,7 +149,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyMap);
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 1 : "#Steps should be 1 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -176,7 +177,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyMap);
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 1 : "#Steps should be 1 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -207,7 +208,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyList);
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 1 : "#Steps should be 1 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -240,7 +241,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyList);
conf.put(new PropertySimple("port-offset",0));
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 3 : "#Steps should be 3 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -289,7 +290,7 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
conf.put(propertyList);
conf.put(new PropertySimple("port-offset",0));
- CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, null);
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
assert cop.numberOfSteps() == 5 : "#Steps should be 5 but were " + cop.numberOfSteps();
Operation step1 = cop.step(0);
@@ -317,4 +318,48 @@ public class ConfigurationUpdatingTest extends AbstractConfigurationHandlingTest
assert step4.getAddress().get(0).equals("socket-binding=https");
assert step5.getAddress().get(0).equals("socket-binding=https");
}
+
+ public void test9() throws Exception {
+
+ ConfigurationDefinition definition = loadDescriptor("test9");
+
+ FakeConnection connection = new FakeConnection();
+
+ ConfigurationWriteDelegate delegate = new ConfigurationWriteDelegate(definition,connection,null);
+
+ Configuration conf = new Configuration();
+
+ conf.put(new PropertySimple("default-virtual-server","hulla")); // this is read-only and must not show up in result
+ conf.put(new PropertySimple("test-prop","Heiko"));
+ conf.put(new PropertySimple("check-interval",23));
+ conf.put(new PropertySimple("disabled",true));
+ conf.put(new PropertySimple("listings",false));
+ conf.put(new PropertySimple("max-depth",17));
+
+ CompositeOperation cop = delegate.updateGenerateOperationFromProperties(conf, new Address());
+
+ assert cop.numberOfSteps() == 5 : "#Steps should be 5 but were " + cop.numberOfSteps();
+
+ Operation step1 = cop.step(0);
+ Operation step2 = cop.step(1);
+ Operation step3 = cop.step(2);
+ Operation step4 = cop.step(3);
+ Operation step5 = cop.step(4);
+
+ assert step1.getAddress().isEmpty();
+ assert step2.getAddress().size()==1;
+ assert step3.getAddress().size()==1;
+ assert step4.getAddress().size()==1;
+ assert step5.getAddress().size()==1;
+ assert step2.getAddress().get(0).equals("configuration=jsp-configuration");
+ assert step3.getAddress().get(0).equals("configuration=jsp-configuration");
+ assert step4.getAddress().get(0).equals("configuration=static-resources");
+ assert step5.getAddress().get(0).equals("configuration=static-resources");
+
+ assert step1.getAdditionalProperties().get("name").equals("test-prop");
+ assert step1.getAdditionalProperties().get("value").equals("Heiko");
+ assert step2.getAdditionalProperties().get("name").equals("check-interval");
+ assert step2.getAdditionalProperties().get("value").equals("23");
+
+ }
}
diff --git a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
index 69201e2..53f351a 100644
--- a/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
+++ b/modules/plugins/jboss-as-7/src/test/resources/test-plugin.xml
@@ -89,6 +89,21 @@
</server>
+ <server class="foo" discovery="foo" name="test9">
+ <resource-configuration>
+ <c:simple-property name="default-virtual-server" type="string" readOnly="true"/>
+ <c:simple-property name="test-prop" type="string" required="true" defaultValue="Hello"/>
+ <c:group name="child:configuration=jsp-configuration">
+ <c:simple-property name="check-interval" type="integer" units="seconds" readOnly="false" default="1"/>
+ <c:simple-property name="disabled" type="boolean" default="false"/>
+ </c:group>
+ <c:group name="child:configuration=static-resources">
+ <c:simple-property name="listings" default="true" type="boolean"/>
+ <c:simple-property name="max-depth" default="9" type="integer" />
+ </c:group>
+ </resource-configuration>
+ </server>
+
<server class="foo" discovery="foo" name="simple1">
<resource-configuration>
diff --git a/modules/plugins/jboss-as-7/src/test/resources/web.json b/modules/plugins/jboss-as-7/src/test/resources/web.json
new file mode 100644
index 0000000..96f0565
--- /dev/null
+++ b/modules/plugins/jboss-as-7/src/test/resources/web.json
@@ -0,0 +1,62 @@
+{
+ "outcome" : "success",
+ "result" :
+
+
+ {"default-virtual-server" : "default-host",
+ "native" : true,
+ "configuration" : {
+ "container" : {},
+ "static-resources" : {
+ "disabled" : false,
+ "listings" : false,
+ "max-depth" : 3,
+ "read-only" : true,
+ "sendfile" : 49152,
+ "webdav" : false},
+ "jsp-configuration" : {
+ "check-interval" : 17,
+ "development" : false,
+ "disabled" : true,
+ "display-source-fragment" : true,
+ "dump-smap" : false,
+ "error-on-use-bean-invalid-class-attribute" : false,
+ "generate-strings-as-char-arrays" : false,
+ "java-encoding" : "UTF-8",
+ "keep-generated" : true,
+ "mapped-file" : true,
+ "modification-test-interval" : "7",
+ "recompile-on-fail" : false,
+ "smap" : false,
+ "source-vm" : "1.5",
+ "tag-pooling" : true,
+ "target-vm" : "1.5",
+ "trim-spaces" : true,
+ "x-powered-by" : true}
+ },
+ "connector" : {
+ "http" : {
+ "enable-lookups" : true,
+ "enabled" : true,
+ "max-post-size" : 2097152,
+ "max-save-post-size" : 4096,
+ "protocol" : "HTTP/1.1",
+ "redirect-port" : 8443,
+ "scheme" : "http",
+ "secure" : false,
+ "socket-binding" : "http",
+ "ssl" : null,
+ "virtual-server" : null}
+ },
+
+ "virtual-server" : {
+ "default-host" : {
+ "access-log" : null,
+ "alias" : ["localhost","example.com"],
+ "default-web-module" : "ROOT.war",
+ "enable-welcome-root" : true,
+ "rewrite" : null,
+ "sso" : null}
+ }
+ }
+}
11 years, 11 months
[rhq] Branch 'stefan/backingcontent' - modules/plugins
by snegrea
modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatWarComponent.java | 18 ++++++++++
1 file changed, 18 insertions(+)
New commits:
commit 855123741a423498dfdad6685edb277e120c6bf2
Author: Stefan Negrea <snegrea(a)redhat.com>
Date: Wed Dec 21 11:03:01 2011 -0600
[BZ 761593] Make use of display version to extract/report the version from the actual manifest of the deployment.
diff --git a/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatWarComponent.java b/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatWarComponent.java
index 9a60a57..a956953 100644
--- a/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatWarComponent.java
+++ b/modules/plugins/tomcat/src/main/java/org/jboss/on/plugins/tomcat/TomcatWarComponent.java
@@ -72,6 +72,8 @@ import org.rhq.core.pluginapi.util.ResponseTimeConfiguration;
import org.rhq.core.pluginapi.util.ResponseTimeLogParser;
import org.rhq.core.util.ZipUtil;
import org.rhq.core.util.exception.ThrowableUtil;
+import org.rhq.core.util.file.ContentFileInfo;
+import org.rhq.core.util.file.JarContentFileInfo;
import org.rhq.plugins.jmx.MBeanResourceComponent;
import org.rhq.plugins.jmx.ObjectNameQueryUtility;
@@ -613,6 +615,7 @@ public class TomcatWarComponent extends MBeanResourceComponent<TomcatVHostCompon
String fileName = new File(fullFileName).getName();
String sha256 = getSHA256(file);
String version = getVersion(sha256);
+ String displayVersion = getDisplayVersion(file);
PackageDetailsKey key = new PackageDetailsKey(fileName, version, PKG_TYPE_FILE, ARCHITECTURE);
ResourcePackageDetails details = new ResourcePackageDetails(key);
@@ -623,6 +626,7 @@ public class TomcatWarComponent extends MBeanResourceComponent<TomcatVHostCompon
details.setFileCreatedDate(null); // TODO: get created date via SIGAR
details.setInstallationTimestamp(System.currentTimeMillis()); // TODO: anything better than discovery time
details.setSHA256(sha256);
+ details.setDisplayVersion(displayVersion);
packages.add(details);
}
@@ -655,6 +659,20 @@ public class TomcatWarComponent extends MBeanResourceComponent<TomcatVHostCompon
return "[sha256=" + sha256 + "]";
}
+ /**
+ * Retrieve the display version for the component. The display version should be stored
+ * in the manifest of the application (implementation and/or specification version).
+ * It will attempt to retrieve the version for both archived or exploded deployments.
+ *
+ * @param file component file
+ * @return
+ */
+ private String getDisplayVersion(File file) {
+ //JarContentFileInfo extracts the version from archived and exploded deployments
+ ContentFileInfo contentFileInfo = new JarContentFileInfo(file);
+ return contentFileInfo.getVersion(null);
+ }
+
public List<DeployPackageStep> generateInstallationSteps(ResourcePackageDetails packageDetails) {
return null;
}
11 years, 11 months