node query for service instance query 32/77732/2
authoraosull01 <adrian.osullivan@huawei.com>
Fri, 1 Feb 2019 17:33:45 +0000 (17:33 +0000)
committeraosull01 <adrian.osullivan@huawei.com>
Wed, 6 Feb 2019 14:52:41 +0000 (14:52 +0000)
Change-Id: I7147f76b65a02e61f804ff5fd1304e47a983e092
Issue-ID: EXTAPI-194
Signed-off-by: aosull01 <adrian.osullivan@huawei.com>
19 files changed:
src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java
src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java
src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java
src/main/resources/jolt/getServiceInventory.json
src/test/resources/karatetest/features/01--ServiceInventory.feature
src/test/resources/karatetest/features/02--ServiceOrder.feature
src/test/resources/mappings/aai_get_6490_service-subscriptions.json
src/test/resources/mappings/aai_get_customer_6490.json
src/test/resources/mappings/aai_get_customer_generic.json
src/test/resources/mappings/aai_get_generic_service-subscriptions.json
src/test/resources/mappings/aai_get_service-subscription-Ansible-service.json
src/test/resources/mappings/aai_get_service-subscriptionsVFW.json
src/test/resources/mappings/aai_get_service-subscriptionsvFW-service-2VF-based.json
src/test/resources/mappings/aai_get_service_3.json [moved from src/test/resources/mappings/aai_get_service-subscriptionWithoutList.json with 72% similarity]
src/test/resources/mappings/aai_get_service_instance.json [new file with mode: 0644]
src/test/resources/mappings/aai_get_service_instance_2.json [moved from src/test/resources/mappings/aai_get_service-subscription.json with 91% similarity]
src/test/resources/mappings/aai_get_tenants.json
src/test/resources/mappings/aai_put_customer.json
src/test/resources/mappings/aai_put_customer_service.json

index 2414c68..212242b 100644 (file)
@@ -30,16 +30,16 @@ public final class OnapComponentsUrlPaths {
 
     // AAI
     public static final String AAI_GET_TENANTS_PATH =
-            "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/$onap.cloudOwner/$onap.lcpCloudRegionId/tenants";
-    public static final String AAI_GET_CUSTOMER_PATH = "/aai/v11/business/customers/customer/";
+            "/aai/v14/cloud-infrastructure/cloud-regions/cloud-region/$onap.cloudOwner/$onap.lcpCloudRegionId/tenants";
+    public static final String AAI_GET_CUSTOMER_PATH = "/aai/v14/business/customers/customer/";
     public static final String AAI_GET_SERVICES_FOR_CUSTOMER_PATH =
-            "/aai/v11/business/customers/customer/$customerId/service-subscriptions";
+            "/aai/v14/business/customers/customer/$customerId/service-subscriptions";
     public static final String AAI_PUT_SERVICE_FOR_CUSTOMER_PATH =
-            "/aai/v11/business/customers/customer/$customerId/service-subscriptions/service-subscription/";
-    public static final String AAI_GET_SERVICE_FOR_CUSTOMER_PATH =
-            "/aai/v11/business/customers/customer/$customerId/service-subscriptions/service-subscription/$serviceSpecName/service-instances/service-instance/$serviceId";
+            "/aai/v14/business/customers/customer/$customerId/service-subscriptions/service-subscription/";
+    public static final String AAI_GET_SERVICE =
+            "/aai/v14/nodes/service-instances/service-instance/$serviceId";
     public static final String AAI_GET_SERVICE_INSTANCES_PATH =
-            "/aai/v11/business/customers/customer/$customerId/service-subscriptions/service-subscription/$serviceSpecName/service-instances/";
+            "/aai/v14/business/customers/customer/$customerId/service-subscriptions/service-subscription/$serviceSpecName/service-instances/";
 
     // MSO
     public static final String MSO_CREATE_SERVICE_INSTANCE_PATH = "/onap/so/infra/serviceInstantiation/v7/serviceInstances/";
index 391cf41..ebb5144 100644 (file)
@@ -57,7 +57,7 @@ public class AaiClient extends BaseClient {
 
     @PostConstruct
     private void setUpAndlogAAIUrl() {
-        aaiServiceUrl= new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_SERVICE_FOR_CUSTOMER_PATH).toString();
+        aaiServiceUrl= new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_SERVICE).toString();
         aaiServicesUrl= new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_SERVICES_FOR_CUSTOMER_PATH).toString();
         aaiServicesInstancesUrl= new StringBuilder().append(aaiHost).append(OnapComponentsUrlPaths.AAI_GET_SERVICE_INSTANCES_PATH).toString();
 
