aboutsummaryrefslogtreecommitdiffstats
path: root/models-interactions/model-simulators/src
diff options
context:
space:
mode:
authora.sreekumar <ajith.sreekumar@bell.ca>2021-10-15 18:02:21 +0100
committera.sreekumar <ajith.sreekumar@bell.ca>2021-10-19 15:07:29 +0100
commit125e445b650897d75967ed8d3710098a7702cf04 (patch)
tree817af70accb104dc5aedf107a97288b5b2d54ef9 /models-interactions/model-simulators/src
parent6ed822fabd7c39e71b821134fcf8ac299e261108 (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')
-rw-r--r--models-interactions/model-simulators/src/main/java/org/onap/policy/simulators/AaiSimulatorJaxRs.java86
-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.json14
-rw-r--r--models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-pnf.json14
-rw-r--r--models-interactions/model-simulators/src/main/resources/org/onap/policy/simulators/aai/invalid-vnf.json14
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