aboutsummaryrefslogtreecommitdiffstats
path: root/models-interactions/model-impl/aai/src/test
diff options
context:
space:
mode:
authorpramod.jamkhedkar <pramod@research.att.com>2019-04-09 14:40:16 -0400
committerpramod.jamkhedkar <pramod@research.att.com>2019-04-10 17:02:16 -0400
commit38c89e3a57f168603faaf2ad4220105b2d54a9c8 (patch)
tree1f9568e77e9999663c89b7ee88655d0eb386a755 /models-interactions/model-impl/aai/src/test
parente678e5af567040022f23ed7a1ba1723b82434418 (diff)
Custom Query Code
Changes to aai, so, vfc and restmanager to support aai custom queries. updated to latest version of aai schema. Made changes according to latest updates. Issue-ID: POLICY-1278 Change-Id: I255cef17fff4fe7d4ea21344c0e5ccaac52cbe9a Signed-off-by: pramod.jamkhedkar <pramod@research.att.com>
Diffstat (limited to 'models-interactions/model-impl/aai/src/test')
-rw-r--r--models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiCqResponseTest.java278
-rw-r--r--models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiManagerTest.java61
-rw-r--r--models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiCqResponse.json673
-rw-r--r--models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiMalformedCqResponse.json3
-rw-r--r--models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiTenantResponse.json8
5 files changed, 1021 insertions, 2 deletions
diff --git a/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiCqResponseTest.java b/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiCqResponseTest.java
new file mode 100644
index 000000000..bfa0a5a4c
--- /dev/null
+++ b/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiCqResponseTest.java
@@ -0,0 +1,278 @@
+/*-
+ * ============LICENSE_START=======================================================
+ *
+ * ================================================================================
+ * Copyright (C) 2019 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.policy.aai;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.io.File;
+import java.nio.file.Files;
+import java.util.ArrayList;
+import java.util.List;
+import org.junit.Test;
+import org.onap.aai.domain.yang.CloudRegion;
+import org.onap.aai.domain.yang.GenericVnf;
+import org.onap.aai.domain.yang.ServiceInstance;
+import org.onap.aai.domain.yang.Tenant;
+import org.onap.aai.domain.yang.VfModule;
+import org.onap.aai.domain.yang.Vserver;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AaiCqResponseTest {
+ private static final Logger LOGGER = LoggerFactory.getLogger(AaiCqResponseTest.class);
+ private static final String CQ_RESPONSE_SAMPLE = "src/test/resources/org/onap/policy/aai/AaiCqResponse.json";
+
+
+ @Test
+ public void testConstructor() throws Exception {
+ /*
+ * Read JSON String and add all AaiObjects
+ */
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ assertNotNull(aaiCqResponse);
+ assertNotNull(aaiCqResponse.getInventoryResponseItems());
+ }
+
+ @Test
+ public void testAaiMalformedCqResponse() throws Exception {
+ /*
+ * Read JSON String and add all AaiObjects
+ */
+
+ String responseString = "";
+ responseString = new String(Files
+ .readAllBytes(new File("src/test/resources/org/onap/policy/aai/AaiMalformedCqResponse.json").toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ for (Object aaiObj : aaiCqResponse.getInventoryResponseItems()) {
+ assertNull(aaiObj);
+ }
+
+
+ }
+
+ @Test
+ public void testGetItemByList() throws Exception {
+ /*
+ * Read JSON String and add all AaiObjects
+ */
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ ArrayList<Vserver> vs = (ArrayList<Vserver>) aaiCqResponse.getItemListByType(Vserver.class);
+ assertNotNull(vs);
+ assertEquals("e7f1db09-ff78-44fc-b256-69095c5556fb", vs.get(0).getVserverId());
+ LOGGER.info(vs.get(0).getVserverId());
+
+ }
+
+ @Test
+ public void testGetServiceInstance() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ ServiceInstance si = aaiCqResponse.getServiceInstance();
+ assertNotNull(si);
+ assertEquals("vLoadBalancerMS-0211-1", si.getServiceInstanceName());
+ LOGGER.info(si.getServiceInstanceName());
+ }
+
+ @Test
+ public void testGetDefaultCloudRegion() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ CloudRegion cloudRegion = aaiCqResponse.getDefaultCloudRegion();
+ assertNotNull(cloudRegion);
+ assertEquals("cr-16197-01-as988q", cloudRegion.getCloudRegionId());
+ LOGGER.info(cloudRegion.getCloudRegionId());
+ }
+
+ @Test
+ public void testGetDefaultTenant() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ Tenant tenant = aaiCqResponse.getDefaultTenant();
+ assertNotNull(tenant);
+ assertEquals("tenant1-16197-as988q", tenant.getTenantId());
+ LOGGER.info(tenant.getTenantId());
+ }
+
+
+
+ @Test
+ public void testGetGenericVnfs() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ List<GenericVnf> genericVnfList = aaiCqResponse.getGenericVnfs();
+ assertNotNull(genericVnfList);
+ for (GenericVnf genVnf : genericVnfList) {
+ LOGGER.info(genVnf.getVnfName());
+ }
+
+ }
+
+
+
+ @Test
+ public void testGetDefaultGenericVnf() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ GenericVnf genVnf = aaiCqResponse.getDefaultGenericVnf();
+ assertNotNull(genVnf);
+ assertEquals("TestVM-Vnf-0201-1", genVnf.getVnfName());
+ LOGGER.info(genVnf.getVnfName());
+
+ }
+
+ @Test
+ public void testGetGenericVnfByName() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ GenericVnf genVnf = aaiCqResponse.getGenericVnfByVnfName("TestVM-Vnf-0201-1");
+ assertNotNull(genVnf);
+ assertEquals("17044ef4-e7f3-46a1-af03-e2aa562f23ac", genVnf.getVnfId());
+ LOGGER.info(genVnf.getVnfId());
+ }
+
+
+ @Test
+ public void testGetGenericVnfByModelInvariantId() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ GenericVnf genVnf = aaiCqResponse.getGenericVnfByModelInvariantId("724ab1cf-6120-49e8-b909-849963bed1d6");
+ assertNotNull(genVnf);
+ assertEquals("724ab1cf-6120-49e8-b909-849963bed1d6", genVnf.getModelInvariantId());
+ LOGGER.info(genVnf.getModelInvariantId());
+ }
+
+ @Test
+ public void testGetAllVfModules() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ List<VfModule> vfModuleList = aaiCqResponse.getAllVfModules();
+ assertNotNull(vfModuleList);
+ for (VfModule vfMod : vfModuleList) {
+ LOGGER.info(vfMod.getVfModuleName());
+ }
+
+ }
+
+
+ @Test
+ public void testGetVfModuleByVfModuleName() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ VfModule vfModule = aaiCqResponse.getVfModuleByVfModuleName("vLoadBalancerMS-0211-1");
+ assertNotNull(vfModule);
+ assertEquals("vLoadBalancerMS-0211-1", vfModule.getVfModuleName());
+ LOGGER.info(vfModule.getVfModuleName());
+
+
+ }
+
+ @Test
+ public void testGetDefaultVfModule() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ VfModule vfModule = aaiCqResponse.getDefaultVfModule();
+ assertNotNull(vfModule);
+ assertEquals("TestVM-0201-2", vfModule.getVfModuleName());
+ LOGGER.info(vfModule.getVfModuleName());
+ }
+
+ @Test
+ public void testGetVserver() throws Exception {
+
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+
+ AaiCqResponse aaiCqResponse;
+ aaiCqResponse = new AaiCqResponse(responseString);
+ Vserver vserver = aaiCqResponse.getVserver();
+ assertNotNull(vserver);
+ assertEquals("vfw-vm-0201-2", vserver.getVserverName());
+ LOGGER.info(vserver.getVserverName());
+
+ }
+
+ /**
+ * Aai Cq sample response.
+ *
+ * @return String return response
+ * @throws Exception file read exception
+ */
+ public String getAaiCqResponse() throws Exception {
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(CQ_RESPONSE_SAMPLE).toPath()));
+ return responseString;
+ }
+
+}
diff --git a/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiManagerTest.java b/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiManagerTest.java
index 111042f6d..c453d89a1 100644
--- a/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiManagerTest.java
+++ b/models-interactions/model-impl/aai/src/test/java/org/onap/policy/aai/AaiManagerTest.java
@@ -31,10 +31,12 @@ import static org.mockito.ArgumentMatchers.startsWith;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.io.File;
+import java.io.IOException;
+import java.nio.file.Files;
import java.util.HashMap;
import java.util.Map;
import java.util.UUID;
-
import org.junit.Before;
import org.junit.Test;
import org.onap.policy.aai.util.Serialization;
@@ -48,12 +50,18 @@ public class AaiManagerTest {
Pair<Integer, String> httpResponseErr0;
Pair<Integer, String> httpResponseErr1;
Pair<Integer, String> httpResponseWait;
+ Pair<Integer, String> httpTenantResponseOk;
+ Pair<Integer, String> httpCqResponseOk;
+
+ private static final String TENANT_RESPONSE_SAMPLE =
+ "src/test/resources/org/onap/policy/aai/AaiTenantResponse.json";
/**
* Set up test cases.
+ * @throws Exception if error occurs
*/
@Before
- public void beforeTestAaiManager() {
+ public void beforeTestAaiManager() throws Exception {
restManagerMock = mock(RestManager.class);
Map<String, String> expectedHeaders = new HashMap<>();
@@ -61,6 +69,10 @@ public class AaiManagerTest {
expectedHeaders.put("X-TransactionId", aaiNqRequestUuid.toString());
expectedHeaders.put("Accept", "application/json");
+ String aaiCqResponse = new AaiCqResponseTest().getAaiCqResponse();
+ String tenantResponse = this.getTenantQueryResponse();
+ httpCqResponseOk = restManagerMock.new Pair<>(200, aaiCqResponse);
+ httpTenantResponseOk = restManagerMock.new Pair<>(200, tenantResponse);
AaiNqResponse aaiNqResponse = new AaiNqResponseTest().getAaiNqResponse();
httpResponseOk = restManagerMock.new Pair<>(200, Serialization.gsonPretty.toJson(aaiNqResponse));
httpResponseErr0 = restManagerMock.new Pair<>(200, null);
@@ -69,6 +81,51 @@ public class AaiManagerTest {
}
@Test
+ public void testAaiCqResponse() {
+ AaiManager aaiManager = new AaiManager(restManagerMock);
+ assertNotNull(aaiManager);
+
+ UUID vserverNameRequestId = UUID.randomUUID();
+
+ when(restManagerMock.put(startsWith("http://testing.cq.query"), eq("Foo"), eq("Bar"), anyMap(), anyString(),
+ anyString())).thenReturn(httpCqResponseOk);
+
+ when(restManagerMock.get(startsWith("http://testing.cq.query"), eq("Foo"), eq("Bar"), anyMap()))
+ .thenReturn(httpTenantResponseOk);
+
+ AaiCqResponse aaiCqResponse =
+ aaiManager.getCustomQueryResponse("http://testing.cq.query", "Foo", "Bar", vserverNameRequestId, "Foo");
+ assertNotNull(aaiCqResponse);
+
+ when(restManagerMock.put(eq(""), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
+ .thenReturn(httpResponseErr0);
+
+ when(restManagerMock.get(eq("/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
+ .thenReturn(httpResponseErr0);
+
+ AaiCqResponse aaiCqResponseNull =
+ aaiManager.getCustomQueryResponse("", "Foo", "Bar", vserverNameRequestId, "Foo");
+ assertNull(aaiCqResponseNull);
+
+
+ when(restManagerMock.put(eq("Error"), eq("Foo"), eq("Bar"), anyMap(), anyString(), anyString()))
+ .thenReturn(httpResponseErr1);
+
+ when(restManagerMock.get(eq("Error/aai/v11/query?format=resource"), eq("Foo"), eq("Bar"), anyMap()))
+ .thenReturn(httpResponseErr1);
+
+ AaiCqResponse aaiCqResponseErr =
+ aaiManager.getCustomQueryResponse("Error", "Foo", "Bar", vserverNameRequestId, "Foo");
+ assertNull(aaiCqResponseErr);
+ }
+
+ private String getTenantQueryResponse() throws IOException {
+ String responseString = "";
+ responseString = new String(Files.readAllBytes(new File(TENANT_RESPONSE_SAMPLE).toPath()));
+ return responseString;
+ }
+
+ @Test
public void testAaiManagerAaiNqRequest() {
AaiManager aaiManager = new AaiManager(restManagerMock);
diff --git a/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiCqResponse.json b/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiCqResponse.json
new file mode 100644
index 000000000..63d6f79ac
--- /dev/null
+++ b/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiCqResponse.json
@@ -0,0 +1,673 @@
+{
+ "results": [
+ {
+ "vserver": {
+ "vserver-id": "e7f1db09-ff78-44fc-b256-69095c5556fb",
+ "vserver-name": "vfw-vm-0201-2",
+ "vserver-name2": "vfw-vm-0201-2",
+ "prov-status": "ACTIVE",
+ "vserver-selflink": "http://ecompctl1.research.att.com:8774/v2/3f2aaef74ecb4b19b35e26d0849fe9a2/servers/e7f1db09-ff78-44fc-b256-69095c5556fb",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1549553422524",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "generic-vnf",
+ "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac",
+ "relationship-data": [
+ {
+ "relationship-key": "generic-vnf.vnf-id",
+ "relationship-value": "17044ef4-e7f3-46a1-af03-e2aa562f23ac"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "generic-vnf.vnf-name",
+ "property-value": "TestVM-Vnf-0201-1"
+ }
+ ]
+ },
+ {
+ "related-to": "vnfc",
+ "related-link": "/aai/v11/network/vnfcs/vnfc/vfw",
+ "relationship-data": [
+ {
+ "relationship-key": "vnfc.vnfc-name",
+ "relationship-value": "vfw"
+ }
+ ]
+ },
+ {
+ "related-to": "vf-module",
+ "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac/vf-modules/vf-module/33f9e03d-2fbd-4e9c-8e73-ce6b12f0b3d2",
+ "relationship-data": [
+ {
+ "relationship-key": "generic-vnf.vnf-id",
+ "relationship-value": "17044ef4-e7f3-46a1-af03-e2aa562f23ac"
+ },
+ {
+ "relationship-key": "vf-module.vf-module-id",
+ "relationship-value": "33f9e03d-2fbd-4e9c-8e73-ce6b12f0b3d2"
+ }
+ ]
+ },
+ {
+ "related-to": "flavor",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/flavors/flavor/2",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "flavor.flavor-id",
+ "relationship-value": "2"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "flavor.flavor-name",
+ "property-value": "m1.small"
+ }
+ ]
+ },
+ {
+ "related-to": "image",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/images/image/84be7136-301f-4f47-9585-3a2e0f9534af",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "image.image-id",
+ "relationship-value": "84be7136-301f-4f47-9585-3a2e0f9534af"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "image.image-name",
+ "property-value": "unknown"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "generic-vnf": {
+ "vnf-id": "7b202620-2936-4b0d-b09c-60b411f10f64",
+ "vnf-name": "vLoadBalancerMS-Vnf-0211-1",
+ "vnf-type": "vLoadBalancerMS/vLoadBalancerMS 0",
+ "prov-status": "ACTIVE",
+ "equipment-role": "vLB",
+ "orchestration-status": "Active",
+ "ipv4-oam-address": "10.0.150.1",
+ "in-maint": true,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1552311656338",
+ "model-invariant-id": "724ab1cf-6120-49e8-b909-849963bed1d6",
+ "model-version-id": "9d5944d8-2267-4799-824a-0f824e9a978d",
+ "model-customization-id": "efcd576d-a05e-4798-bb68-79e7d9c80f4c",
+ "nf-type": "ONAP-LOADBALANCER",
+ "nf-function": "LOADBALANCER",
+ "nf-role": "vLB",
+ "nf-naming-code": "vlb",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/101b8fc1-1796-4db1-a4e7-fe39c6a51558/service-data/vnfs/vnf/7b202620-2936-4b0d-b09c-60b411f10f64/vnf-data/vnf-topology/",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "service-instance",
+ "related-link": "/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vLB/service-instances/service-instance/101b8fc1-1796-4db1-a4e7-fe39c6a51558",
+ "relationship-data": [
+ {
+ "relationship-key": "customer.global-customer-id",
+ "relationship-value": "Demonstration"
+ },
+ {
+ "relationship-key": "service-subscription.service-type",
+ "relationship-value": "vLB"
+ },
+ {
+ "relationship-key": "service-instance.service-instance-id",
+ "relationship-value": "101b8fc1-1796-4db1-a4e7-fe39c6a51558"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "service-instance.service-instance-name",
+ "property-value": "vLoadBalancerMS-0211-1"
+ }
+ ]
+ },
+ {
+ "related-to": "platform",
+ "related-link": "/aai/v11/business/platforms/platform/Test-Platform",
+ "relationship-data": [
+ {
+ "relationship-key": "platform.platform-name",
+ "relationship-value": "Test-Platform"
+ }
+ ]
+ },
+ {
+ "related-to": "line-of-business",
+ "related-link": "/aai/v11/business/lines-of-business/line-of-business/Test-Business",
+ "relationship-data": [
+ {
+ "relationship-key": "line-of-business.line-of-business-name",
+ "relationship-value": "Test-Business"
+ }
+ ]
+ },
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/58ca8df0-17b8-4aa2-8766-9c6c1a12cec8",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "58ca8df0-17b8-4aa2-8766-9c6c1a12cec8"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vdns-ms-0211-1"
+ }
+ ]
+ },
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/6c3b3714-e36c-45af-9f16-7d3a73d99497",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "6c3b3714-e36c-45af-9f16-7d3a73d99497"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vlb-ms-0211-1"
+ }
+ ]
+ },
+ {
+ "related-to": "availability-zone",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/availability-zones/availability-zone/nova",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "availability-zone.availability-zone-name",
+ "relationship-value": "nova"
+ }
+ ]
+ }
+ ]
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "e46c6636-9ce5-4b77-bb1b-455ce9edc892",
+ "vf-module-name": "vLoadBalancerMS-0211-1",
+ "heat-stack-id": "vLoadBalancerMS-0211-1/73360253-2dfe-46f6-bcd6-8662a81238ea",
+ "orchestration-status": "Active",
+ "is-base-vf-module": true,
+ "resource-version": "1552311559802",
+ "model-invariant-id": "d263fc6d-cfce-4e20-8337-e06f48b474e6",
+ "model-version-id": "24c0aa10-3979-402c-ad98-20124751b551",
+ "model-customization-id": "65382eb1-db84-466c-b9d7-4e0f1ba7105f",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/101b8fc1-1796-4db1-a4e7-fe39c6a51558/service-data/vnfs/vnf/7b202620-2936-4b0d-b09c-60b411f10f64/vnf-data/vf-modules/vf-module/e46c6636-9ce5-4b77-bb1b-455ce9edc892/vf-module-data/vf-module-topology/",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/58ca8df0-17b8-4aa2-8766-9c6c1a12cec8",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "58ca8df0-17b8-4aa2-8766-9c6c1a12cec8"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vdns-ms-0211-1"
+ }
+ ]
+ },
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/6c3b3714-e36c-45af-9f16-7d3a73d99497",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "6c3b3714-e36c-45af-9f16-7d3a73d99497"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vlb-ms-0211-1"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "service-instance": {
+ "service-instance-id": "101b8fc1-1796-4db1-a4e7-fe39c6a51558",
+ "service-instance-name": "vLoadBalancerMS-0211-1",
+ "environment-context": "General_Revenue-Bearing",
+ "workload-context": "Production",
+ "model-invariant-id": "1008a768-1b67-407e-88c6-58c82b34ef42",
+ "model-version-id": "81f8c1cd-f664-4450-b3a4-be645613ab32",
+ "resource-version": "1552311350334",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/101b8fc1-1796-4db1-a4e7-fe39c6a51558/service-data/service-topology/",
+ "orchestration-status": "Active",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "project",
+ "related-link": "/aai/v11/business/projects/project/Test-Project",
+ "relationship-data": [
+ {
+ "relationship-key": "project.project-name",
+ "relationship-value": "Test-Project"
+ }
+ ]
+ },
+ {
+ "related-to": "generic-vnf",
+ "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/7b202620-2936-4b0d-b09c-60b411f10f64",
+ "relationship-data": [
+ {
+ "relationship-key": "generic-vnf.vnf-id",
+ "relationship-value": "7b202620-2936-4b0d-b09c-60b411f10f64"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "generic-vnf.vnf-name",
+ "property-value": "vLoadBalancerMS-Vnf-0211-1"
+ }
+ ]
+ },
+ {
+ "related-to": "owning-entity",
+ "related-link": "/aai/v11/business/owning-entities/owning-entity/bb94a687-4f3b-40a3-914e-e98037d5ebd2",
+ "relationship-data": [
+ {
+ "relationship-key": "owning-entity.owning-entity-id",
+ "relationship-value": "bb94a687-4f3b-40a3-914e-e98037d5ebd2"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "generic-vnf": {
+ "vnf-id": "17044ef4-e7f3-46a1-af03-e2aa562f23ac",
+ "vnf-name": "TestVM-Vnf-0201-1",
+ "vnf-type": "TestVM/TestVM 0",
+ "prov-status": "ACTIVE",
+ "equipment-role": "",
+ "orchestration-status": "Active",
+ "ipv4-oam-address": "10.0.70.1",
+ "in-maint": true,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1549041636264",
+ "model-invariant-id": "6a4d7971-0778-4655-9eab-9d6031c7ad57",
+ "model-version-id": "fb6c673c-e5b6-4e0a-9baf-5e0089784de9",
+ "model-customization-id": "706a3100-dbe5-442e-86c3-c7b823abbec2",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/d41f8217-d464-4458-bf0a-fba33a0f1b31/service-data/vnfs/vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac/vnf-data/vnf-topology/",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "service-instance",
+ "related-link": "/aai/v11/business/customers/customer/Demonstration/service-subscriptions/service-subscription/vFW/service-instances/service-instance/d41f8217-d464-4458-bf0a-fba33a0f1b31",
+ "relationship-data": [
+ {
+ "relationship-key": "customer.global-customer-id",
+ "relationship-value": "Demonstration"
+ },
+ {
+ "relationship-key": "service-subscription.service-type",
+ "relationship-value": "vFW"
+ },
+ {
+ "relationship-key": "service-instance.service-instance-id",
+ "relationship-value": "d41f8217-d464-4458-bf0a-fba33a0f1b31"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "service-instance.service-instance-name",
+ "property-value": "TestVM-Service-0201-1"
+ }
+ ]
+ },
+ {
+ "related-to": "platform",
+ "related-link": "/aai/v11/business/platforms/platform/Test-Platform",
+ "relationship-data": [
+ {
+ "relationship-key": "platform.platform-name",
+ "relationship-value": "Test-Platform"
+ }
+ ]
+ },
+ {
+ "related-to": "line-of-business",
+ "related-link": "/aai/v11/business/lines-of-business/line-of-business/Test-Business",
+ "relationship-data": [
+ {
+ "relationship-key": "line-of-business.line-of-business-name",
+ "relationship-value": "Test-Business"
+ }
+ ]
+ },
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/e7f1db09-ff78-44fc-b256-69095c5556fb",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "e7f1db09-ff78-44fc-b256-69095c5556fb"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vfw-vm-0201-2"
+ }
+ ]
+ },
+ {
+ "related-to": "availability-zone",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionTwo/availability-zones/availability-zone/zone-1",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionTwo"
+ },
+ {
+ "relationship-key": "availability-zone.availability-zone-name",
+ "relationship-value": "zone-1"
+ }
+ ]
+ }
+ ]
+ },
+ "vf-modules": {
+ "vf-module": [
+ {
+ "vf-module-id": "0afde97a-3e3f-4597-aec3-e5488c0f20b7",
+ "vf-module-name": "TestVM-0201-1",
+ "heat-stack-id": "TestVM-0201-1/aee4d7e5-b4a0-4261-b3cf-bb23348a3d99",
+ "orchestration-status": "Active",
+ "is-base-vf-module": true,
+ "resource-version": "1549039401119",
+ "model-invariant-id": "6af68fdb-6479-43e2-8989-938f06c994bd",
+ "model-version-id": "16d1834e-d834-431f-b064-98c469c6505d",
+ "model-customization-id": "29ffb122-22c8-48d2-b152-b52d9e81e910",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/d41f8217-d464-4458-bf0a-fba33a0f1b31/service-data/vnfs/vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac/vnf-data/vf-modules/vf-module/0afde97a-3e3f-4597-aec3-e5488c0f20b7/vf-module-data/vf-module-topology/"
+ },
+ {
+ "vf-module-id": "33f9e03d-2fbd-4e9c-8e73-ce6b12f0b3d2",
+ "vf-module-name": "TestVM-0201-2",
+ "heat-stack-id": "TestVM-0201-2/1b9db6b8-620b-46f1-935a-8a61c294a98b",
+ "orchestration-status": "Active",
+ "is-base-vf-module": true,
+ "resource-version": "1549041447373",
+ "model-invariant-id": "6af68fdb-6479-43e2-8989-938f06c994bd",
+ "model-version-id": "16d1834e-d834-431f-b064-98c469c6505d",
+ "model-customization-id": "29ffb122-22c8-48d2-b152-b52d9e81e910",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/d41f8217-d464-4458-bf0a-fba33a0f1b31/service-data/vnfs/vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac/vnf-data/vf-modules/vf-module/33f9e03d-2fbd-4e9c-8e73-ce6b12f0b3d2/vf-module-data/vf-module-topology/",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/e7f1db09-ff78-44fc-b256-69095c5556fb",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "e7f1db09-ff78-44fc-b256-69095c5556fb"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vfw-vm-0201-2"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "vf-module": {
+ "vf-module-id": "0afde97a-3e3f-4597-aec3-e5488c0f20b7",
+ "vf-module-name": "TestVM-0201-1",
+ "heat-stack-id": "TestVM-0201-1/aee4d7e5-b4a0-4261-b3cf-bb23348a3d99",
+ "orchestration-status": "Active",
+ "is-base-vf-module": true,
+ "resource-version": "1549039401119",
+ "model-invariant-id": "6af68fdb-6479-43e2-8989-938f06c994bd",
+ "model-version-id": "16d1834e-d834-431f-b064-98c469c6505d",
+ "model-customization-id": "29ffb122-22c8-48d2-b152-b52d9e81e910",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/d41f8217-d464-4458-bf0a-fba33a0f1b31/service-data/vnfs/vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac/vnf-data/vf-modules/vf-module/0afde97a-3e3f-4597-aec3-e5488c0f20b7/vf-module-data/vf-module-topology/"
+ }
+ },
+ {
+ "vf-module": {
+ "vf-module-id": "33f9e03d-2fbd-4e9c-8e73-ce6b12f0b3d2",
+ "vf-module-name": "TestVM-0201-2",
+ "heat-stack-id": "TestVM-0201-2/1b9db6b8-620b-46f1-935a-8a61c294a98b",
+ "orchestration-status": "Active",
+ "is-base-vf-module": true,
+ "resource-version": "1549041447373",
+ "model-invariant-id": "6af68fdb-6479-43e2-8989-938f06c994bd",
+ "model-version-id": "16d1834e-d834-431f-b064-98c469c6505d",
+ "model-customization-id": "29ffb122-22c8-48d2-b152-b52d9e81e910",
+ "selflink": "restconf/config/GENERIC-RESOURCE-API:services/service/d41f8217-d464-4458-bf0a-fba33a0f1b31/service-data/vnfs/vnf/17044ef4-e7f3-46a1-af03-e2aa562f23ac/vnf-data/vf-modules/vf-module/33f9e03d-2fbd-4e9c-8e73-ce6b12f0b3d2/vf-module-data/vf-module-topology/",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "vserver",
+ "related-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/e7f1db09-ff78-44fc-b256-69095c5556fb",
+ "relationship-data": [
+ {
+ "relationship-key": "cloud-region.cloud-owner",
+ "relationship-value": "CloudOwner"
+ },
+ {
+ "relationship-key": "cloud-region.cloud-region-id",
+ "relationship-value": "RegionOne"
+ },
+ {
+ "relationship-key": "tenant.tenant-id",
+ "relationship-value": "3f2aaef74ecb4b19b35e26d0849fe9a2"
+ },
+ {
+ "relationship-key": "vserver.vserver-id",
+ "relationship-value": "e7f1db09-ff78-44fc-b256-69095c5556fb"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "vserver.vserver-name",
+ "property-value": "vfw-vm-0201-2"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ },
+ {
+ "tenant": {
+ "tenant-id": "tenant1-16197-as988q",
+ "tenant-name": "tenant-name-16197-as988q",
+ "resource-version": "1550769793637",
+ "vservers": {
+ "vserver": [
+ {
+ "vserver-id": "vserver1-16197-as988q",
+ "vserver-name": "vserverName",
+ "vserver-name2": "vserverTE-name2-as988q",
+ "prov-status": "ACTIVE",
+ "vserver-selflink": "TRINITY vserverLink",
+ "in-maint": false,
+ "is-closed-loop-disabled": false,
+ "resource-version": "1550769794551",
+ "relationship-list": {
+ "relationship": [
+ {
+ "related-to": "generic-vnf",
+ "relationship-label": "tosca.relationships.HostedOn",
+ "related-link": "/aai/v16/network/generic-vnfs/generic-vnf/VNF1-16197-as988q",
+ "relationship-data": [
+ {
+ "relationship-key": "generic-vnf.vnf-id",
+ "relationship-value": "VNF1-16197-as988q"
+ }
+ ],
+ "related-to-property": [
+ {
+ "property-key": "generic-vnf.vnf-name",
+ "property-value": "vnf1Name"
+ }
+ ]
+ }
+ ]
+ }
+ }
+ ]
+ }
+ }
+ },
+ {
+ "cloud-region": {
+ "cloud-owner": "co-16197-01-as988q",
+ "cloud-region-id": "cr-16197-01-as988q",
+ "resource-version": "1550769792672",
+ "orchestration-disabled": false,
+ "in-maint": false,
+ "tenants": {
+ "tenant": [
+ {
+ "tenant-id": "tenant1-16197-as988q",
+ "tenant-name": "tenant-name-16197-as988q",
+ "resource-version": "1550769793637"
+ }
+ ]
+ }
+ }
+ }
+ ]
+}
diff --git a/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiMalformedCqResponse.json b/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiMalformedCqResponse.json
new file mode 100644
index 000000000..a9452a2e2
--- /dev/null
+++ b/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiMalformedCqResponse.json
@@ -0,0 +1,3 @@
+{
+ "results": []
+} \ No newline at end of file
diff --git a/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiTenantResponse.json b/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiTenantResponse.json
new file mode 100644
index 000000000..62b690548
--- /dev/null
+++ b/models-interactions/model-impl/aai/src/test/resources/org/onap/policy/aai/AaiTenantResponse.json
@@ -0,0 +1,8 @@
+{
+ "result-data": [
+ {
+ "resource-type": "vserver",
+ "resource-link": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants/tenant/3f2aaef74ecb4b19b35e26d0849fe9a2/vservers/vserver/6c3b3714-e36c-45af-9f16-7d3a73d99497"
+ }
+ ]
+} \ No newline at end of file