aboutsummaryrefslogtreecommitdiffstats
path: root/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
diff options
context:
space:
mode:
authorAshlee Young <ashlee@wildernessvoice.com>2015-12-01 05:49:27 -0800
committerAshlee Young <ashlee@wildernessvoice.com>2015-12-01 05:49:27 -0800
commite63291850fd0795c5700e25e67e5dee89ba54c5f (patch)
tree9707289536ad95bb739c9856761ad43275e07d8c /framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
parent671823e12bc13be9a8b87a5d7de33da1bb7a44e8 (diff)
onos commit hash c2999f30c69e50df905a9d175ef80b3f23a98514
Change-Id: I2bb8562c4942b6d6a6d60b663db2e17540477b81 Signed-off-by: Ashlee Young <ashlee@wildernessvoice.com>
Diffstat (limited to 'framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java')
-rw-r--r--framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java59
1 files changed, 59 insertions, 0 deletions
diff --git a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
index 7a452044..284d3775 100644
--- a/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
+++ b/framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java
@@ -36,6 +36,7 @@ import org.onosproject.net.Device;
import org.onosproject.net.DeviceId;
import org.onosproject.net.Link;
import org.onosproject.net.device.DeviceService;
+import org.onosproject.net.device.PortStatistics;
import org.onosproject.net.flow.FlowRuleService;
import org.onosproject.net.flow.TableStatisticsEntry;
import org.onosproject.net.link.LinkService;
@@ -153,4 +154,62 @@ public class StatisticsWebResource extends AbstractWebResource {
rootArrayNode.add(deviceStatsNode);
return ok(root).build();
}
+
+ /**
+ * Get port statistics of all devices.
+ * @rsModel StatisticsPorts
+ * @return JSON encoded array of port statistics
+ */
+ @GET
+ @Path("ports")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getPortStatistics() {
+ final DeviceService service = get(DeviceService.class);
+ final Iterable<Device> devices = service.getDevices();
+ final ObjectNode root = mapper().createObjectNode();
+ final ArrayNode rootArrayNode = root.putArray("statistics");
+ for (final Device device : devices) {
+ final ObjectNode deviceStatsNode = mapper().createObjectNode();
+ deviceStatsNode.put("device", device.id().toString());
+ final ArrayNode statisticsNode = deviceStatsNode.putArray("ports");
+ final Iterable<PortStatistics> portStatsEntries = service.getPortStatistics(device.id());
+ if (portStatsEntries != null) {
+ for (final PortStatistics entry : portStatsEntries) {
+ statisticsNode.add(codec(PortStatistics.class).encode(entry, this));
+ }
+ }
+ rootArrayNode.add(deviceStatsNode);
+ }
+
+ return ok(root).build();
+ }
+
+ /**
+ * Get port statistics of a specified devices.
+ * @rsModel StatisticsPorts
+ * @param deviceId device ID
+ * @return JSON encoded array of port statistics
+ */
+ @GET
+ @Path("ports/{deviceId}")
+ @Produces(MediaType.APPLICATION_JSON)
+ public Response getPortStatisticsByDeviceId(@PathParam("deviceId") String deviceId) {
+ final DeviceService service = get(DeviceService.class);
+ final Iterable<PortStatistics> portStatsEntries =
+ service.getPortStatistics(DeviceId.deviceId(deviceId));
+ 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 (portStatsEntries != null) {
+ for (final PortStatistics entry : portStatsEntries) {
+ statisticsNode.add(codec(PortStatistics.class).encode(entry, this));
+ }
+ }
+ rootArrayNode.add(deviceStatsNode);
+
+ return ok(root).build();
+ }
+
}