From 64ee4aa0f333947317bcb97a96e08e7bdc60f162 Mon Sep 17 00:00:00 2001 From: Michael Mokry Date: Wed, 20 Feb 2019 10:13:53 -0600 Subject: Stubbed endpoints for Decision API and swagger Includes: 1) Decision API endpoint with Swagger annotations 2) Provider class for Decision added to new provider package 3) Moved other provider classes to provider package 4) Decision model class added to new model package Note: This is just a draft and still needs a lot of work, please do not merge. Thanks in advance for the review comments. Issue-ID: POLICY-1516 Change-Id: Id7414b6cb3eee1b877a0c11521babbef4938a68f Signed-off-by: Michael Mokry --- .../policy/pdpx/main/rest/HealthCheckProvider.java | 51 ------- .../policy/pdpx/main/rest/StatisticsProvider.java | 47 ------ .../policy/pdpx/main/rest/StatisticsReport.java | 166 --------------------- .../pdpx/main/rest/XacmlPdpRestController.java | 54 +++++-- .../onap/policy/pdpx/main/rest/model/Decision.java | 27 ++++ .../pdpx/main/rest/model/StatisticsReport.java | 166 +++++++++++++++++++++ .../pdpx/main/rest/provider/DecisionProvider.java | 38 +++++ .../main/rest/provider/HealthCheckProvider.java | 51 +++++++ .../main/rest/provider/StatisticsProvider.java | 48 ++++++ .../pdpx/main/rest/TestStatisticsReport.java | 4 +- .../pdpx/main/rest/TestXacmlPdpRestServer.java | 2 +- .../pdpx/main/rest/TestXacmlPdpStatistics.java | 3 +- 12 files changed, 381 insertions(+), 276 deletions(-) delete mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java delete mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java delete mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java create mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java create mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java create mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java create mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java create mode 100644 main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java (limited to 'main') diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java deleted file mode 100644 index e57ba180..00000000 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java +++ /dev/null @@ -1,51 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pdpx.main.rest; - -import org.onap.policy.common.endpoints.report.HealthCheckReport; -import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator; - -/** - * Class to fetch health check of xacml pdp service. - * - */ -public class HealthCheckProvider { - - private static final String NOT_ALIVE = "not alive"; - private static final String ALIVE = "alive"; - private static final String URL = "self"; - private static final String NAME = "Policy Xacml PDP"; - - /** - * Performs the health check of xacml pdp service. - * - * @return Report containing health check status - */ - public HealthCheckReport performHealthCheck() { - final HealthCheckReport report = new HealthCheckReport(); - report.setName(NAME); - report.setUrl(URL); - report.setHealthy(XacmlPdpActivator.isAlive()); - report.setCode(XacmlPdpActivator.isAlive() ? 200 : 500); - report.setMessage(XacmlPdpActivator.isAlive() ? ALIVE : NOT_ALIVE); - return report; - } -} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java deleted file mode 100644 index f3580531..00000000 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java +++ /dev/null @@ -1,47 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pdpx.main.rest; - -import org.onap.policy.pdpx.main.rest.XacmlPdpStatisticsManager; -import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator; - -/** - * Class to fetch statistics of xacmlPdp service. - * - */ -public class StatisticsProvider { - - /** - * Returns the current statistics of xacmlPdp service. - * - * @return Report containing statistics of xacmlPdp service - */ - public StatisticsReport fetchCurrentStatistics() { - final StatisticsReport report = new StatisticsReport(); - report.setCode(XacmlPdpActivator.isAlive() ? 200 : 500); - report.setTotalPoliciesCount(XacmlPdpStatisticsManager.getTotalPoliciesCount()); - report.setPermitDecisionsCount(XacmlPdpStatisticsManager.getPermitDecisionsCount()); - report.setDenyDecisionsCount(XacmlPdpStatisticsManager.getDenyDecisionsCount()); - report.setIndeterminantDecisionsCount(XacmlPdpStatisticsManager.getIndeterminantDecisionsCount()); - report.setNotApplicableDecisionsCount(XacmlPdpStatisticsManager.getNotApplicableDecisionsCount()); - return report; - } -} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java deleted file mode 100644 index f37b1d36..00000000 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java +++ /dev/null @@ -1,166 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. - * ================================================================================ - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.pdpx.main.rest; - -/** - * Class to represent statistics report of xacmlPdp service. - * - */ -public class StatisticsReport { - - private int code; - private long totalPoliciesCount; - private long permitDecisionsCount; - private long denyDecisionsCount; - private long indeterminantDecisionsCount; - private long notApplicableDecisionsCount; - - - /** - * Returns the code of this {@link StatisticsReport} instance. - * - * @return the code - */ - public int getCode() { - return code; - } - - /** - * Set code in this {@link StatisticsReport} instance. - * - * @param code the code to set - */ - public void setCode(final int code) { - this.code = code; - } - - /** - * Returns the totalPoliciesCount of this {@link StatisticsReport} instance. - * - * @return the totalPoliciesCount - */ - public long getTotalPoliciesCount() { - return totalPoliciesCount; - } - - /** - * Set totalPoliciesCount in this {@link StatisticsReport} instance. - * - * @param totalPoliciesCount the totalPoliciesCount to set - */ - public void setTotalPoliciesCount(long totalPoliciesCount) { - this.totalPoliciesCount = totalPoliciesCount; - } - - /** - * Returns the permitDecisionsCount of this {@link StatisticsReport} instance. - * - * @return the permitDecisionsCount - */ - public long getPermitDecisionsCount() { - return permitDecisionsCount; - } - - /** - * Set permitDecisionsCount in this {@link StatisticsReport} instance. - * - * @param permitDecisionsCount the permitDecisionsCount to set - */ - public void setPermitDecisionsCount(long permitDecisionsCount) { - this.permitDecisionsCount = permitDecisionsCount; - } - - /** - * Returns the denyDecisionsCount of this {@link StatisticsReport} instance. - * - * @return the denyDecisionsCount - */ - public long getDenyDecisionsCount() { - return denyDecisionsCount; - } - - /** - * Set denyDecisionsCount in this {@link StatisticsReport} instance. - * - * @param denyDecisionsCount the denyDecisionsCount to set - */ - public void setDenyDecisionsCount(long denyDecisionsCount) { - this.denyDecisionsCount = denyDecisionsCount; - } - - /** - * Returns the indeterminantDecisionsCount of this {@link StatisticsReport} instance. - * - * @return the indeterminantDecisionsCount - */ - public long getIndeterminantDecisionsCount() { - return indeterminantDecisionsCount; - } - - /** - * Set indeterminantDecisionsCount in this {@link StatisticsReport} instance. - * - * @param indeterminantDecisionsCount the indeterminantDecisionsCount to set - */ - public void setIndeterminantDecisionsCount(long indeterminantDecisionsCount) { - this.indeterminantDecisionsCount = indeterminantDecisionsCount; - } - - /** - * Returns the notApplicableDecisionsCount of this {@link StatisticsReport} instance. - * - * @return the notApplicableDecisionsCount - */ - public long getNotApplicableDecisionsCount() { - return notApplicableDecisionsCount; - } - - /** - * Set notApplicableDecisionsCount in this {@link StatisticsReport} instance. - * - * @param notApplicableDecisionsCount the notApplicableDecisionsCount to set - */ - public void setNotApplicableDecisionsCount(long notApplicableDecisionsCount) { - this.notApplicableDecisionsCount = notApplicableDecisionsCount; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - final StringBuilder builder = new StringBuilder(); - builder.append("StatisticsReport [code="); - builder.append(getCode()); - builder.append(", totalPoliciesCount="); - builder.append(getTotalPoliciesCount()); - builder.append(", permitDecisionsCount="); - builder.append(getPermitDecisionsCount()); - builder.append(", denyDecisionsCount="); - builder.append(getDenyDecisionsCount()); - builder.append(", indeterminantDecisionsCount="); - builder.append(getIndeterminantDecisionsCount()); - builder.append(", notApplicableDecisionsCount="); - builder.append(getNotApplicableDecisionsCount()); - builder.append("]"); - return builder.toString(); - } -} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java index b061c96d..dc091f03 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java @@ -22,44 +22,80 @@ package org.onap.policy.pdpx.main.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Authorization; +import io.swagger.annotations.BasicAuthDefinition; import io.swagger.annotations.Info; +import io.swagger.annotations.SecurityDefinition; import io.swagger.annotations.SwaggerDefinition; import io.swagger.annotations.Tag; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.onap.policy.common.endpoints.report.HealthCheckReport; - - +import org.onap.policy.pdpx.main.rest.model.Decision; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; +import org.onap.policy.pdpx.main.rest.provider.DecisionProvider; +import org.onap.policy.pdpx.main.rest.provider.HealthCheckProvider; +import org.onap.policy.pdpx.main.rest.provider.StatisticsProvider; /** * Class to provide xacml pdp REST services. * */ -@Path("/") +@Path("/policy/pdpx/v1") @Api @Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) @SwaggerDefinition(info = @Info(description = "Policy Xacml PDP Service", version = "v1.0", title = "Policy Xacml PDP"), consumes = {MediaType.APPLICATION_JSON}, produces = {MediaType.APPLICATION_JSON}, - schemes = {SwaggerDefinition.Scheme.HTTP}, - tags = {@Tag(name = "policy-pdpx", description = "Policy Xacml PDP Service Operations")}) + schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS}, + tags = {@Tag(name = "policy-pdpx", description = "Policy Xacml PDP Service Operations")}, + securityDefinition = @SecurityDefinition(basicAuthDefinitions = {@BasicAuthDefinition(key = "basicAuth")})) public class XacmlPdpRestController { @GET - @Path("healthcheck") + @Path("/healthcheck") @ApiOperation(value = "Perform a system healthcheck", - notes = "Provides healthy status of the Policy Xacml PDP component", response = HealthCheckReport.class) + notes = "Provides healthy status of the Policy Xacml PDP component", response = HealthCheckReport.class, + authorizations = @Authorization(value = "basicAuth")) + @ApiResponses(value = { + @ApiResponse(code = 401, message = "Authentication Error"), + @ApiResponse(code = 403, message = "Authorization Error"), + @ApiResponse(code = 500, message = "Internal Server Error")}) public Response healthcheck() { return Response.status(Response.Status.OK).entity(new HealthCheckProvider().performHealthCheck()).build(); } @GET - @Path("statistics") + @Path("/statistics") @ApiOperation(value = "Fetch current statistics", - notes = "Provides current statistics of the Policy Xacml PDP component", response = StatisticsReport.class) + notes = "Provides current statistics of the Policy Xacml PDP component", response = StatisticsReport.class, + authorizations = @Authorization(value = "basicAuth")) + @ApiResponses(value = { + @ApiResponse(code = 401, message = "Authentication Error"), + @ApiResponse(code = 403, message = "Authorization Error"), + @ApiResponse(code = 500, message = "Internal Server Error")}) public Response statistics() { return Response.status(Response.Status.OK).entity(new StatisticsProvider().fetchCurrentStatistics()).build(); } + + @POST + @Path("/decision") + @ApiOperation(value = "Fetch the decision using specified decision parameters", + notes = "Returns the policy decision from Policy Xacml PDP", response = Decision.class, + authorizations = @Authorization(value = "basicAuth"), + tags = {"Decision",}) + @ApiResponses(value = {@ApiResponse(code = 400, message = "Bad Request"), + @ApiResponse(code = 401, message = "Authentication Error"), + @ApiResponse(code = 403, message = "Authorization Error"), + @ApiResponse(code = 500, message = "Internal Server Error")}) + public Response decision(Decision body) { + return Response.status(Response.Status.OK).entity(new DecisionProvider().fetchDecision()).build(); + } } diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java new file mode 100644 index 00000000..d09dac9c --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.model; + +public class Decision { + + //TODO + +} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java new file mode 100644 index 00000000..36177034 --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java @@ -0,0 +1,166 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.model; + +/** + * Class to represent statistics report of xacmlPdp service. + * + */ +public class StatisticsReport { + + private int code; + private long totalPoliciesCount; + private long permitDecisionsCount; + private long denyDecisionsCount; + private long indeterminantDecisionsCount; + private long notApplicableDecisionsCount; + + + /** + * Returns the code of this {@link StatisticsReport} instance. + * + * @return the code + */ + public int getCode() { + return code; + } + + /** + * Set code in this {@link StatisticsReport} instance. + * + * @param code the code to set + */ + public void setCode(final int code) { + this.code = code; + } + + /** + * Returns the totalPoliciesCount of this {@link StatisticsReport} instance. + * + * @return the totalPoliciesCount + */ + public long getTotalPoliciesCount() { + return totalPoliciesCount; + } + + /** + * Set totalPoliciesCount in this {@link StatisticsReport} instance. + * + * @param totalPoliciesCount the totalPoliciesCount to set + */ + public void setTotalPoliciesCount(long totalPoliciesCount) { + this.totalPoliciesCount = totalPoliciesCount; + } + + /** + * Returns the permitDecisionsCount of this {@link StatisticsReport} instance. + * + * @return the permitDecisionsCount + */ + public long getPermitDecisionsCount() { + return permitDecisionsCount; + } + + /** + * Set permitDecisionsCount in this {@link StatisticsReport} instance. + * + * @param permitDecisionsCount the permitDecisionsCount to set + */ + public void setPermitDecisionsCount(long permitDecisionsCount) { + this.permitDecisionsCount = permitDecisionsCount; + } + + /** + * Returns the denyDecisionsCount of this {@link StatisticsReport} instance. + * + * @return the denyDecisionsCount + */ + public long getDenyDecisionsCount() { + return denyDecisionsCount; + } + + /** + * Set denyDecisionsCount in this {@link StatisticsReport} instance. + * + * @param denyDecisionsCount the denyDecisionsCount to set + */ + public void setDenyDecisionsCount(long denyDecisionsCount) { + this.denyDecisionsCount = denyDecisionsCount; + } + + /** + * Returns the indeterminantDecisionsCount of this {@link StatisticsReport} instance. + * + * @return the indeterminantDecisionsCount + */ + public long getIndeterminantDecisionsCount() { + return indeterminantDecisionsCount; + } + + /** + * Set indeterminantDecisionsCount in this {@link StatisticsReport} instance. + * + * @param indeterminantDecisionsCount the indeterminantDecisionsCount to set + */ + public void setIndeterminantDecisionsCount(long indeterminantDecisionsCount) { + this.indeterminantDecisionsCount = indeterminantDecisionsCount; + } + + /** + * Returns the notApplicableDecisionsCount of this {@link StatisticsReport} instance. + * + * @return the notApplicableDecisionsCount + */ + public long getNotApplicableDecisionsCount() { + return notApplicableDecisionsCount; + } + + /** + * Set notApplicableDecisionsCount in this {@link StatisticsReport} instance. + * + * @param notApplicableDecisionsCount the notApplicableDecisionsCount to set + */ + public void setNotApplicableDecisionsCount(long notApplicableDecisionsCount) { + this.notApplicableDecisionsCount = notApplicableDecisionsCount; + } + + /** + * {@inheritDoc}. + */ + @Override + public String toString() { + final StringBuilder builder = new StringBuilder(); + builder.append("StatisticsReport [code="); + builder.append(getCode()); + builder.append(", totalPoliciesCount="); + builder.append(getTotalPoliciesCount()); + builder.append(", permitDecisionsCount="); + builder.append(getPermitDecisionsCount()); + builder.append(", denyDecisionsCount="); + builder.append(getDenyDecisionsCount()); + builder.append(", indeterminantDecisionsCount="); + builder.append(getIndeterminantDecisionsCount()); + builder.append(", notApplicableDecisionsCount="); + builder.append(getNotApplicableDecisionsCount()); + builder.append("]"); + return builder.toString(); + } +} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java new file mode 100644 index 00000000..62190043 --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.provider; + +import org.onap.policy.pdpx.main.rest.model.Decision; + + +public class DecisionProvider { + + /** + * Retrieves the policy decision for the specified parameters. + * + * @return the Decision object + */ + public Decision fetchDecision() { + // placeholder + return new Decision(); + } + +} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java new file mode 100644 index 00000000..1c77d552 --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java @@ -0,0 +1,51 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.provider; + +import org.onap.policy.common.endpoints.report.HealthCheckReport; +import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator; + +/** + * Class to fetch health check of xacml pdp service. + * + */ +public class HealthCheckProvider { + + private static final String NOT_ALIVE = "not alive"; + private static final String ALIVE = "alive"; + private static final String URL = "self"; + private static final String NAME = "Policy Xacml PDP"; + + /** + * Performs the health check of xacml pdp service. + * + * @return Report containing health check status + */ + public HealthCheckReport performHealthCheck() { + final HealthCheckReport report = new HealthCheckReport(); + report.setName(NAME); + report.setUrl(URL); + report.setHealthy(XacmlPdpActivator.isAlive()); + report.setCode(XacmlPdpActivator.isAlive() ? 200 : 500); + report.setMessage(XacmlPdpActivator.isAlive() ? ALIVE : NOT_ALIVE); + return report; + } +} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java new file mode 100644 index 00000000..7b883280 --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java @@ -0,0 +1,48 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved. + * ================================================================================ + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.provider; + +import org.onap.policy.pdpx.main.rest.XacmlPdpStatisticsManager; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; +import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator; + +/** + * Class to fetch statistics of xacmlPdp service. + * + */ +public class StatisticsProvider { + + /** + * Returns the current statistics of xacmlPdp service. + * + * @return Report containing statistics of xacmlPdp service + */ + public StatisticsReport fetchCurrentStatistics() { + final StatisticsReport report = new StatisticsReport(); + report.setCode(XacmlPdpActivator.isAlive() ? 200 : 500); + report.setTotalPoliciesCount(XacmlPdpStatisticsManager.getTotalPoliciesCount()); + report.setPermitDecisionsCount(XacmlPdpStatisticsManager.getPermitDecisionsCount()); + report.setDenyDecisionsCount(XacmlPdpStatisticsManager.getDenyDecisionsCount()); + report.setIndeterminantDecisionsCount(XacmlPdpStatisticsManager.getIndeterminantDecisionsCount()); + report.setNotApplicableDecisionsCount(XacmlPdpStatisticsManager.getNotApplicableDecisionsCount()); + return report; + } +} diff --git a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java index a116a154..eca28d0b 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java @@ -23,12 +23,14 @@ package org.onap.policy.pdpx.main.rest; import com.openpojo.reflection.filters.FilterClassName; import com.openpojo.validation.Validator; import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.rule.impl.GetterMustExistRule; import com.openpojo.validation.rule.impl.SetterMustExistRule; import com.openpojo.validation.test.impl.GetterTester; import com.openpojo.validation.test.impl.SetterTester; import org.junit.Test; import org.onap.policy.common.utils.validation.ToStringTester; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; /** * Class to perform unit testing of {@link StatisticsReport}. @@ -39,7 +41,7 @@ public class TestStatisticsReport { @Test public void testStatisticsReport() { final Validator validator = ValidatorBuilder.create().with(new ToStringTester()).with(new SetterMustExistRule()) - .with(new SetterTester()).with(new GetterTester()).build(); + .with(new GetterMustExistRule()).with(new SetterTester()).with(new GetterTester()).build(); validator.validate(StatisticsReport.class.getPackage().getName(), new FilterClassName(StatisticsReport.class.getName())); } diff --git a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java index d9a0e9b0..2170c8a3 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java @@ -109,7 +109,7 @@ public class TestXacmlPdpRestServer { clientConfig.register(feature); final Client client = ClientBuilder.newClient(clientConfig); - final WebTarget webTarget = client.target("http://localhost:6969/healthcheck"); + final WebTarget webTarget = client.target("http://localhost:6969/policy/pdpx/v1/healthcheck"); final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); diff --git a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java index b38e92d2..ee05ff06 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java @@ -38,6 +38,7 @@ import org.onap.policy.pdpx.main.PolicyXacmlPdpException; import org.onap.policy.pdpx.main.parameters.CommonTestData; import org.onap.policy.pdpx.main.parameters.RestServerParameters; import org.onap.policy.pdpx.main.rest.XacmlPdpStatisticsManager; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; import org.onap.policy.pdpx.main.startstop.Main; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,7 +104,7 @@ public class TestXacmlPdpStatistics { clientConfig.register(feature); final Client client = ClientBuilder.newClient(clientConfig); - final WebTarget webTarget = client.target("http://localhost:6969/statistics"); + final WebTarget webTarget = client.target("http://localhost:6969/policy/pdpx/v1/statistics"); final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); -- cgit 1.2.3-korg