diff options
author | a.sreekumar <ajith.sreekumar@bell.ca> | 2021-10-15 18:02:21 +0100 |
---|---|---|
committer | a.sreekumar <ajith.sreekumar@bell.ca> | 2021-10-19 15:07:29 +0100 |
commit | 125e445b650897d75967ed8d3710098a7702cf04 (patch) | |
tree | 817af70accb104dc5aedf107a97288b5b2d54ef9 /models-interactions/model-simulators/src/main | |
parent | 6ed822fabd7c39e71b821134fcf8ac299e261108 (diff) |
Improve AAI simulator by configuring responses
Change-Id: Ide7f572dac91110a5d560fc388dd87246c9d195b
Issue-ID: POLICY-3709
Signed-off-by: a.sreekumar <ajith.sreekumar@bell.ca>
Diffstat (limited to 'models-interactions/model-simulators/src/main')
-rw-r--r-- | models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java | 86 | ||||
-rw-r--r-- | models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/demo-pnf.json (renamed from models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/AaiGetPnfResponse.json) | 0 | ||||
-rw-r--r-- | models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-cq.json | 14 | ||||
-rw-r--r-- | models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-pnf.json | 14 | ||||
-rw-r--r-- | models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-vnf.json | 14 |
5 files changed, 116 insertions, 12 deletions
diff --git a/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java b/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java index adfa6d4fa..ea50240ba 100644 --- a/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java +++ b/models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java @@ -4,6 +4,7 @@ * ================================================================================ * Copyright (C) 2017-2018, 2020-2021 AT&T Intellectual Property. All rights reserved. * Modifications Copyright (C) 2019 Nordix Foundation. + * Modifications Copyright (C) 2021 Bell Canada. 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. @@ -22,7 +23,6 @@ package org.onap.policy.simulators; import java.io.IOException; -import java.nio.charset.StandardCharsets; import javax.ws.rs.Consumes; import javax.ws.rs.GET; import javax.ws.rs.PUT; @@ -31,12 +31,17 @@ import javax.ws.rs.PathParam; import javax.ws.rs.Produces; import javax.ws.rs.QueryParam; import javax.ws.rs.core.MediaType; -import org.apache.commons.io.IOUtils; +import javax.ws.rs.core.Response; +import org.onap.policy.common.utils.resources.ResourceUtils; +import org.onap.policy.common.utils.services.Registry; @Path("/aai") public class AaiSimulatorJaxRs { - private static final String GETFAIL = "getFail"; + private static final String DOT_JSON = ".json"; + private static final String DEFAULT_RESOURCE_LOCATION = "org/onap/policy/simulators/aai/"; + private static final String INVALID_VNF_FILE_NAME = "invalid-vnf"; + private static final String INVALID_PNF_FILE_NAME = "invalid-pnf"; /** * A&AI get query. @@ -72,13 +77,12 @@ public class AaiSimulatorJaxRs { @Path("/{version:v16|v21}/query") @Consumes(MediaType.APPLICATION_JSON) @Produces("application/json") - public String aaiPutQuery(final String req) throws IOException { - return IOUtils.toString(getClass().getResource("aai/AaiCqResponse.json"), - StandardCharsets.UTF_8); + public Response aaiPutQuery(final String req) throws IOException { + return getResponse("AaiCqResponse", "invalid-cq"); } /** - * A&AI get PNF query. + * A&AI get PNF query using pnfName. * * @return the result * @throws IOException if a response file cannot be read @@ -87,12 +91,70 @@ public class AaiSimulatorJaxRs { @Path("/{version:v16|v21}/network/pnfs/pnf/{pnfName}") @Consumes(MediaType.APPLICATION_JSON) @Produces("application/json") - public String aaiGetPnfQuery(@PathParam("pnfName") final String pnfName) throws IOException { - if (GETFAIL.equals(pnfName)) { - throw new IllegalArgumentException("query failed, as requested"); + public Response aaiGetPnfUsingPnfName(@PathParam("pnfName") final String pnfName) throws IOException { + return getResponse(pnfName, INVALID_PNF_FILE_NAME); + } + + /** + * A&AI get PNF query using pnf-id. + * + * @return the result + * @throws IOException if a response file cannot be read + */ + @GET + @Path("/{version:v16|v21}/network/pnfs/pnf") + @Consumes(MediaType.APPLICATION_JSON) + @Produces("application/json") + public Response aaiGetPnfUsingPnfId(@QueryParam("pnf-id") final String pnfId) throws IOException { + return getResponse(pnfId, INVALID_PNF_FILE_NAME); + } + + /** + * A&AI get VNF query using vnf-id. + * + * @return the result + * @throws IOException if a response file cannot be read + */ + @GET + @Path("/{version:v16|v21}/network/generic-vnfs/generic-vnf/{vnfId}") + @Consumes(MediaType.APPLICATION_JSON) + @Produces("application/json") + public Response aaiGetVnfUsingVnfId(@PathParam("vnfId") final String vnfId) throws IOException { + return getResponse(vnfId, INVALID_VNF_FILE_NAME); + } + + /** + * A&AI get VNF query using vnf-name. + * + * @return the result + * @throws IOException if a response file cannot be read + */ + @GET + @Path("/{version:v16|v21}/network/generic-vnfs/generic-vnf") + @Consumes(MediaType.APPLICATION_JSON) + @Produces("application/json") + public Response aaiGetVnfUsingVnfName(@QueryParam("vnf-name") final String vnfName) throws IOException { + return getResponse(vnfName, INVALID_VNF_FILE_NAME); + } + + private Response getResponse(final String expectedFileName, final String defaultFileName) { + String resourceLocation = getResourceLocation(); + var responseString = ResourceUtils.getResourceAsString(resourceLocation + expectedFileName + DOT_JSON); + if (null == responseString) { + // if a response file is not found in expected location, look for it in default location + responseString = ResourceUtils.getResourceAsString(DEFAULT_RESOURCE_LOCATION + expectedFileName + DOT_JSON); + } + if (null != responseString) { + return Response.ok(responseString).build(); + } else { + // if a response file is not available in expected or default location, return an appropriate 404 response + responseString = ResourceUtils.getResourceAsString(DEFAULT_RESOURCE_LOCATION + defaultFileName + DOT_JSON); + return Response.status(Response.Status.NOT_FOUND).entity(responseString).build(); } + } - return IOUtils.toString(getClass().getResource("aai/AaiGetPnfResponse.json"), - StandardCharsets.UTF_8); + private String getResourceLocation() { + return Registry.getOrDefault(this.getClass().getName() + "_RESOURCE_LOCATION", String.class, + DEFAULT_RESOURCE_LOCATION); } } diff --git a/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/AaiGetPnfResponse.json b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/demo-pnf.json index ce8eb75a7..ce8eb75a7 100644 --- a/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/AaiGetPnfResponse.json +++ b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/demo-pnf.json diff --git a/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-cq.json b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-cq.json new file mode 100644 index 000000000..b06e534ce --- /dev/null +++ b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-cq.json @@ -0,0 +1,14 @@ +{ + "requestError": { + "serviceException": { + "messageId": "SVC3001", + "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)", + "variables": [ + "GET", + "v16/query", + "Node Not Found. Start URI returned no vertexes, please check the start URI", + "ERR.5.4.6148" + ] + } + } +}
\ No newline at end of file diff --git a/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-pnf.json b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-pnf.json new file mode 100644 index 000000000..e3c981c21 --- /dev/null +++ b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-pnf.json @@ -0,0 +1,14 @@ +{ + "requestError": { + "serviceException": { + "messageId": "SVC3001", + "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)", + "variables": [ + "GET", + "network/pnfs/pnf", + "Node Not Found:No Node of type pnf found at: network/pnfs/pnf", + "ERR.5.4.6114" + ] + } + } +}
\ No newline at end of file diff --git a/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-vnf.json b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-vnf.json new file mode 100644 index 000000000..e636c6f96 --- /dev/null +++ b/models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-vnf.json @@ -0,0 +1,14 @@ +{ + "requestError": { + "serviceException": { + "messageId": "SVC3001", + "text": "Resource not found for %1 using id %2 (msg=%3) (ec=%4)", + "variables": [ + "GET", + "network/generic-vnfs/generic-vnf", + "Node Not Found:No Node of type generic-vnf found at: network/generic-vnfs/generic-vnf", + "ERR.5.4.6114" + ] + } + } +}
\ No newline at end of file |