@@ -94,7 +94,17 @@ public class AaiClient extends BaseClient {
         }
         return null;
     }
+    
+    public Map getService(String serviceId) {
 
+        String callUrlFormated = aaiServiceUrl.replace("$serviceId", serviceId);
+        
+        ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
+        if (response != null && response.getStatusCode().equals(HttpStatus.OK)) {
+            return (LinkedHashMap) response.getBody();
+        }
+        return null;
+    }
 
     public Map getVNF(String relatedLink) {
 
index 1564e9c..57bb0f9 100644 (file)
@@ -48,24 +48,13 @@ public class ServiceInventoryService {
 
     public Map get(String serviceId, MultiValueMap<String, String> params) {
 
-        String clientId = params.getFirst("relatedParty.id");
-        String serviceSpecId = params.getFirst("serviceSpecification.id");
-        String serviceSpecName = params.getFirst("serviceSpecification.name");
-
-        if (StringUtils.isEmpty(serviceSpecId) && StringUtils.isEmpty(serviceSpecName)) {
-            throw new BackendFunctionalException(HttpStatus.NOT_FOUND,
-                "serviceSpecName or serviceSpecId must be provided","serviceSpecName or serviceSpecId must be provided");
-        }
-
-        String customerId = getCustomerId(clientId);
-        String serviceName = getServiceName(serviceSpecName, serviceSpecId);
-        Map serviceResponse = aaiClient.getCatalogService(customerId, serviceName, serviceId);
+                
+        Map serviceResponse = aaiClient.getService(serviceId);
 
         if (serviceResponse != null) {
             addVnfsToResponse(serviceResponse);
             LinkedHashMap serviceInventoryResponse =
                 (LinkedHashMap) getServiceInventoryJsonTransformer.transform(serviceResponse);
-            addRelatedPartyId(customerId, serviceInventoryResponse);
             return serviceInventoryResponse;
         } else {
             throw new BackendFunctionalException(HttpStatus.NOT_FOUND, "no catalog service found","no catalog service found");
index cb75530..b3751b1 100644 (file)
@@ -25,7 +25,6 @@
     "operation": "default",
     "spec": {
       "type": "service-instance",
-      "hasStarted": "yes",
       "@type": "serviceONAP",
       "serviceSpecification" : {
         "@type" :"ONAPservice"
index 2065f8c..6dbef15 100644 (file)
@@ -11,38 +11,32 @@ Background:
     
 Scenario: testServiceResourceGetInventory
 Given path 'service','e4688e5f-61a0-4f8b-ae02-a2fbde623bcb'
-And params {serviceSpecification.name : 'vFW' , relatedParty.id : '6490'}
 When method get
 Then status 200
-And match $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01', hasStarted : 'yes', type : 'service-instance', @type : 'serviceONAP' }
-And match $.relatedParty contains { role : 'ONAPcustomer' , id : '6490' }
+And match $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01', type : 'service-instance', @type : 'serviceONAP' }
 And match $.serviceSpecification contains { id : '98d95267-5e0f-4531-abf8-f14b90031dc5' , invariantUUID : '709d157b-52fb-4250-976e-7133dff5c347' , @type : 'ONAPservice' }
 And match $.supportingResource[0] contains { id : 'cb80fbb6-9aa7-4ac5-9541-e14f45de533e' , name : 'NewFreeRadius-VNF-instance-01' , status :  'PREPROV' , modelInvariantId : 'f5993703-977f-4346-a1c9-c1884f8cfd8d' , modelVersionId : '902438f7-1e4c-492d-b7cc-8650e13b8aeb' , @referredType : 'ONAP resource' }
 And match $.supportingResource == '#[2]'
 
 Scenario: testServiceResourceGetInventoryWithStatus
-Given url 'http://localhost:8080/nbi/api/v3/service/405c8c00-44b9-4303-9f27-6797d22ca096?serviceSpecification.name=AnsibleService&relatedParty.id=6490'
+Given url 'http://localhost:8080/nbi/api/v3/service/405c8c00-44b9-4303-9f27-6797d22ca096'
 When method get
 Then status 200
 And match $.state == 'Active'
 
 Scenario: testServiceResourceGetInventoryWithoutRelationShipList
 Given path 'service','e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList'
-And params {serviceSpecification.name:'vFW',relatedParty.id:'6490'}
 When method get
 Then status 200
-And match $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' , hasStarted : 'yes' , type : 'service-instance' , @type : 'serviceONAP' }
-And match $.relatedParty contains { role : 'ONAPcustomer' , id : '6490' }
+And match $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' , type : 'service-instance' , @type : 'serviceONAP' }
 And match $.serviceSpecification contains { id : '98d95267-5e0f-4531-abf8-f14b90031dc5' , invariantUUID : '709d157b-52fb-4250-976e-7133dff5c347' , @type : 'ONAPservice' }
 And match $.supportingResource == '#[0]'
 
 Scenario: testServiceResourceGetInventoryWithServiceSpecId
 Given path 'service','e4688e5f-61a0-4f8b-ae02-a2fbde623bcb'
-And params {serviceSpecification.id:'1e3feeb0-8e36-46c6-862c-236d9c626439', relatedParty.id:'6490'}
 When method get
 Then status 200
-And match $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01', hasStarted : 'yes', type : 'service-instance', @type : 'serviceONAP' }
-And match $.relatedParty contains { role : 'ONAPcustomer' , id : '6490' }
+And match $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01', type : 'service-instance', @type : 'serviceONAP' }
 And match $.serviceSpecification contains { id : '98d95267-5e0f-4531-abf8-f14b90031dc5' , invariantUUID : '709d157b-52fb-4250-976e-7133dff5c347' , @type : 'ONAPservice' }
 And match $.supportingResource[0] contains { id : 'cb80fbb6-9aa7-4ac5-9541-e14f45de533e' , name : 'NewFreeRadius-VNF-instance-01' , status :  'PREPROV' , modelInvariantId : 'f5993703-977f-4346-a1c9-c1884f8cfd8d' , modelVersionId : '902438f7-1e4c-492d-b7cc-8650e13b8aeb' , @referredType : 'ONAP resource' }
 And match $.supportingResource == '#[2]'
index c621709..31aeff1 100644 (file)
@@ -361,7 +361,7 @@ Then status 204
 
 
 Scenario: testCheckServiceOrderWithCustomerAAINotResponding
-* call Context.removeWireMockMapping("/aai/v11/business/customers/customer/new");
+* call Context.removeWireMockMapping("/aai/v14/business/customers/customer/new");
 Given path 'serviceOrder'
 And request data[4]
 When method post
@@ -382,7 +382,7 @@ Then status 200
 
 
 Scenario: testAAIPutServiceNotResponding
-* call Context.removeWireMockMapping("/aai/v11/business/customers/customer/new/service-subscriptions/service-subscription/vFW");
+* call Context.removeWireMockMapping("/aai/v14/business/customers/customer/new/service-subscriptions/service-subscription/vFW");
 Given path 'serviceOrder'
 And request data[4]
 When method post
index 4995025..7606483 100644 (file)
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/6490/service-subscriptions"
+    "url": "/aai/v14/business/customers/customer/6490/service-subscriptions"
   },
   "response": {
     "status": 200,
@@ -33,4 +33,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
index eaf5a4b..8361f94 100644 (file)
@@ -1,7 +1,7 @@
 {
     "request": {
         "method": "GET",
-        "url": "/aai/v11/business/customers/customer/6490"
+        "url": "/aai/v14/business/customers/customer/6490"
     },
     "response": {
         "status": 200,
@@ -15,4 +15,4 @@
             "Content-Type": "application/json"
         }
     }
-}
\ No newline at end of file
+}
index 250f5d6..9194687 100644 (file)
@@ -1,7 +1,7 @@
 {
     "request": {
         "method": "GET",
-        "url": "/aai/v11/business/customers/customer/generic"
+        "url": "/aai/v14/business/customers/customer/generic"
     },
     "response": {
         "status": 200,
@@ -15,4 +15,4 @@
             "Content-Type": "application/json"
         }
     }
-}
\ No newline at end of file
+}
index 5cf9ddd..73bd5e1 100644 (file)
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/generic/service-subscriptions"
+    "url": "/aai/v14/business/customers/customer/generic/service-subscriptions"
   },
   "response": {
     "status": 200,
@@ -17,4 +17,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
index 10bcac8..121f7d1 100644 (file)
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/6490/service-subscriptions/service-subscription/AnsibleService/service-instances/service-instance/405c8c00-44b9-4303-9f27-6797d22ca096"
+    "url": "/aai/v14/business/customers/customer/6490/service-subscriptions/service-subscription/AnsibleService/service-instances/service-instance/405c8c00-44b9-4303-9f27-6797d22ca096"
   },
   "response": {
     "status": 200,
@@ -49,4 +49,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
index 093dd96..6fb1b4c 100644 (file)
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/6490/service-subscriptions/service-subscription/vFW/service-instances/"
+    "url": "/aai/v14/business/customers/customer/6490/service-subscriptions/service-subscription/vFW/service-instances/"
   },
   "response": {
     "status": 200,
@@ -40,4 +40,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
index 444e3cd..10c172d 100644 (file)
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/6490/service-subscriptions/service-subscription/vFW-service-2VF-based/service-instances/"
+    "url": "/aai/v14/business/customers/customer/6490/service-subscriptions/service-subscription/vFW-service-2VF-based/service-instances/"
   },
   "response": {
     "status": 200,
@@ -40,4 +40,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/6490/service-subscriptions/service-subscription/vFW/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList"
+    "url": "/aai/v14/nodes/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList"
   },
   "response": {
     "status": 200,
@@ -16,4 +16,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
diff --git a/src/test/resources/mappings/aai_get_service_instance.json b/src/test/resources/mappings/aai_get_service_instance.json
new file mode 100644 (file)
index 0000000..d9f2ab2
--- /dev/null
@@ -0,0 +1,52 @@
+{
+  "request": {
+    "method": "GET",
+    "url": "/aai/v14/nodes/service-instances/service-instance/405c8c00-44b9-4303-9f27-6797d22ca096"
+  },
+  "response": {
+    "status": 200,
+    "jsonBody": {
+      "service-instance-id": "405c8c00-44b9-4303-9f27-6797d22ca096",
+      "service-instance-name": "ansibleService-service-instance-065FYE",
+      "environment-context": "General_Revenue-Bearing",
+      "workload-context": "Production",
+      "model-invariant-id": "f3ec9092-5c98-41f1-9fea-96be80abd064",
+      "model-version-id": "0bf5f56a-4506-4e98-ab50-336d73ca4b07",
+      "resource-version": "1530200875713",
+      "orchestration-status": "Active",
+      "relationship-list": {
+        "relationship": [
+          {
+            "related-to": "generic-vnf",
+            "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/3f73377f-d9be-4a33-b068-e3f35b5b770b",
+            "relationship-data": [
+              {
+                "relationship-key": "generic-vnf.vnf-id",
+                "relationship-value": "3f73377f-d9be-4a33-b068-e3f35b5b770b"
+              }
+            ],
+            "related-to-property": [
+              {
+                "property-key": "generic-vnf.vnf-name",
+                "property-value": "ansibleService-vnf-instance-DebianVNF_0_065FYE"
+              }
+            ]
+          },
+          {
+            "related-to": "owning-entity",
+            "related-link": "/aai/v11/business/owning-entities/owning-entity/OE-generic",
+            "relationship-data": [
+              {
+                "relationship-key": "owning-entity.owning-entity-id",
+                "relationship-value": "OE-generic"
+              }
+            ]
+          }
+        ]
+      }
+    },
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  }
+}
@@ -1,7 +1,7 @@
 {
   "request": {
     "method": "GET",
-    "url": "/aai/v11/business/customers/customer/6490/service-subscriptions/service-subscription/vFW/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcb"
+    "url": "/aai/v14/nodes/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcb"
   },
   "response": {
     "status": 200,
@@ -52,4 +52,4 @@
       "Content-Type": "application/json"
     }
   }
-}
\ No newline at end of file
+}
index 7581a91..2dda86e 100644 (file)
@@ -1,7 +1,7 @@
 {
     "request": {
         "method": "GET",
-        "url": "/aai/v11/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants"
+        "url": "/aai/v14/cloud-infrastructure/cloud-regions/cloud-region/CloudOwner/RegionOne/tenants"
     },
     "response": {
         "status": 200,
             "Content-Type": "application/json"
         }
     }
-}
\ No newline at end of file
+}
index ec28b72..f9f2418 100644 (file)
@@ -1,7 +1,7 @@
 {
     "request": {
         "method": "PUT",
-        "url": "/aai/v11/business/customers/customer/new"
+        "url": "/aai/v14/business/customers/customer/new"
     },
     "response": {
         "status": 201,
@@ -9,4 +9,4 @@
             "Content-Type": "application/json"
         }
     }
-}
\ No newline at end of file
+}
index 889627a..98ed133 100644 (file)
@@ -1,7 +1,7 @@
 {
     "request": {
         "method": "PUT",
-        "url": "/aai/v11/business/customers/customer/new/service-subscriptions/service-subscription/vFW"
+        "url": "/aai/v14/business/customers/customer/new/service-subscriptions/service-subscription/vFW"
     },
     "response": {
         "status": 201,
@@ -9,4 +9,4 @@
             "Content-Type": "application/json"
         }
     }
-}
\ No newline at end of file
+}