From 190b75c59bcc6f250446b627a96e4a12de52278f Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Tue, 13 Jul 2021 14:02:30 -0400 Subject: Limit statistics record count Modified PAP, for Honolulu only, to limit the number of statistics records retrieved from the DB. Also added the recordCount parameter to the REST APIs, because otherwise it would only return one record. Issue-ID: POLICY-3485 Change-Id: Ib0820cfda95672f1bc6f879dfd2ac172e7b42f0d Signed-off-by: Jim Hahn --- .../pap/main/rest/StatisticsRestControllerV1.java | 21 +++++++++++-------- .../pap/main/rest/StatisticsRestProvider.java | 24 ++++++++++++++-------- 2 files changed, 28 insertions(+), 17 deletions(-) (limited to 'main') diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java index 5b36330a..9b2e5263 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestControllerV1.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. + * Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -51,7 +51,6 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { private static final Logger LOGGER = LoggerFactory.getLogger(StatisticsRestControllerV1.class); private static final String GET_STATISTICS_ERR_MSG = "get pdpStatistics failed"; - private static final int NO_COUNT_LIMIT = 0; /** * get statistics of PAP. @@ -103,10 +102,12 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { @ApiResponse(code = AUTHORIZATION_ERROR_CODE, message = AUTHORIZATION_ERROR_MESSAGE), @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)}) public Response pdpStatistics( - @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) { + @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId, + @ApiParam(value = "Record Count", + required = false) @DefaultValue("0") @QueryParam("recordCount") final int recordCount) { try { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) - .entity(new StatisticsRestProvider().fetchDatabaseStatistics(null, null, null, NO_COUNT_LIMIT)) + .entity(new StatisticsRestProvider().fetchDatabaseStatistics(null, null, null, recordCount)) .build(); } catch (final PfModelException exp) { LOGGER.info(GET_STATISTICS_ERR_MSG, exp); @@ -145,10 +146,12 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { @ApiResponse(code = SERVER_ERROR_CODE, message = SERVER_ERROR_MESSAGE)}) public Response pdpGroupStatistics( @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId, - @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName) { + @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName, + @ApiParam(value = "Record Count", + required = false) @DefaultValue("0") @QueryParam("recordCount") final int recordCount) { try { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) - .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, null, null, NO_COUNT_LIMIT)) + .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, null, null, recordCount)) .build(); } catch (final PfModelException exp) { LOGGER.info(GET_STATISTICS_ERR_MSG, exp); @@ -189,11 +192,13 @@ public class StatisticsRestControllerV1 extends PapRestControllerV1 { public Response pdpSubGroupStatistics( @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId, @ApiParam(value = "PDP Group Name", required = true) @PathParam("group") final String groupName, - @ApiParam(value = "PDP SubGroup type", required = true) @PathParam("type") final String subType) { + @ApiParam(value = "PDP SubGroup type", required = true) @PathParam("type") final String subType, + @ApiParam(value = "Record Count", + required = false) @DefaultValue("0") @QueryParam("recordCount") final int recordCount) { try { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) .entity(new StatisticsRestProvider().fetchDatabaseStatistics(groupName, subType, null, - NO_COUNT_LIMIT)) + recordCount)) .build(); } catch (final PfModelException exp) { LOGGER.info(GET_STATISTICS_ERR_MSG, exp); diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java index 512dbe76..0c89ae7f 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/StatisticsRestProvider.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2020-2021 Nordix Foundation. - * Modifications Copyright (C) 2019 AT&T Intellectual Property. + * Modifications Copyright (C) 2019, 2021 AT&T Intellectual Property. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -47,6 +47,9 @@ public class StatisticsRestProvider { private static final Logger LOGGER = LoggerFactory.getLogger(StatisticsRestProvider.class); private static final String GET_STATISTICS_ERR_MSG = "fetch database failed"; private static final String DESC_ORDER = "DESC"; + private static final String DEFAULT_GROUP = "defaultGroup"; + private static final int MIN_RECORD_COUNT = 1; + private static final int MAX_RECORD_COUNT = 100; /** * Returns the current statistics of pap component. @@ -84,24 +87,27 @@ public class StatisticsRestProvider { String pdpName, int recordCount) throws PfModelException { final PolicyModelsProviderFactoryWrapper modelProviderWrapper = Registry.get(PapConstants.REG_PAP_DAO_FACTORY, PolicyModelsProviderFactoryWrapper.class); - Map>> pdpStatisticsMap; try (PolicyModelsProvider databaseProvider = modelProviderWrapper.create()) { Instant startTime = null; Instant endTime = null; - if (groupName == null) { - pdpStatisticsMap = generatePdpStatistics(databaseProvider.getPdpStatistics(pdpName, startTime)); - } else { - pdpStatisticsMap = generatePdpStatistics(databaseProvider.getFilteredPdpStatistics(pdpName, groupName, - subType, startTime, endTime, DESC_ORDER, recordCount)); - } + /* + * getFilteredPdpStatistics() will throw an NPE if a group name is not specified, so we + * provide a default value + */ + String grpnm = (groupName != null ? groupName : DEFAULT_GROUP); + + int nrecords = Math.min(MAX_RECORD_COUNT, Math.max(MIN_RECORD_COUNT, recordCount)); + + return generatePdpStatistics(databaseProvider.getFilteredPdpStatistics(pdpName, grpnm, + subType, startTime, endTime, DESC_ORDER, nrecords)); + } catch (final PfModelException exp) { String errorMessage = GET_STATISTICS_ERR_MSG + "groupName:" + groupName + "subType:" + subType + "pdpName:" + pdpName + exp.getMessage(); LOGGER.debug(errorMessage, exp); throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, errorMessage); } - return pdpStatisticsMap; } /** -- cgit 1.2.3-korg