@GET
@Path("/topologies/{topologyId}/metrics")
@Timed
public Response getTopology(@PathParam("topologyId") Long topologyId,
@QueryParam("from") Long from,
@QueryParam("to") Long to,
@Context SecurityContext securityContext) throws IOException {
SecurityUtil.checkRoleOrPermissions(authorizer, securityContext, Roles.ROLE_TOPOLOGY_USER,
Topology.NAMESPACE, topologyId, READ);
assertTimeRange(from, to);
Topology topology = catalogService.getTopology(topologyId);
if (topology != null) {
String asUser = WSUtils.getUserFromSecurityContext(securityContext);
TopologyTimeSeriesMetrics.TimeSeriesComponentMetric topologyMetrics =
metricsService.getTopologyStats(topology, from, to, asUser);
long prevFrom = from - (to - from);
long prevTo = from - 1;
TopologyTimeSeriesMetrics.TimeSeriesComponentMetric prevTopologyMetrics =
metricsService.getTopologyStats(topology, prevFrom, prevTo, asUser);
if (!checkMetricsResponseHasFullRangeOfTime(prevTopologyMetrics, prevFrom, prevTo)) {
prevTopologyMetrics = null;
}
ComponentMetricSummary viewModeComponentMetric = ComponentMetricSummary.convertTopologyMetric(
topologyMetrics, prevTopologyMetrics);
TopologyWithMetric metric = new TopologyWithMetric(topology, viewModeComponentMetric,
topologyMetrics);
return WSUtils.respondEntity(metric, OK);
}
throw EntityNotFoundException.byId(topologyId.toString());
}