X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fnorthbound%2Fstatistics%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fstatistics%2Fnorthbound%2FStatisticsNorthbound.java;h=4175f1e3c49984c7d90ac03b2207df946c9f7e3a;hb=edf5bfcee83c750853253ccfd991ba7000f5f65b;hp=05cb500273c2bca5c2012b251ebea9db02344ebe;hpb=9164be5d576183e92524f0e3bcc4b91cda174b2a;p=controller.git diff --git a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java b/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java index 05cb500273..4175f1e3c4 100644 --- a/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java +++ b/opendaylight/northbound/statistics/src/main/java/org/opendaylight/controller/statistics/northbound/StatisticsNorthbound.java @@ -15,9 +15,11 @@ import javax.ws.rs.GET; import javax.ws.rs.Path; import javax.ws.rs.PathParam; import javax.ws.rs.Produces; +import javax.ws.rs.QueryParam; import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.SecurityContext; +import javax.ws.rs.ext.ContextResolver; import org.codehaus.enunciate.jaxrs.ResponseCode; import org.codehaus.enunciate.jaxrs.StatusCodes; @@ -29,6 +31,7 @@ import org.opendaylight.controller.northbound.commons.exception.ResourceConflict import org.opendaylight.controller.northbound.commons.exception.ResourceNotFoundException; import org.opendaylight.controller.northbound.commons.exception.ServiceUnavailableException; import org.opendaylight.controller.northbound.commons.exception.UnauthorizedException; +import org.opendaylight.controller.northbound.commons.query.QueryContext; import org.opendaylight.controller.northbound.commons.utils.NorthboundUtils; import org.opendaylight.controller.sal.authorization.Privilege; import org.opendaylight.controller.sal.core.Node; @@ -57,7 +60,14 @@ import org.opendaylight.controller.switchmanager.ISwitchManager; public class StatisticsNorthbound { private String username; + private QueryContext queryContext; + @Context + public void setQueryContext(ContextResolver queryCtxResolver) { + if (queryCtxResolver != null) { + queryContext = queryCtxResolver.getContext(QueryContext.class); + } + } @Context public void setSecurityContext(SecurityContext context) { if (context != null && context.getUserPrincipal() != null) username = context.getUserPrincipal().getName(); @@ -234,7 +244,8 @@ public class StatisticsNorthbound { @ResponseCode(code = 404, condition = "The containerName is not found"), @ResponseCode(code = 503, condition = "One or more of Controller Services are unavailable") }) public AllFlowStatistics getFlowStatistics( - @PathParam("containerName") String containerName) { + @PathParam("containerName") String containerName, + @QueryParam("_q") String queryString) { if (!NorthboundUtils.isAuthorized( getUserName(), containerName, Privilege.READ, this)) { throw new UnauthorizedException( @@ -265,7 +276,12 @@ public class StatisticsNorthbound { FlowStatistics stat = new FlowStatistics(node, flowStats); statistics.add(stat); } - return new AllFlowStatistics(statistics); + AllFlowStatistics result = new AllFlowStatistics(statistics); + if (queryString != null) { + queryContext.createQuery(queryString, AllFlowStatistics.class) + .filter(result, FlowStatistics.class); + } + return result; } /** @@ -610,7 +626,8 @@ public class StatisticsNorthbound { @ResponseCode(code = 404, condition = "The containerName is not found"), @ResponseCode(code = 503, condition = "One or more of Controller Services are unavailable") }) public AllPortStatistics getPortStatistics( - @PathParam("containerName") String containerName) { + @PathParam("containerName") String containerName, + @QueryParam("_q") String queryString) { if (!NorthboundUtils.isAuthorized( getUserName(), containerName, Privilege.READ, this)) { @@ -638,7 +655,13 @@ public class StatisticsNorthbound { PortStatistics portStat = new PortStatistics(node, stat); statistics.add(portStat); } - return new AllPortStatistics(statistics); + + AllPortStatistics result = new AllPortStatistics(statistics); + if (queryString != null) { + queryContext.createQuery(queryString, AllPortStatistics.class) + .filter(result, PortStatistics.class); + } + return result; } /** @@ -844,7 +867,8 @@ public class StatisticsNorthbound { * }, * "activeCount": "11", * "lookupCount": "816", - * "matchedCount": "220" + * "matchedCount": "220", + * "maximumEntries": "1000" * }, * { * ...another table @@ -876,6 +900,7 @@ public class StatisticsNorthbound { * <activeCount>12</activeCount> * <lookupCount>10935</lookupCount> * <matchedCount>10084</matchedCount> + * <maximumEntries>1000</maximumEntries> * </tableStatistic> * <tableStatistic> * <nodeTable> @@ -888,6 +913,7 @@ public class StatisticsNorthbound { * <activeCount>0</activeCount> * <lookupCount>0</lookupCount> * <matchedCount>0</matchedCount> + * <maximumEntries>0</maximumEntries> * </tableStatistic> * <tableStatistic> * <nodeTable> @@ -900,6 +926,7 @@ public class StatisticsNorthbound { * <activeCount>0</activeCount> * <lookupCount>0</lookupCount> * <matchedCount>0</matchedCount> + * <maximumEntries>0</maximumEntries> * </tableStatistic> * </tableStatistics> * <tableStatistics> @@ -920,7 +947,8 @@ public class StatisticsNorthbound { @ResponseCode(code = 404, condition = "The containerName is not found"), @ResponseCode(code = 503, condition = "One or more of Controller Services are unavailable") }) public AllTableStatistics getTableStatistics( - @PathParam("containerName") String containerName) { + @PathParam("containerName") String containerName, + @QueryParam("_q") String queryString) { if (!NorthboundUtils.isAuthorized(getUserName(), containerName, Privilege.READ, this)) { throw new UnauthorizedException("User is not authorized to perform this operation on container " @@ -948,7 +976,12 @@ public class StatisticsNorthbound { TableStatistics tableStat = new TableStatistics(node, stat); statistics.add(tableStat); } - return new AllTableStatistics(statistics); + AllTableStatistics allstats = new AllTableStatistics(statistics); + if (queryString != null) { + queryContext.createQuery(queryString, AllTableStatistics.class) + .filter(allstats, TableStatistics.class); + } + return allstats; } /** @@ -987,7 +1020,8 @@ public class StatisticsNorthbound { * }, * "activeCount": "12", * "lookupCount": "11382", - * "matchedCount": "10524" + * "matchedCount": "10524", + * "maximumEntries": "1000" * }, * { * "nodeTable": { @@ -999,7 +1033,8 @@ public class StatisticsNorthbound { * }, * "activeCount": "0", * "lookupCount": "0", - * "matchedCount": "0" + * "matchedCount": "0", + * "maximumEntries": "0" * } * ] * } @@ -1022,6 +1057,7 @@ public class StatisticsNorthbound { * <activeCount>12</activeCount> * <lookupCount>10935</lookupCount> * <matchedCount>10084</matchedCount> + * <maximumEntries>1000</maximumEntries> * </tableStatistic> * <tableStatistic> * <nodeTable> @@ -1034,6 +1070,7 @@ public class StatisticsNorthbound { * <activeCount>0</activeCount> * <lookupCount>0</lookupCount> * <matchedCount>0</matchedCount> + * <maximumEntries>0</maximumEntries> * </tableStatistic> * <tableStatistic> * <nodeTable> @@ -1046,6 +1083,7 @@ public class StatisticsNorthbound { * <activeCount>0</activeCount> * <lookupCount>0</lookupCount> * <matchedCount>0</matchedCount> + * <maximumEntries>0</maximumEntries> * </tableStatistic> * </nodeTableStatistics> *