Exposed the newly added port specific portStatistics API via REST
Change-Id: I12a59b950f2d9123afc048e126ad7b457e5d7188
diff --git a/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java b/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
index d878433..08059a8 100644
--- a/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
+++ b/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
@@ -35,6 +35,7 @@
import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
+import org.onosproject.net.PortNumber;
import org.onosproject.net.device.DeviceService;
import org.onosproject.net.device.PortStatistics;
import org.onosproject.net.flow.FlowRuleService;
@@ -215,4 +216,33 @@
return ok(root).build();
}
+ /**
+ * Gets port statistics of a specified device and port.
+ * @onos.rsModel StatisticsPorts
+ * @param deviceId device ID
+ * @param port port
+ * @return 200 OK with JSON encoded array of port statistics for the specified port
+ */
+ @GET
+ @Path("ports/{deviceId}/{port}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getPortStatisticsByDeviceIdAndPort(@PathParam("deviceId") String deviceId,
+ @PathParam("port") String port) {
+ final DeviceService service = get(DeviceService.class);
+ final PortNumber portNumber = portNumber(port);
+ final PortStatistics portStatsEntry =
+ service.getStatisticsForPort(DeviceId.deviceId(deviceId), portNumber);
+ final ObjectNode root = mapper().createObjectNode();
+ final ArrayNode rootArrayNode = root.putArray("statistics");
+ final ObjectNode deviceStatsNode = mapper().createObjectNode();
+ deviceStatsNode.put("device", deviceId);
+ final ArrayNode statisticsNode = deviceStatsNode.putArray("ports");
+ if (portStatsEntry != null) {
+ statisticsNode.add(codec(PortStatistics.class).encode(portStatsEntry, this));
+ }
+ rootArrayNode.add(deviceStatsNode);
+
+ return ok(root).build();
+ }
+
}