summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ms/generic-resource-api/pom.xml2
-rwxr-xr-xms/generic-resource-api/src/main/dc/docker-compose.yaml2
-rw-r--r--ms/generic-resource-api/src/main/docker/Dockerfile3
-rw-r--r--ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java34
-rwxr-xr-xms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java4
-rwxr-xr-xms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java4
-rw-r--r--ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java4
-rwxr-xr-xms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java4
-rwxr-xr-xms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java4
-rw-r--r--ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java345
-rw-r--r--ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java109
-rw-r--r--ms/generic-resource-api/src/test/resources/allotted-resource-item.json29
-rw-r--r--ms/generic-resource-api/src/test/resources/contrail-route-allotted-resource-1.json33
-rw-r--r--ms/generic-resource-api/src/test/resources/policy-update-notify-rpc.json7
-rw-r--r--ms/generic-resource-api/src/test/resources/port-mirror-assign-rpc.json46
-rw-r--r--ms/generic-resource-api/src/test/resources/port-mirror-configuration-1.json120
-rw-r--r--ms/generic-resource-api/src/test/resources/port-mirror-configuration-item.json116
-rw-r--r--ms/generic-resource-api/src/test/resources/service1-vfmodule-item.json422
-rw-r--r--ms/generic-resource-api/src/test/resources/service9.json268
-rw-r--r--ms/generic-resource-api/src/test/resources/vf-module-assign-rpc.json57
-rw-r--r--ms/generic-resource-api/src/test/resources/vnf-get-resource-request-expected.json1
-rw-r--r--ms/generic-resource-api/src/test/resources/vnf-get-resource-request-rpc.json15
22 files changed, 1601 insertions, 28 deletions
diff --git a/ms/generic-resource-api/pom.xml b/ms/generic-resource-api/pom.xml
index 6f91bb4..555f2a2 100644
--- a/ms/generic-resource-api/pom.xml
+++ b/ms/generic-resource-api/pom.xml
@@ -26,7 +26,7 @@
<sdnc.northbound.version>2.1.1-SNAPSHOT</sdnc.northbound.version>
<sdnc.oam.version>2.1.1-SNAPSHOT</sdnc.oam.version>
- <base.image.name>onap/ccsdk-alpine-j11-image</base.image.name>
+ <base.image.name>nexus3.onap.org:10001/onap/ccsdk-alpine-j11-image</base.image.name>
<image.name>onap/sdnc-gra-image</image.name>
<ccsdk.project.version>${project.version}</ccsdk.project.version>
<ccsdk.build.timestamp>${maven.build.timestamp}</ccsdk.build.timestamp>
diff --git a/ms/generic-resource-api/src/main/dc/docker-compose.yaml b/ms/generic-resource-api/src/main/dc/docker-compose.yaml
index fc70f43..ba7b5fa 100755
--- a/ms/generic-resource-api/src/main/dc/docker-compose.yaml
+++ b/ms/generic-resource-api/src/main/dc/docker-compose.yaml
@@ -1,4 +1,4 @@
-version: '2.1'
+version: '2.0'
services:
db:
diff --git a/ms/generic-resource-api/src/main/docker/Dockerfile b/ms/generic-resource-api/src/main/docker/Dockerfile
index 79dda69..9c925f2 100644
--- a/ms/generic-resource-api/src/main/docker/Dockerfile
+++ b/ms/generic-resource-api/src/main/docker/Dockerfile
@@ -26,7 +26,8 @@ ENV LOG_PATH /var/log/onap/sdnc
USER root
# Install sudo and IP utilities
-RUN apk update && apk --no-cache add sudo iputils openssl
+#RUN apk update && apk --no-cache add sudo iputils openssl
+RUN HTTP_PROXY=http://135.28.13.29:8080 && apk update && apk --no-cache add sudo iputils openssl
# Enable wheel group
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
index 6a4857b..2cef1a0 100644
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiController.java
@@ -122,7 +122,9 @@ public class ConfigApiController implements ConfigApi {
if (pmConfigurations.isEmpty()) {
log.info("No configuration data found with id [{}]",configurationId);
- return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
} else {
ConfigPortMirrorConfigurations pmConfiguration = pmConfigurations.get(0);
retval = new GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration();
@@ -183,7 +185,10 @@ public class ConfigApiController implements ConfigApi {
List<ConfigPortMirrorConfigurations> configPortMirrorConfigurations = configPortMirrorConfigurationsRepository.findByConfigurationId(configurationId);
if ((configPortMirrorConfigurations == null) || (configPortMirrorConfigurations.isEmpty())) {
- throw new RestProtocolException("data-missing", "No port-mirror-configuration entry found", HttpStatus.NOT_FOUND.value());
+ log.info("No configuration data found with id [{}]", configurationId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
}
try {
@@ -226,7 +231,10 @@ public class ConfigApiController implements ConfigApi {
List<ConfigContrailRouteAllottedResources> allottedResources = configContrailRouteAllottedResourcesRepository.findByAllottedResourceId(allottedResourceId);
if (allottedResources.isEmpty()) {
- return new ResponseEntity<>(HttpStatus.NOT_FOUND);
+ log.info("No contrail-route-allotted-resource found with id [{}]", allottedResourceId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
}
else {
ConfigContrailRouteAllottedResources allottedResource = allottedResources.get(0);
@@ -309,7 +317,10 @@ public class ConfigApiController implements ConfigApi {
configContrailRouteAllottedResourcesRepository.findByAllottedResourceId(allottedResourceId);
if ((configContrailRouteAllottedResources == null) || (configContrailRouteAllottedResources.isEmpty())) {
- throw new RestProtocolException("data-missing", "No port-mirror-configuration entry found", HttpStatus.NOT_FOUND.value());
+ log.info("No contrail-route-allotted-resoure data found with id [{}]", allottedResourceId);
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
}
try {
@@ -347,7 +358,6 @@ public class ConfigApiController implements ConfigApi {
}
-
@Override
public ResponseEntity<GenericResourceApiPreloadModelInformation> configGENERICRESOURCEAPIpreloadInformationGet()
throws RestApplicationException {
@@ -2038,7 +2048,9 @@ public class ConfigApiController implements ConfigApi {
return new ResponseEntity<>(vfModule.get(), HttpStatus.OK);
} else {
log.info("No vf-module found for [{}]", vfModuleId);
- throw new RestApplicationException("data-missing", "Request could not be completed because the relevant data model content does not exist", HttpStatus.NOT_FOUND.value());
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
}
}
@@ -2157,14 +2169,16 @@ public class ConfigApiController implements ConfigApi {
log.info("GET | vf-module-topology for ({})", vfModuleId);
if(getObjectMapper().isPresent() && getAcceptHeader().isPresent()) {
if (getAcceptHeader().get().contains("application/json")) {
-
+ log.info("Something with header");
}
} else {
log.warn("ObjectMapper or HttpServletRequest not configured in default ConfigApi interface so no example is generated");
}
List<ConfigServices> services = configServicesRepository.findBySvcInstanceId(serviceInstanceId);
if((services == null) || (services.isEmpty())) {
- throw new RestProtocolException("data-missing", "No service entry found", HttpStatus.NOT_FOUND.value());
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
}
Optional<GenericResourceApiServicedataServicedataVnfsVnfVnfdataVfmodulesVfModule> vfModule =
@@ -2175,7 +2189,9 @@ public class ConfigApiController implements ConfigApi {
return new ResponseEntity<>(vfModule.get().getVfModuleData().getVfModuleTopology(), HttpStatus.OK);
} else {
log.info("No information found for {}", vfModuleId);
- throw new RestApplicationException("data-missing", "Request could not be completed because the relevant data model content does not exist", HttpStatus.NOT_FOUND.value());
+ throw new RestApplicationException("data-missing",
+ "Request could not be completed because the relevant data model content does not exist",
+ HttpStatus.NOT_FOUND.value());
}
}
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java
index 4aa0960..9c3aa91 100755
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigContrailRouteAllottedResourcesRepository.java
@@ -21,10 +21,10 @@
package org.onap.sdnc.apps.ms.gra.data;
import org.springframework.data.repository.CrudRepository;
-
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
-
+@Transactional
public interface ConfigContrailRouteAllottedResourcesRepository extends CrudRepository<ConfigContrailRouteAllottedResources, Long> {
List<ConfigContrailRouteAllottedResources> findByAllottedResourceId(String allottedResourceId);
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java
index 4c630c9..9ca148b 100755
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigPortMirrorConfigurationsRepository.java
@@ -21,10 +21,10 @@
package org.onap.sdnc.apps.ms.gra.data;
import org.springframework.data.repository.CrudRepository;
-
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
-
+@Transactional
public interface ConfigPortMirrorConfigurationsRepository extends CrudRepository<ConfigPortMirrorConfigurations, Long> {
List<ConfigPortMirrorConfigurations> findByConfigurationId(String configurationId);
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java
index 62e09b7..5b43947 100644
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/ConfigServicesRepository.java
@@ -21,10 +21,10 @@
package org.onap.sdnc.apps.ms.gra.data;
import org.springframework.data.repository.CrudRepository;
-
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
-
+@Transactional
public interface ConfigServicesRepository extends CrudRepository<ConfigServices, Long> {
List<ConfigServices> findBySvcInstanceId(String svcInstanceId);
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java
index 2bb98cb..c737721 100755
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalContrailRouteAllottedResourcesRepository.java
@@ -21,10 +21,10 @@
package org.onap.sdnc.apps.ms.gra.data;
import org.springframework.data.repository.CrudRepository;
-
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
-
+@Transactional
public interface OperationalContrailRouteAllottedResourcesRepository extends CrudRepository<OperationalContrailRouteAllottedResources, Long> {
List<OperationalContrailRouteAllottedResources> findByAllottedResourceId(String allottedResourceId);
diff --git a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java
index 5f4dce7..1d57c86 100755
--- a/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java
+++ b/ms/generic-resource-api/src/main/java/org/onap/sdnc/apps/ms/gra/data/OperationalPortMirrorConfigurationsRepository.java
@@ -21,10 +21,10 @@
package org.onap.sdnc.apps.ms.gra.data;
import org.springframework.data.repository.CrudRepository;
-
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
-
+@Transactional
public interface OperationalPortMirrorConfigurationsRepository extends CrudRepository<OperationalPortMirrorConfigurations, Long> {
List<OperationalPortMirrorConfigurations> findByConfigurationId(String configurationId);
diff --git a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java
index b9ec3de..75e1a31 100644
--- a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java
+++ b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/ConfigApiServicesControllerTest.java
@@ -16,8 +16,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.sdnc.apps.ms.gra.GenericResourceMsApp;
-import org.onap.sdnc.apps.ms.gra.data.ConfigServices;
-import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
+import org.onap.sdnc.apps.ms.gra.data.*;
import org.onap.sdnc.apps.ms.gra.swagger.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
@@ -37,6 +36,8 @@ public class ConfigApiServicesControllerTest {
private final static String CONFIG_SERVICES_URL = "/config/GENERIC-RESOURCE-API:services/";
private final static String CONFIG_SERVICES_SERVICE_URL = "/config/GENERIC-RESOURCE-API:services/service/";
+ private final static String CONFIG_CR_ARS_CR_AR_URL = "/config/GENERIC-RESOURCE-API:contrail-route-allotted-resources/contrail-route-allotted-resource/";
+ private final static String CONFIG_PM_CONFIGS_PM_CONFIG_URL = "/config/GENERIC-RESOURCE-API:port-mirror-configurations/port-mirror-configuration/";
@Autowired
private MockMvc mvc;
@@ -44,6 +45,12 @@ public class ConfigApiServicesControllerTest {
@Autowired
ConfigServicesRepository configServicesRepository;
+ @Autowired
+ ConfigContrailRouteAllottedResourcesRepository configContrailRouteAllottedResourcesRepository;
+
+ @Autowired
+ ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
+
@BeforeClass
public static void setUp() throws Exception {
System.out.println("ConfigApiServicesControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
@@ -669,6 +676,312 @@ public class ConfigApiServicesControllerTest {
assertEquals(1, configServicesRepository.count());
}
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdPut() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/port-mirror-configuration-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+
+ // Test with existing port-mirror-configuration
+ // Load data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assertEquals(2, configPortMirrorConfigurationsRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(2, configPortMirrorConfigurationsRepository.count());
+
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdDelete() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPortMirrorConfigurationsRepository.count());
+
+ // Load data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assertEquals(1, configPortMirrorConfigurationsRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configPortMirrorConfigurationsRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdGet() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ // Test with data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assert(configPortMirrorConfigurationsRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with bad allotted-resource-id in input
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"dummy/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIportMirrorConfigurationsPortMirrorConfigurationConfigurationIdConfigurationDataPortMirrorConfigurationTopologyGet() throws Exception {
+ // Clean up data
+ configPortMirrorConfigurationsRepository.deleteAll();
+
+ // Test with data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+ assert(configPortMirrorConfigurationsRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/configuration-data/port-mirror-configuration-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with dummy allotted-resource-id
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"dummy/configuration-data/port-mirror-configuration-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_PM_CONFIGS_PM_CONFIG_URL+"pm-config-1/configuration-data/port-mirror-configuration-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdPut() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/allotted-resource-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_CR_ARS_CR_AR_URL+"ar2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+
+ // Test with existing allotted-resource
+ // Load data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assertEquals(1, configContrailRouteAllottedResourcesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_CR_ARS_CR_AR_URL+"ar2/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(201, mvcResult.getResponse().getStatus());
+ assertEquals(2, configContrailRouteAllottedResourcesRepository.count());
+
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdDelete() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configContrailRouteAllottedResourcesRepository.count());
+
+ // Load data
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assertEquals(1, configContrailRouteAllottedResourcesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(204, mvcResult.getResponse().getStatus());
+ assertEquals(0, configContrailRouteAllottedResourcesRepository.count());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdGet() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ // Test with data
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assert(configContrailRouteAllottedResourcesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with bad allotted-resource-id in input
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"dummy/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIcontrailRouteAllottedResourcesContrailRouteAllottedResourceAllottedResourceIdAllottedResourceDataContrailRouteTopologyGet() throws Exception {
+ // Clean up data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+
+ // Test with data
+ loadContrailRouteAllottedResourceData("src/test/resources/contrail-route-allotted-resource-1.json");
+ assert(configContrailRouteAllottedResourcesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/allotted-resource-data/contrail-route-topology/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with dummy allotted-resource-id
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"dummy/allotted-resource-data/contrail-route-topology/").contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configContrailRouteAllottedResourcesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_CR_ARS_CR_AR_URL+"ar1/allotted-resource-data/contrail-route-topology/").contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdPut() throws Exception {
+ // Clean up data
+ configServicesRepository.deleteAll();
+
+ String content = readFileContent("src/test/resources/service1-vfmodule-item.json");
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/vf-1/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(400, mvcResult.getResponse().getStatus());
+
+ // Test with existing service and vnf
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ mvcResult = mvc.perform(MockMvcRequestBuilders.put(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/vf-1/")
+ .contentType(MediaType.APPLICATION_JSON).content(content)).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(1, configServicesRepository.count());
+
+ // Clean up data
+ configServicesRepository.deleteAll();
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdDelete() throws Exception {
+ // Clean up data
+ configServicesRepository.deleteAll();
+
+ // Test with no data
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(400, mvcResult.getResponse().getStatus());
+ assertEquals(0, configServicesRepository.count());
+
+ // Load data
+ loadServicesData("src/test/resources/service1.json");
+ assertEquals(1, configServicesRepository.count());
+
+ // Test with data
+ mvcResult = mvc.perform(MockMvcRequestBuilders.delete(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdGet() throws Exception {
+ // Clean up data
+ configServicesRepository.deleteAll();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with bad vf-module-id in input
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/dummyid/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configServicesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/")
+ .contentType(MediaType.APPLICATION_JSON).content("")).andReturn();
+
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
+ @Test
+ public void configGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataVnfsVnfVnfIdVnfDataVfModulesVfModuleVfModuleIdVfModuleDataVfModuleTopologyGet() throws Exception {
+ // Clean up data
+ configServicesRepository.deleteAll();
+
+ // Test with data
+ loadServicesData("src/test/resources/service1.json");
+ assert(configServicesRepository.count() > 0);
+
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/vf-module-data/vf-module-topology/").contentType(MediaType.APPLICATION_JSON)
+ .content("")).andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Test with existing service and vnf but with dummy vf-module-id in input
+ configServicesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/dummy/vf-module-data/vf-module-topology/").contentType(MediaType.APPLICATION_JSON)
+ .content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+
+ // Test with no data
+ configServicesRepository.deleteAll();
+ mvcResult = mvc.perform(MockMvcRequestBuilders.get(CONFIG_SERVICES_SERVICE_URL+"service1/service-data/vnfs/vnf/fae319cc-68d6-496f-be1e-a09e133c71d4/vnf-data/vf-modules/vf-module/269bda16-f40c-41a9-baef-e8905ab2b70e/vf-module-data/vf-module-topology/").contentType(MediaType.APPLICATION_JSON)
+ .content("")).andReturn();
+ assertEquals(404, mvcResult.getResponse().getStatus());
+ }
+
private String readFileContent(String path) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(path)));
return content;
@@ -725,4 +1038,32 @@ public class ConfigApiServicesControllerTest {
configServicesRepository.save(newService);
}
+ private void loadContrailRouteAllottedResourceData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiContrailRouteAllottedResources allottedResources = objectMapper.readValue(content, GenericResourceApiContrailRouteAllottedResources.class);
+
+ for (GenericResourceApiContrailrouteallottedresourcesContrailRouteAllottedResource allottedResource : allottedResources.getContrailRouteAllottedResource()) {
+ ConfigContrailRouteAllottedResources newContrailRouteAllottedResource = new ConfigContrailRouteAllottedResources();
+ newContrailRouteAllottedResource.setAllottedResourceId(allottedResource.getAllottedResourceId());
+ newContrailRouteAllottedResource.setArData(objectMapper.writeValueAsString(allottedResource.getAllottedResourceData()));
+ newContrailRouteAllottedResource.setAllottedResourceStatus(allottedResource.getAllottedResourceStatus());
+ configContrailRouteAllottedResourcesRepository.save(newContrailRouteAllottedResource);
+ }
+ }
+
+ private void loadPortMirrorConfigurationData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiPortMirrorConfigurations pmConfigurations = objectMapper.readValue(content, GenericResourceApiPortMirrorConfigurations.class);
+
+ for (GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration pmConfig : pmConfigurations.getPortMirrorConfiguration()) {
+ ConfigPortMirrorConfigurations newPmConfig = new ConfigPortMirrorConfigurations();
+ newPmConfig.setConfigureationId(pmConfig.getConfigurationId());
+ newPmConfig.setPmcData(objectMapper.writeValueAsString(pmConfig.getConfigurationData()));
+ newPmConfig.setPortMirrorConfigurationStatus(pmConfig.getConfigurationStatus());
+ configPortMirrorConfigurationsRepository.save(newPmConfig);
+ }
+ }
+
} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
index 60dc811..3d24b22 100644
--- a/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
+++ b/ms/generic-resource-api/src/test/java/org/onap/sdnc/apps/ms/gra/controllers/OperationsApiControllerTest.java
@@ -13,10 +13,7 @@ import org.junit.BeforeClass;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.onap.sdnc.apps.ms.gra.GenericResourceMsApp;
-import org.onap.sdnc.apps.ms.gra.data.ConfigPreloadDataRepository;
-import org.onap.sdnc.apps.ms.gra.data.ConfigServices;
-import org.onap.sdnc.apps.ms.gra.data.ConfigServicesRepository;
-import org.onap.sdnc.apps.ms.gra.data.OperationalServicesRepository;
+import org.onap.sdnc.apps.ms.gra.data.*;
import org.onap.sdnc.apps.ms.gra.swagger.model.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
@@ -39,6 +36,10 @@ public class OperationsApiControllerTest {
private final static String SERVICE_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:service-topology-operation/";
private final static String NETWORK_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:network-topology-operation/";
private final static String VNF_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:vnf-topology-operation/";
+ private final static String VF_MODULE_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:vf-module-topology-operation/";
+ private final static String PORT_MIRROR_TOPOLOGY_URL = "/operations/GENERIC-RESOURCE-API:port-mirror-topology-operation/";
+ private final static String VNF_GET_RESOURCE_REQUEST_URL = "/operations/GENERIC-RESOURCE-API:vnf-get-resource-request/";
+ private final static String POLICY_UPDATE_NOTIFY_URL = "/operations/GENERIC-RESOURCE-API:policy-update-notify-operation/";
@Autowired
@@ -56,6 +57,12 @@ public class OperationsApiControllerTest {
@Autowired
OperationsApiController operationsApiController;
+ @Autowired
+ ConfigPortMirrorConfigurationsRepository configPortMirrorConfigurationsRepository;
+
+ @Autowired
+ OperationalPortMirrorConfigurationsRepository operationalPortMirrorConfigurationsRepository;
+
@BeforeClass
public static void setUp() throws Exception {
System.out.println("OperationsApiControllerTest: Setting serviceLogicProperties, serviceLogicDirectory and sdnc.config.dir");
@@ -206,6 +213,86 @@ public class OperationsApiControllerTest {
}
+ @Test
+ public void operationsGENERICRESOURCEAPIvfModuleTopologyOperationAssignPost() throws Exception {
+
+ // Remove any existing service data
+ configServicesRepository.deleteAll();
+ operationalServicesRepository.deleteAll();
+
+ // Load services data
+ loadServicesData("src/test/resources/service1.json");
+
+ // Add invalid content
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(VF_MODULE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/vf-module-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(VF_MODULE_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIportMirrorConfigurationTopologyOperationAssignPost() throws Exception {
+
+ // Remove any existing service data
+ configPortMirrorConfigurationsRepository.deleteAll();
+ operationalPortMirrorConfigurationsRepository.deleteAll();
+
+ // Load port-mirror-configuration data
+ loadPortMirrorConfigurationData("src/test/resources/port-mirror-configuration-1.json");
+
+ // Load services data
+ loadServicesData("src/test/resources/service1.json");
+
+ // Add invalid content for request input
+ String content = readFileContent("src/test/resources/preload1-rpc-vfmodule.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(PORT_MIRROR_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ // Add valid content
+ content = readFileContent("src/test/resources/port-mirror-assign-rpc.json");
+ mvcResult = mvc.perform(MockMvcRequestBuilders.post(PORT_MIRROR_TOPOLOGY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+
+ }
+
+ @Test
+ public void operationsGENERICRESOURCEAPIvnfGetResourceRequestPost() throws Exception {
+
+ // Remove any existing service data
+ configServicesRepository.deleteAll();
+ operationalServicesRepository.deleteAll();
+
+ // Load services data
+ loadServicesData("src/test/resources/service9.json");
+
+ // Add valid content
+ String content = readFileContent("src/test/resources/vnf-get-resource-request-rpc.json");
+ String expected = readFileContent("src/test/resources/vnf-get-resource-request-expected.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(VNF_GET_RESOURCE_REQUEST_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ assertEquals(expected, mvcResult.getResponse().getContentAsString());
+
+ }
+ @Test
+ public void operationsGENERICRESOURCEAPIpolicyUpdateNotifyOperationPost() throws Exception {
+
+ // Add valid content
+ String content = readFileContent("src/test/resources/policy-update-notify-rpc.json");
+ MvcResult mvcResult = mvc.perform(MockMvcRequestBuilders.post(POLICY_UPDATE_NOTIFY_URL).contentType(MediaType.APPLICATION_JSON).content(content))
+ .andReturn();
+ assertEquals(200, mvcResult.getResponse().getStatus());
+ }
+
private void loadServicesData(String path) throws IOException {
ObjectMapper objectMapper = new ObjectMapper();
@@ -221,6 +308,20 @@ public class OperationsApiControllerTest {
}
}
+ private void loadPortMirrorConfigurationData(String path) throws IOException {
+ ObjectMapper objectMapper = new ObjectMapper();
+ String content = readFileContent(path);
+ GenericResourceApiPortMirrorConfigurations pmConfigurations = objectMapper.readValue(content, GenericResourceApiPortMirrorConfigurations.class);
+
+ for (GenericResourceApiPortmirrorconfigurationsPortMirrorConfiguration pmConfig : pmConfigurations.getPortMirrorConfiguration()) {
+ ConfigPortMirrorConfigurations newPmConfig = new ConfigPortMirrorConfigurations();
+ newPmConfig.setConfigureationId(pmConfig.getConfigurationId());
+ newPmConfig.setPmcData(objectMapper.writeValueAsString(pmConfig.getConfigurationData()));
+ newPmConfig.setPortMirrorConfigurationStatus(pmConfig.getConfigurationStatus());
+ configPortMirrorConfigurationsRepository.save(newPmConfig);
+ }
+ }
+
private String readFileContent(String path) throws IOException {
String content = new String(Files.readAllBytes(Paths.get(path)));
return content;
diff --git a/ms/generic-resource-api/src/test/resources/allotted-resource-item.json b/ms/generic-resource-api/src/test/resources/allotted-resource-item.json
new file mode 100644
index 0000000..5aa3371
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/allotted-resource-item.json
@@ -0,0 +1,29 @@
+{
+ "allotted-resource-id": "ar2",
+ "allotted-resource-data": {
+ "allotted-resource-oper-status": {
+ "create-timestamp": "2020-11-24T12:41:01.796Z",
+ "order-status": "Active"
+ },
+ "contrail-route-topology": {
+ "contrail-route-assignments": {
+ "contrail-id": "cr2",
+ "dest-network": {
+ "network-id": "19cdfce4-9124-4bbf-83bd-5140931bb519",
+ "network-role": "pktmirror"
+ },
+ "fq-name": "default-domain.GRP-27529-T-IST-13C.GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "source-network": {
+ "network-id": "1610d17a-fb91-48ac-9d4c-43f739fdbe54",
+ "network-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP"
+ }
+ },
+ "allotted-resource-identifiers": {
+ "allotted-resource-id": "ar2",
+ "allotted-resource-type": "contrail-route",
+ "allotted-resource-name": "GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "parent-service-instance-id": "service1"
+ }
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/contrail-route-allotted-resource-1.json b/ms/generic-resource-api/src/test/resources/contrail-route-allotted-resource-1.json
new file mode 100644
index 0000000..193002a
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/contrail-route-allotted-resource-1.json
@@ -0,0 +1,33 @@
+{
+ "contrail-route-allotted-resource" : [
+ {
+ "allotted-resource-id": "ar1",
+ "allotted-resource-data": {
+ "allotted-resource-oper-status": {
+ "create-timestamp": "2020-11-24T12:41:01.796Z",
+ "order-status": "Active"
+ },
+ "contrail-route-topology": {
+ "contrail-route-assignments": {
+ "contrail-id": "cr1",
+ "dest-network": {
+ "network-id": "19cdfce4-9124-4bbf-83bd-5140931bb519",
+ "network-role": "pktmirror"
+ },
+ "fq-name": "default-domain.GRP-27529-T-IST-13C.GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "source-network": {
+ "network-id": "1610d17a-fb91-48ac-9d4c-43f739fdbe54",
+ "network-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP"
+ }
+ },
+ "allotted-resource-identifiers": {
+ "allotted-resource-id": "ar1",
+ "allotted-resource-type": "contrail-route",
+ "allotted-resource-name": "GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12_dyh2b_GRP-27529-T-SIL-13C_gn_SCTPA_IP_pktmirror_policy_32",
+ "parent-service-instance-id": "service1"
+ }
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/policy-update-notify-rpc.json b/ms/generic-resource-api/src/test/resources/policy-update-notify-rpc.json
new file mode 100644
index 0000000..6e1c101
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/policy-update-notify-rpc.json
@@ -0,0 +1,7 @@
+{
+ "input": {
+ "policy-name": "name",
+ "update-type": "Update",
+ "version-id": "1.0"
+ }
+}
diff --git a/ms/generic-resource-api/src/test/resources/port-mirror-assign-rpc.json b/ms/generic-resource-api/src/test/resources/port-mirror-assign-rpc.json
new file mode 100644
index 0000000..0b9b0b3
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/port-mirror-assign-rpc.json
@@ -0,0 +1,46 @@
+{
+ "input": {
+ "request-information": {
+ "request-action": "CreatePortMirrorConfigurationInstance",
+ "source": "MSO",
+ "request-id": "pm-request-1"
+ },
+ "sdnc-request-header": {
+ "svc-request-id": "767f2d08-e022-4000-97c2-61c002ebc740",
+ "svc-notification-url": "https://mso-bpmn-url",
+ "svc-action": "assign"
+ },
+ "service-information": {
+ "subscription-service-type": "viprsvc",
+ "service-instance-id": "service1"
+ },
+ "configuration-information": {
+ "onap-model-information": {
+ "model-name": "SmsfNc2578..smsf_base..module-0",
+ "model-version": "3",
+ "model-customization-uuid": "cfg-customization-uuid-1",
+ "model-uuid": "795f1014-7fe5-4c4f-a0ca-dc6ebd2185ab",
+ "model-invariant-uuid": "6265446b-58a6-4689-860f-78bada0faf2c"
+ },
+ "configuration-id": "cfg-1",
+ "configuration-type": "PORT-MIRROR",
+ "configuration-sub-type": "vprobe"
+ },
+ "port-mirror-configuration-request-input": {
+ "source-port": {
+ "source-port-id": "1",
+ "vnf-information": {
+ "vnf-id": "mob-vnf-1"
+ }
+ },
+ "dest-port": {
+ "dest-port-id": "1",
+ "vnf-information": {
+ "vnf-id": "mob-vnf-2"
+ }
+ }
+ },
+ "aic-cloud-region": "mtn6",
+ "tenant": "4714fe06cc24414c914c51ca0aa1bf84"
+ }
+}
diff --git a/ms/generic-resource-api/src/test/resources/port-mirror-configuration-1.json b/ms/generic-resource-api/src/test/resources/port-mirror-configuration-1.json
new file mode 100644
index 0000000..446235d
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/port-mirror-configuration-1.json
@@ -0,0 +1,120 @@
+{
+ "port-mirror-configuration": [
+ {
+ "configuration-data": {
+ "configuration-oper-status": {
+ "last-action": "CreatePortMirrorConfigurationInstance",
+ "last-rpc-action": "activate",
+ "order-status": "Active"
+ },
+ "configuration-operation-information": {
+ "configuration-information": {
+ "configuration-id": "pm-config-1",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "onap-model-information": {
+ "model-customization-uuid": "770c991a-47fb-4225-8d72-4790847f8307",
+ "model-invariant-uuid": "a81abec0-222e-4fb2-b1c6-c4162359b2b3",
+ "model-name": "Port Mirroring Configuration",
+ "model-uuid": "18af239e-5397-4224-816f-d2850f3fab38",
+ "model-version": "23.0"
+ }
+ },
+ "port-mirror-configuration-request-input": {
+ "dest-port": {
+ "vnf-information": {
+ "vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5"
+ }
+ },
+ "source-port": {
+ "vnf-information": {
+ "vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d"
+ }
+ }
+ },
+ "request-information": {
+ "request-action": "CreatePortMirrorConfigurationInstance",
+ "request-id": "61fe8925-fb53-4968-b9de-74be4acd06cc",
+ "source": "MSO"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-notification-url": "https://mso-sdnc-s3.ecomp.idns.aic.cip.att.com:30254/adapters/rest/SDNCNotify",
+ "svc-request-id": "ba937e51-6baf-486c-9851-3c6a646c9256"
+ },
+ "service-information": {
+ "global-customer-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5",
+ "subscription-service-type": "Mobility"
+ }
+ },
+ "port-mirror-configuration-topology": {
+ "configuration-identifiers": {
+ "configuration-id": "pm-config-1",
+ "configuration-name": "vMME02_VLC_Port_Mirroring_DYH2B_SCTPA",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "parent-service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "port-mirror-configuration-assignments": {
+ "cloud-owner": "att-aic",
+ "cloud-region-id": "dyh2b",
+ "dest-network-fqdn": "default-domain:GRP-27529-T-SIL-13B:GRP-27529-T-SIL-13B_vprobe_int_pkmirror1",
+ "dest-vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5",
+ "dest-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-1",
+ "instance-group-role": "pktmirror",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "owning-entity": "10c645f5-9924-4b89-bec0-b17cf49d3cad",
+ "probe-type": "vprobe",
+ "route-allotted-resource-id": "286d41ea-d644-46b2-98fc-643ea1b591d1",
+ "source-capacity": 100000,
+ "source-network-fqdn": "default-domain:GRP-27529-T-IST-13C:GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12",
+ "source-to-dest-maps": {
+ "source-to-dest-map": [
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.4"
+ }
+ },
+ "dest-port-id": "b91beeda-fae3-4a99-9354-06c965db83f7",
+ "dest-port-name": "zdyh2bprbvlba_module04-vlbagent_eph_aff_0_int_pktmirror_port_0-m5ylyrybbmmb",
+ "dest-vserver-id": "9e2fc5ea-a88f-4955-bda8-10e75c173a8e",
+ "source-port-id": "7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-port-name": "default-virtual-machine-interface-7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-vserver-id": "2e3a8bb2-75ff-4e97-a888-961bfc624caa"
+ },
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.3"
+ }
+ },
+ "dest-port-id": "7cf3fda3-3153-4655-ae47-36fcf4439073",
+ "dest-port-name": "zdyh2bprbvlba_base_5-vlbagentbase_eph_aff_0_int_pktmirror_port_0-vkvey3eyoqk2",
+ "dest-vserver-id": "165db140-c09f-411a-bfdc-b8e6c7dbbda4",
+ "source-port-id": "0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-port-name": "default-virtual-machine-interface-0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-vserver-id": "b5bf2e1f-9f90-445c-be00-2c882e82d1d7"
+ }
+ ]
+ },
+ "source-vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d",
+ "source-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-1",
+ "instance-group-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "tenant": "GRP-27529-T-IST-13C",
+ "tenant-context": "Test",
+ "tenant-id": "077445458306425499337c98bafc8c47",
+ "vnics-group-id": "97"
+ }
+ }
+ },
+ "configuration-id": "pm-config-1"
+ }
+ ]
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/port-mirror-configuration-item.json b/ms/generic-resource-api/src/test/resources/port-mirror-configuration-item.json
new file mode 100644
index 0000000..780d079
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/port-mirror-configuration-item.json
@@ -0,0 +1,116 @@
+{
+ "configuration-data": {
+ "configuration-oper-status": {
+ "last-action": "CreatePortMirrorConfigurationInstance",
+ "last-rpc-action": "activate",
+ "order-status": "Active"
+ },
+ "configuration-operation-information": {
+ "configuration-information": {
+ "configuration-id": "pm-config-2",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "onap-model-information": {
+ "model-customization-uuid": "770c991a-47fb-4225-8d72-4790847f8307",
+ "model-invariant-uuid": "a81abec0-222e-4fb2-b1c6-c4162359b2b3",
+ "model-name": "Port Mirroring Configuration",
+ "model-uuid": "18af239e-5397-4224-816f-d2850f3fab38",
+ "model-version": "23.0"
+ }
+ },
+ "port-mirror-configuration-request-input": {
+ "dest-port": {
+ "vnf-information": {
+ "vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5"
+ }
+ },
+ "source-port": {
+ "vnf-information": {
+ "vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d"
+ }
+ }
+ },
+ "request-information": {
+ "request-action": "CreatePortMirrorConfigurationInstance",
+ "request-id": "61fe8925-fb53-4968-b9de-74be4acd06cc",
+ "source": "MSO"
+ },
+ "sdnc-request-header": {
+ "svc-action": "activate",
+ "svc-notification-url": "https://mso-sdnc-s3.ecomp.idns.aic.cip.att.com:30254/adapters/rest/SDNCNotify",
+ "svc-request-id": "ba937e51-6baf-486c-9851-3c6a646c9256"
+ },
+ "service-information": {
+ "global-customer-id": "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5",
+ "subscription-service-type": "Mobility"
+ }
+ },
+ "port-mirror-configuration-topology": {
+ "configuration-identifiers": {
+ "configuration-id": "pm-config-2",
+ "configuration-name": "vMME02_VLC_Port_Mirroring_DYH2B_SCTPA",
+ "configuration-sub-type": "vprobe",
+ "configuration-type": "PORT-MIRROR",
+ "parent-service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "port-mirror-configuration-assignments": {
+ "cloud-owner": "att-aic",
+ "cloud-region-id": "dyh2b",
+ "dest-network-fqdn": "default-domain:GRP-27529-T-SIL-13B:GRP-27529-T-SIL-13B_vprobe_int_pkmirror1",
+ "dest-vnf-id": "039c2d5d-4efb-4145-9890-a6b5373cdfa5",
+ "dest-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-2",
+ "instance-group-role": "pktmirror",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "owning-entity": "10c645f5-9924-4b89-bec0-b17cf49d3cad",
+ "probe-type": "vprobe",
+ "route-allotted-resource-id": "286d41ea-d644-46b2-98fc-643ea1b591d1",
+ "source-capacity": 100000,
+ "source-network-fqdn": "default-domain:GRP-27529-T-IST-13C:GRP-27529-T-SIL-13C_gn_SCTPA_IP_net_12",
+ "source-to-dest-maps": {
+ "source-to-dest-map": [
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.4"
+ }
+ },
+ "dest-port-id": "b91beeda-fae3-4a99-9354-06c965db83f7",
+ "dest-port-name": "zdyh2bprbvlba_module04-vlbagent_eph_aff_0_int_pktmirror_port_0-m5ylyrybbmmb",
+ "dest-vserver-id": "9e2fc5ea-a88f-4955-bda8-10e75c173a8e",
+ "source-port-id": "7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-port-name": "default-virtual-machine-interface-7b6ee74c-cc2c-4290-95f2-2d89a3c4da74",
+ "source-vserver-id": "2e3a8bb2-75ff-4e97-a888-961bfc624caa"
+ },
+ {
+ "dest-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "107.114.102.3"
+ }
+ },
+ "dest-port-id": "7cf3fda3-3153-4655-ae47-36fcf4439073",
+ "dest-port-name": "zdyh2bprbvlba_base_5-vlbagentbase_eph_aff_0_int_pktmirror_port_0-vkvey3eyoqk2",
+ "dest-vserver-id": "165db140-c09f-411a-bfdc-b8e6c7dbbda4",
+ "source-port-id": "0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-port-name": "default-virtual-machine-interface-0fd4c63c-6fda-4564-af10-d3be157279ef",
+ "source-vserver-id": "b5bf2e1f-9f90-445c-be00-2c882e82d1d7"
+ }
+ ]
+ },
+ "source-vnf-id": "c5c92f5d-ed4d-4fb5-9ee1-b3eb562b1c6d",
+ "source-vnfc-instance-group-id": {
+ "configuration-id": "pm-config-2",
+ "instance-group-role": "GRP-27529-T-SIL-13C_gn_SCTPA_IP",
+ "service-instance-id": "156abc88-35d1-475a-85a1-e0e0a226cbd5"
+ },
+ "tenant": "GRP-27529-T-IST-13C",
+ "tenant-context": "Test",
+ "tenant-id": "077445458306425499337c98bafc8c47",
+ "vnics-group-id": "97"
+ }
+ }
+ },
+ "configuration-id": "pm-config-2"
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/service1-vfmodule-item.json b/ms/generic-resource-api/src/test/resources/service1-vfmodule-item.json
new file mode 100644
index 0000000..10f707f
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/service1-vfmodule-item.json
@@ -0,0 +1,422 @@
+{
+ "vf-module-data": {
+ "request-information": {
+ "notification-url": "string",
+ "order-number": "string",
+ "order-version": "string",
+ "request-action": "CreateNetworkInstance",
+ "request-id": "string",
+ "source": "string"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-notification-url": "string",
+ "svc-request-id": "string"
+ },
+ "service-information": {
+ "global-customer-id": "string",
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "service-id": "string",
+ "service-instance-id": "string",
+ "subscriber-name": "string",
+ "subscription-service-type": "string"
+ },
+ "vf-module-information": {
+ "from-preload": true,
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "vf-module-id": "vf-1",
+ "vf-module-type": "string"
+ },
+ "vf-module-level-oper-status": {
+ "create-timestamp": "string",
+ "last-action": "CreateNetworkInstance",
+ "last-order-status": "Active",
+ "last-rpc-action": "assign",
+ "last-svc-request-id": "string",
+ "modify-timestamp": "string",
+ "order-status": "Active"
+ },
+ "vf-module-request-input": {
+ "aic-clli": "string",
+ "aic-cloud-region": "string",
+ "cloud-owner": "string",
+ "request-version": "string",
+ "tenant": "string",
+ "vf-module-input-parameters": {
+ "param": [
+ {
+ "name": "string",
+ "resource-resolution-data": {
+ "capability-name": "string",
+ "payload": "string",
+ "resource-key": [
+ {
+ "name": "string",
+ "value": "string"
+ }
+ ],
+ "status": "string"
+ },
+ "value": "string"
+ }
+ ]
+ },
+ "vf-module-name": "vf-name-1"
+ },
+ "vf-module-topology": {
+ "aic-clli": "string",
+ "aic-cloud-region": "string",
+ "cloud-owner": "string",
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "sdnc-generated-cloud-resources": true,
+ "tenant": "string",
+ "vf-module-assignments": {
+ "dhcp-subnet-assignments": {
+ "dhcp-subnet-assignment": [
+ {
+ "ip-version": "string",
+ "network-role": "string",
+ "neutron-subnet-id": "string"
+ }
+ ]
+ },
+ "vf-module-status": "string",
+ "vlan-vnfc-instance-groups": {
+ "vlan-vnfc-instance-group": [
+ {
+ "instance-group-function": "string",
+ "instance-group-id": "string",
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnfcs": {
+ "vnfc": [
+ {
+ "vnfc-name": "string",
+ "vnic-groups": {
+ "vnic-group": [
+ {
+ "network-instance-group-function": "string",
+ "vlan-assignment-policy-name": "string",
+ "vlan-common-ip-addresses": {
+ "ip-addresses": {
+ "ipv4-address": "string",
+ "ipv6-address": "string",
+ "vipv4-address": "string",
+ "vipv6-address": "string"
+ }
+ },
+ "vlan-tag-index-next": 0,
+ "vlan-vnics": {
+ "vlan-vnic": [
+ {
+ "vnic-port-id": "string",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "network-id": "string",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "string",
+ "network-role-tag": "string",
+ "neutron-network-id": "string",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnic-interface-role": "string"
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vms": {
+ "vm": [
+ {
+ "nfc-naming-code": "string",
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "vm-count": 0,
+ "vm-names": {
+ "vm-name": [
+ "string"
+ ],
+ "vnfc-names": [
+ {
+ "vnfc-name": "string",
+ "vnfc-networks": {
+ "vnfc-network-data": [
+ {
+ "connection-point": {
+ "connection-point-id": "string",
+ "port-id": "string",
+ "vlan-data": [
+ {
+ "vlan-role": "string",
+ "vlan-tag-description": "string",
+ "vlan-tag-id": "string",
+ "vlan-uuid": "string"
+ }
+ ]
+ },
+ "vnfc-network-role": "string",
+ "vnfc-ports": {
+ "vnfc-port": [
+ {
+ "common-sub-interface-role": "string",
+ "vnfc-port-id": "string",
+ "vnic-sub-interfaces": {
+ "sub-interface-network-data": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "network-id": "string",
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-name": 0,
+ "network-role": "string",
+ "network-role-tag": "string",
+ "neutron-network-id": "string",
+ "vlan-tag-id": 0
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vnfc-subnet": [
+ {
+ "vnfc-ip-assignments": [
+ {
+ "vnfc-address-family": "ipv4",
+ "vnfc-subnet-dhcp": "Y",
+ "vnfc-subnet-ip": [
+ {
+ "ip-type": "FIXED",
+ "vnfc-client-key": "string",
+ "vnfc-ip-address": "string"
+ }
+ ],
+ "vnfc-subnet-ip-count": 0
+ }
+ ],
+ "vnfc-subnet-role": "string"
+ }
+ ],
+ "vnfc-type": "string"
+ }
+ ]
+ }
+ }
+ ]
+ },
+ "vm-networks": {
+ "vm-network": [
+ {
+ "floating-ips": {
+ "floating-ip-v4": [
+ "string"
+ ],
+ "floating-ip-v6": [
+ "string"
+ ]
+ },
+ "interface-route-prefixes": {
+ "interface-route-prefix": [
+ "string"
+ ]
+ },
+ "is-trunked": true,
+ "mac-addresses": {
+ "mac-address": [
+ "string"
+ ]
+ },
+ "network-information-items": {
+ "network-information-item": [
+ {
+ "ip-count": 0,
+ "ip-version": "string",
+ "network-ips": {
+ "network-ip": [
+ "string"
+ ]
+ },
+ "use-dhcp": "Y"
+ }
+ ]
+ },
+ "network-role": "string",
+ "network-role-tag": "string",
+ "related-networks": {
+ "related-network": [
+ {
+ "network-id": "string",
+ "network-role": "string",
+ "vlan-tags": {
+ "is-private": true,
+ "lower-tag-id": 0,
+ "upper-tag-id": 0,
+ "vlan-interface": "string"
+ }
+ }
+ ]
+ },
+ "segmentation-id": "string",
+ "sriov-parameters": {
+ "application-tags": {
+ "c-tags": {
+ "c-tag": [
+ "string"
+ ],
+ "ctag": [
+ "string"
+ ]
+ },
+ "ctags": {
+ "c-tag": [
+ "string"
+ ],
+ "ctag": [
+ "string"
+ ]
+ },
+ "s-tags": {
+ "s-tag": [
+ "string"
+ ],
+ "stag": [
+ "string"
+ ]
+ },
+ "stags": {
+ "s-tag": [
+ "string"
+ ],
+ "stag": [
+ "string"
+ ]
+ }
+ },
+ "heat-vlan-filters": {
+ "heat-vlan-filter": [
+ "string"
+ ]
+ }
+ }
+ }
+ ]
+ },
+ "vm-type": "string",
+ "vm-type-tag": "string"
+ }
+ ]
+ }
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "string",
+ "resource-resolution-data": {
+ "capability-name": "string",
+ "payload": "string",
+ "resource-key": [
+ {
+ "name": "string",
+ "value": "string"
+ }
+ ],
+ "status": "string"
+ },
+ "value": "string"
+ }
+ ]
+ },
+ "vf-module-topology-identifier": {
+ "vf-module-id": "vf-1",
+ "vf-module-name": "vf-name-1",
+ "vf-module-type": "string"
+ }
+ },
+ "vnf-information": {
+ "onap-model-information": {
+ "model-customization-uuid": "string",
+ "model-invariant-uuid": "string",
+ "model-name": "string",
+ "model-uuid": "string",
+ "model-version": "string"
+ },
+ "vnf-id": "fae319cc-68d6-496f-be1e-a09e133c71d4",
+ "vnf-name": "Python_ONAP_SDK_vnf_instance_2aff902a-4714-4d08-942d-d97b3a3b87c2",
+ "vnf-type": "service-nginx-ingress-1/nginx-ingress-1 0"
+ }
+ },
+ "vf-module-id": "vf-1"
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/service9.json b/ms/generic-resource-api/src/test/resources/service9.json
new file mode 100644
index 0000000..aef12ab
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/service9.json
@@ -0,0 +1,268 @@
+{
+ "service": [
+ {
+ "service-instance-id": "service9",
+ "service-data": {
+ "request-information": {
+ "request-id": "id-2006-2",
+ "source": "local-vm",
+ "request-action": "CreateServiceInstance"
+ },
+ "service-request-input": {
+ "service-instance-name": "service-name-9"
+ },
+ "service-information": {
+ "service-id": "service-id-0002",
+ "onap-model-information": {
+ "model-invariant-uuid": "service-model-invariant-uuid",
+ "model-name": "service-model-name",
+ "model-version": "service-model-version",
+ "model-uuid": "service-uuid-2006"
+ },
+ "service-instance-id": "service9",
+ "global-customer-id": "MCBH-2006",
+ "subscription-service-type": "viprsvc"
+ },
+ "service-topology": {
+ "service-topology-identifier": {
+ "service-instance-id": "service9",
+ "service-instance-name": "service-name-9",
+ "service-type": "viprsvc",
+ "global-customer-id": "MCBH-2006"
+ },
+ "onap-model-information": {
+ "model-invariant-uuid": "service-model-invariant-uuid",
+ "model-name": "service-model-name",
+ "model-version": "service-model-version",
+ "model-uuid": "service-uuid-2006"
+ }
+ },
+ "service-level-oper-status": {
+ "order-status": "Created",
+ "last-rpc-action": "assign",
+ "last-action": "CreateServiceInstance"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "id-0002"
+ },
+ "vnfs": {
+ "vnf": [
+ {
+ "vnf-id": "vnf-9",
+ "vnf-data": {
+ "vnf-level-oper-status": {
+ "order-status": "PendingCreate",
+ "last-rpc-action": "assign",
+ "last-action": "CreateVnfInstance"
+ },
+ "service-information": {
+ "service-instance-id": "service9",
+ "global-customer-id": "MCBH-2006"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "vnf-9",
+ "svc-notification-url": "http://dummy.att.com"
+ },
+ "vnf-information": {
+ "vnf-id": "vnf-9",
+ "vnf-name": "vnf-name-9",
+ "vnf-type": "vdns",
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "model-name-vnf-9",
+ "model-version": "4.0",
+ "model-customization-uuid": "cust-uuid-vnf-9",
+ "model-uuid": "bgb-model-ver-id"
+ }
+ },
+ "request-information": {
+ "request-id": "vnf-0002",
+ "source": "local-vm",
+ "request-action": "CreateVnfInstance"
+ },
+ "vnf-request-input": {
+ "vnf-name": "vnf-name-9",
+ "tenant": "pc-tenant-1",
+ "cloud-owner": "att-aic",
+ "aic-cloud-region": "mtn6"
+ },
+ "vnf-topology": {
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "model-name-vnf-9",
+ "model-version": "4.0",
+ "model-customization-uuid": "cust-uuid-vnf-200",
+ "model-uuid": "bgb-model-ver-id"
+ },
+ "vnf-parameters-data": {
+ "param": [
+ {
+ "name": "vnf_param_1",
+ "value": "vnf_value_1",
+ "resource-resolution-data": {
+ "status": "SUCCESS",
+ "payload": "vnfpayload",
+ "capability-name": "param-capability"
+ }
+ },
+ {
+ "name": "vnf_param_2",
+ "value": "vnf_value_2"
+ }
+ ]
+ },
+ "tenant": "pc-tenant-1",
+ "vnf-topology-identifier-structure": {
+ "vnf-id": "vnf-200",
+ "vnf-type": "vdns",
+ "nf-type": "NAT",
+ "nf-role": "vdns",
+ "nf-code": "vn2",
+ "nf-function": "AVPNvdns"
+ },
+ "aic-clli": "AUSTTXGR",
+ "aic-cloud-region": "mtn6"
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "vf-module-9",
+ "vf-module-data": {
+ "service-information": {
+ "service-id": "service-id-0002",
+ "onap-model-information": {
+ "model-invariant-uuid": "service-model-invariant-uuid",
+ "model-name": "service-model-name",
+ "model-version": "service-model-version",
+ "model-uuid": "service-uuid-2006"
+ },
+ "service-instance-id": "service9",
+ "global-customer-id": "MCBH-2006",
+ "subscription-service-type": "viprsvc"
+ },
+ "vf-module-topology": {
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "vSAMP10aDEV::base::module-0",
+ "model-version": "1.0",
+ "model-customization-uuid": "cust-uuid-vf-module-9",
+ "model-uuid": "bgb-model-ver-id"
+ },
+ "vf-module-parameters": {
+ "param": [
+ {
+ "name": "param1",
+ "value": "param_value_1"
+ },
+ {
+ "name": "param2",
+ "value": "param_value_2",
+ "resource-resolution-data": {
+ "resource-key": [
+ {
+ "name": "key1",
+ "value": "key_value_1"
+ },
+ {
+ "name": "key2",
+ "value": "key_value_2"
+ }
+ ],
+ "payload": "12",
+ "capability-name": "walkingmachine",
+ "status": "SUCCESS"
+ }
+ },
+ {
+ "name": "param3",
+ "value": "param_value3",
+ "resource-resolution-data": {
+ "payload": "12",
+ "capability-name": "walkingmachine",
+ "status": "SUCCESS"
+ }
+ },
+ {
+ "name": "mob1_names",
+ "value": "",
+ "resource-resolution-data": {
+ "payload": "",
+ "capability-name": "None",
+ "status": "FAILED"
+ }
+ },
+ {
+ "name": "mob1_role1_public_vlans",
+ "value": "4000"
+ }
+ ]
+ },
+ "tenant": "pc-tenant-1",
+ "sdnc-generated-cloud-resources": true,
+ "aic-clli": "rxutest201901",
+ "vf-module-topology-identifier": {
+ "vf-module-type": "vSAMP10aDEV::base::module-0",
+ "vf-module-id": "vf-module-9",
+ "vf-module-name": "vf-module-name-9"
+ },
+ "aic-cloud-region": "mtn6"
+ },
+ "vf-module-request-input": {
+ "tenant": "pc-tenant-1",
+ "vf-module-name": "vf-module-name-1",
+ "aic-cloud-region": "mtn6"
+ },
+ "sdnc-request-header": {
+ "svc-action": "assign",
+ "svc-request-id": "vf-id-0001",
+ "svc-notification-url": "http://dummy.att.com"
+ },
+ "vnf-information": {
+ "vnf-id": "vnf-100",
+ "vnf-type": "vdns",
+ "vnf-name": "vnf-name-1",
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "model-name-vnf-100",
+ "model-version": "4.0",
+ "model-customization-uuid": "cust-uuid-vnf-100",
+ "model-uuid": "bgb-model-ver-id"
+ }
+ },
+ "vf-module-information": {
+ "onap-model-information": {
+ "model-invariant-uuid": "bgb-model",
+ "model-name": "vSAMP10aDEV::base::module-0",
+ "model-version": "1.0",
+ "model-customization-uuid": "cust-uuid-vf-module-100",
+ "model-uuid": "bgb-model-ver-id"
+ },
+ "vf-module-id": "vf-module-100",
+ "vf-module-type": "ss-vf-module-type",
+ "from-preload": true
+ },
+ "request-information": {
+ "notification-url": "http://some.url.com",
+ "request-id": "request-0001",
+ "request-action": "CreateVfModuleInstance",
+ "source": "VID"
+ },
+ "vf-module-level-oper-status": {
+ "order-status": "PendingCreate",
+ "last-rpc-action": "assign",
+ "last-action": "CreateVfModuleInstance"
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+ }
+ }
+ }
+ ]
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/vf-module-assign-rpc.json b/ms/generic-resource-api/src/test/resources/vf-module-assign-rpc.json
new file mode 100644
index 0000000..78b3289
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/vf-module-assign-rpc.json
@@ -0,0 +1,57 @@
+{
+ "input":{
+ "request-information" : {
+ "request-action" : "CreateVfModuleInstance",
+ "source" : "MSO",
+ "request-id" : "fa988b60-ebd5-4d0b-9b7c-3073c365a9ed"
+ },
+ "sdnc-request-header" : {
+ "svc-request-id" : "767f2d08-e022-4000-97c2-61c002ebc740",
+ "svc-notification-url" : "https://mso-bpmn-s1.ecomp.idns.aic.cip.att.com:30252/mso/WorkflowMessage/SDNCCallback/25200c7f-e966-4a0d-8c6c-e345e97089a4",
+ "svc-action" : "assign"
+ },
+ "service-information" : {
+ "onap-model-information" : {
+ "model-name" : "SMSF-NC2-578-SVC",
+ "model-version" : "3.0",
+ "model-uuid" : "20b35ef0-956f-4e1b-bf75-f51a2e7c53db",
+ "model-invariant-uuid" : "5c905067-7b5a-457a-9f25-7a83a04b2a6d"
+ },
+ "subscription-service-type" : "Mobility",
+ "service-id" : "5c4f2d89-57a3-47e9-b49b-d3c63eb0b3ca",
+ "global-customer-id" : "a9a77d5a-123e-4ca2-9eb9-0b015d2ee0fb",
+ "service-instance-id" : "mob-service-9"
+ },
+ "vf-module-information" : {
+ "onap-model-information" : {
+ "model-name" : "SmsfNc2578..smsf_base..module-0",
+ "model-version" : "3",
+ "model-customization-uuid" : "79198077-e742-4d9f-8ef5-4bdc10c90def",
+ "model-uuid" : "795f1014-7fe5-4c4f-a0ca-dc6ebd2185ab",
+ "model-invariant-uuid" : "6265446b-58a6-4689-860f-78bada0faf2c"
+ },
+ "vf-module-id" : "45841173-3729-4a1d-a811-a3bde399e22d",
+ "from-preload" : true,
+ "vf-module-type" : "SmsfNc2578..smsf_base..module-0"
+ },
+ "vf-module-request-input" : {
+ "aic-cloud-region" : "rdm61a",
+ "cloud-owner" : "att-nc",
+ "tenant" : "4714fe06cc24414c914c51ca0aa1bf84",
+ "vf-module-name" : "zrdm61asmsf01_base",
+ "vf-module-input-parameters" : { }
+ },
+ "vnf-information" : {
+ "onap-model-information" : {
+ "model-name" : "SMSF-NC2-578",
+ "model-version" : "3.0",
+ "model-customization-uuid" : "0f229dd7-36ba-44ff-b7fb-327721dcb8d2",
+ "model-uuid" : "7b44be32-b39f-4a3b-8650-ece4e75fd094",
+ "model-invariant-uuid" : "0017cd47-7f1b-49fb-874d-6add86ececb1"
+ },
+ "vnf-id" : "mob-vnf-9",
+ "vnf-name" : "zrdm61asmsf01",
+ "vnf-type" : "SMSF-NC2-578-SVC/SMSF-NC2-578"
+ }
+ }
+} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/vnf-get-resource-request-expected.json b/ms/generic-resource-api/src/test/resources/vnf-get-resource-request-expected.json
new file mode 100644
index 0000000..719c4dc
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/vnf-get-resource-request-expected.json
@@ -0,0 +1 @@
+{"output":{"vnf-get-resource-response-information":{"service-instance-id":"service9","service-instance-name":"service-name-9","vnf":[{"param":[{"name":"vnf_param_1","resource-resolution-data":{"capability-name":"param-capability","status":"SUCCESS"},"value":"vnf_value_1"},{"name":"vnf_param_2","resource-resolution-data":{"capability-name":"","status":""},"value":"vnf_value_2"}],"vnf-id":"vnf-9","vf-module":[{"param":[{"name":"param1","resource-resolution-data":{},"value":"param_value_1"},{"name":"param2","resource-resolution-data":{"resource-key":[{"name":"key1","value":"key_value_1"},{"name":"key2","value":"key_value_2"}]},"value":"param_value_2"},{"name":"param3","resource-resolution-data":{},"value":"param_value3"},{"name":"mob1_names","resource-resolution-data":{},"value":""},{"name":"mob1_role1_public_vlans","resource-resolution-data":{},"value":"4000"}],"vf-module-id":"vf-module-9"}],"vnf-name":""}]}}} \ No newline at end of file
diff --git a/ms/generic-resource-api/src/test/resources/vnf-get-resource-request-rpc.json b/ms/generic-resource-api/src/test/resources/vnf-get-resource-request-rpc.json
new file mode 100644
index 0000000..7438deb
--- /dev/null
+++ b/ms/generic-resource-api/src/test/resources/vnf-get-resource-request-rpc.json
@@ -0,0 +1,15 @@
+{
+ "input": {
+ "sdnc-request-header": {
+ "svc-request-id": "id-0002",
+ "svc-action": "assign"
+ },
+ "request-information": {
+ "request-id": "id-2006-2",
+ "source": "local-vm"
+ },
+ "service-information": {
+ "service-instance-id": "service9"
+ }
+ }
+} \ No newline at end of file