diff options
author | Ashlee Young <ashlee@wildernessvoice.com> | 2015-12-01 05:49:27 -0800 |
---|---|---|
committer | Ashlee Young <ashlee@wildernessvoice.com> | 2015-12-01 05:49:27 -0800 |
commit | e63291850fd0795c5700e25e67e5dee89ba54c5f (patch) | |
tree | 9707289536ad95bb739c9856761ad43275e07d8c /framework/src/onos/web/api/src/main/java/org/onosproject/rest/resources/StatisticsWebResource.java | |
parent | 671823e12bc13be9a8b87a5d7de33da1bb7a44e8 (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.java | 59 |
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(); + } + } |