Use node query with format option 17/78117/3
authoraosull01 <adrian.osullivan@huawei.com>
Fri, 8 Feb 2019 14:26:43 +0000 (14:26 +0000)
committeraosull01 <adrian.osullivan@huawei.com>
Fri, 8 Feb 2019 16:42:52 +0000 (16:42 +0000)
Change-Id: Ie29472147bbbc661a5fe9419407727e84d6f8dfe
Issue-ID: EXTAPI-199
Signed-off-by: aosull01 <adrian.osullivan@huawei.com>
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/test/resources/karatetest/features/01--ServiceInventory.feature
src/test/resources/mappings/aai_get_service_3_format_resource_url.json [new file with mode: 0644]
src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json [new file with mode: 0644]
src/test/resources/mappings/aai_get_service_instance_format_resource_url.json [new file with mode: 0644]

index 212242b..9060249 100644 (file)
@@ -38,6 +38,8 @@ public final class OnapComponentsUrlPaths {
             "/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_CUSTOMER =
+            "/aai/v14/nodes/service-instances/service-instance/$serviceId?format=resource_and_url";
     public static final String AAI_GET_SERVICE_INSTANCES_PATH =
             "/aai/v14/business/customers/customer/$customerId/service-subscriptions/service-subscription/$serviceSpecName/service-instances/";
 
index ebb5144..5424db5 100644 (file)
@@ -1,17 +1,15 @@
 /**
- *     Copyright (c) 2018 Orange
+ * Copyright (c) 2018 Orange
  *
- *     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
+ * 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
+ * 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.
+ * 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.
  */
 package org.onap.nbi.apis.serviceinventory;
 
@@ -31,114 +29,129 @@ import org.springframework.stereotype.Service;
 @Service
 public class AaiClient extends BaseClient {
 
-    public static final String CUSTOMER_ID = "$customerId";
+  public static final String CUSTOMER_ID = "$customerId";
 
-    @Value("${aai.host}")
-    private String aaiHost;
+  @Value("${aai.host}")
+  private String aaiHost;
 
-    @Value("${aai.header.authorization}")
-    private String aaiHeaderAuthorization;
+  @Value("${aai.header.authorization}")
+  private String aaiHeaderAuthorization;
 
-    @Value("${aai.api.id}")
-    private String aaiApiId;
+  @Value("${aai.api.id}")
+  private String aaiApiId;
 
-    @Value("${aai.header.transaction.id}")
-    private String aaiTransactionId;
+  @Value("${aai.header.transaction.id}")
+  private String aaiTransactionId;
 
-    private static final String HEADER_AUTHORIZATION = "Authorization";
-    private static final String X_FROM_APP_ID = "X-FromAppId";
-    private static final Logger LOGGER = LoggerFactory.getLogger(AaiClient.class);
-    private static final String X_TRANSACTION_ID = "X-TransactionId";
+  private static final String HEADER_AUTHORIZATION = "Authorization";
+  private static final String X_FROM_APP_ID = "X-FromAppId";
+  private static final Logger LOGGER = LoggerFactory.getLogger(AaiClient.class);
+  private static final String X_TRANSACTION_ID = "X-TransactionId";
 
 
-    private String aaiServiceUrl;
-    private String aaiServicesUrl;
-    private String aaiServicesInstancesUrl;
+  private String aaiServiceUrl;
+  private String aaiServiceCustomerUrl;
+  private String aaiServicesUrl;
+  private String aaiServicesInstancesUrl;
 
-    @PostConstruct
-    private void setUpAndlogAAIUrl() {
-        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();
+  @PostConstruct
+  private void setUpAndlogAAIUrl() {
+    aaiServiceUrl = new StringBuilder().append(aaiHost)
+        .append(OnapComponentsUrlPaths.AAI_GET_SERVICE).toString();
+    aaiServiceCustomerUrl = new StringBuilder().append(aaiHost)
+        .append(OnapComponentsUrlPaths.AAI_GET_SERVICE_CUSTOMER).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();
 
 
-        LOGGER.info("AAI service url :  "+aaiServiceUrl);
-        LOGGER.info("AAI services url :  "+aaiServicesUrl);
-        LOGGER.info("AAI service instances url :  "+aaiServicesInstancesUrl);
+    LOGGER.info("AAI service url :  " + aaiServiceUrl);
+    LOGGER.info("AAI services url :  " + aaiServicesUrl);
+    LOGGER.info("AAI service instances url :  " + aaiServicesInstancesUrl);
 
-    }
+  }
 
 
-    private HttpHeaders buildRequestHeaderForAAI() {
+  private HttpHeaders buildRequestHeaderForAAI() {
 
-        HttpHeaders httpHeaders = new HttpHeaders();
-        httpHeaders.add(HEADER_AUTHORIZATION, aaiHeaderAuthorization);
-        httpHeaders.add(X_FROM_APP_ID, aaiApiId);
-        httpHeaders.add("Accept", "application/json");
-        httpHeaders.add("Content-Type", "application/json");
-        httpHeaders.add(X_TRANSACTION_ID, aaiTransactionId);
+    HttpHeaders httpHeaders = new HttpHeaders();
+    httpHeaders.add(HEADER_AUTHORIZATION, aaiHeaderAuthorization);
+    httpHeaders.add(X_FROM_APP_ID, aaiApiId);
+    httpHeaders.add("Accept", "application/json");
+    httpHeaders.add("Content-Type", "application/json");
+    httpHeaders.add(X_TRANSACTION_ID, aaiTransactionId);
 
-        return httpHeaders;
+    return httpHeaders;
 
-    }
+  }
 
-    public Map getCatalogService(String customerId, String serviceSpecName, String serviceId) {
+  public Map getCatalogService(String customerId, String serviceSpecName, String serviceId) {
 
-        String callUrlFormated = aaiServiceUrl.replace(CUSTOMER_ID, customerId);
-        callUrlFormated = callUrlFormated.replace("$serviceSpecName", serviceSpecName);
-        callUrlFormated = callUrlFormated.replace("$serviceId", serviceId);
+    String callUrlFormated = aaiServiceUrl.replace(CUSTOMER_ID, customerId);
+    callUrlFormated = callUrlFormated.replace("$serviceSpecName", serviceSpecName);
+    callUrlFormated = callUrlFormated.replace("$serviceId", serviceId);
 
-        ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
-        if (response != null && response.getStatusCode().equals(HttpStatus.OK)) {
-            return (LinkedHashMap) response.getBody();
-        }
-        return null;
+    ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
+    if (response != null && response.getStatusCode().equals(HttpStatus.OK)) {
+      return (LinkedHashMap) response.getBody();
     }
-    
-    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;
+    return null;
+  }
+
+  public Map getService(String serviceId) {
+    // Retrieve the Service Instance using AAI node query
+    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) {
+  public Map getServiceCustomer(String serviceId) {
 
-        StringBuilder callURL = new StringBuilder().append(aaiHost).append(relatedLink);
-        try{
-            ResponseEntity<Object> response = callApiGet(callURL.toString(), buildRequestHeaderForAAI());
-            return (LinkedHashMap) response.getBody();
-        } catch (BackendFunctionalException e) {
-            LOGGER.error("error on calling {} , {}" , callURL.toString(), e);
-            return null;
-        }
+    String callUrlFormated = aaiServiceCustomerUrl.replace("$serviceId", serviceId);
+    ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
+    if (response != null && response.getStatusCode().equals(HttpStatus.OK)) {
+      return (LinkedHashMap) response.getBody();
     }
-
-    public Map getServicesInAaiForCustomer(String customerId) {
-        String callUrlFormated = aaiServicesUrl.replace(CUSTOMER_ID, customerId);
-        try{
-            ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
-            return (LinkedHashMap) response.getBody();
-        } catch (BackendFunctionalException e) {
-            LOGGER.error("error on calling {} , {}" , callUrlFormated, e);
-            return null;
-        }
+    return null;
+  }
+
+  public Map getVNF(String relatedLink) {
+
+    StringBuilder callURL = new StringBuilder().append(aaiHost).append(relatedLink);
+    try {
+      ResponseEntity<Object> response = callApiGet(callURL.toString(), buildRequestHeaderForAAI());
+      return (LinkedHashMap) response.getBody();
+    } catch (BackendFunctionalException e) {
+      LOGGER.error("error on calling {} , {}", callURL.toString(), e);
+      return null;
     }
-
-    public Map getServiceInstancesInAaiForCustomer(String customerId, String serviceType) {
-        String callUrlFormated = aaiServicesInstancesUrl.replace(CUSTOMER_ID, customerId);
-        callUrlFormated = callUrlFormated.replace("$serviceSpecName", serviceType);
-
-        try{
-            ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
-            return (LinkedHashMap) response.getBody();
-        } catch (BackendFunctionalException e) {
-            LOGGER.error("error on calling {} , {}" , callUrlFormated, e);
-            return null;
-        }
+  }
+
+  public Map getServicesInAaiForCustomer(String customerId) {
+    String callUrlFormated = aaiServicesUrl.replace(CUSTOMER_ID, customerId);
+    try {
+      ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
+      return (LinkedHashMap) response.getBody();
+    } catch (BackendFunctionalException e) {
+      LOGGER.error("error on calling {} , {}", callUrlFormated, e);
+      return null;
+    }
+  }
+
+  public Map getServiceInstancesInAaiForCustomer(String customerId, String serviceType) {
+    String callUrlFormated = aaiServicesInstancesUrl.replace(CUSTOMER_ID, customerId);
+    callUrlFormated = callUrlFormated.replace("$serviceSpecName", serviceType);
+
+    try {
+      ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI());
+      return (LinkedHashMap) response.getBody();
+    } catch (BackendFunctionalException e) {
+      LOGGER.error("error on calling {} , {}", callUrlFormated, e);
+      return null;
     }
+  }
 }
index 57bb0f9..0426226 100644 (file)
@@ -1,14 +1,15 @@
 /**
  * Copyright (c) 2018 Orange
  *
- * 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
+ * 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.
+ * 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.
  */
 package org.onap.nbi.apis.serviceinventory;
 
@@ -31,152 +32,178 @@ import org.springframework.util.StringUtils;
 @Service
 public class ServiceInventoryService {
 
-    @Autowired
-    NbiClient nbiClient;
+  @Autowired
+  NbiClient nbiClient;
 
-    @Autowired
-    AaiClient aaiClient;
+  @Autowired
+  AaiClient aaiClient;
 
-    @Autowired
-    GetServiceInventoryJsonTransformer getServiceInventoryJsonTransformer;
+  @Autowired
+  GetServiceInventoryJsonTransformer getServiceInventoryJsonTransformer;
 
-    @Autowired
-    FindServiceInventoryJsonTransformer findServiceInventoryJsonTransformer;
+  @Autowired
+  FindServiceInventoryJsonTransformer findServiceInventoryJsonTransformer;
 
-    private static final Logger LOGGER = LoggerFactory.getLogger(ServiceInventoryService.class);
+  private static final Logger LOGGER = LoggerFactory.getLogger(ServiceInventoryService.class);
 
 
-    public Map get(String serviceId, MultiValueMap<String, String> params) {
-
-                
-        Map serviceResponse = aaiClient.getService(serviceId);
-
-        if (serviceResponse != null) {
-            addVnfsToResponse(serviceResponse);
-            LinkedHashMap serviceInventoryResponse =
-                (LinkedHashMap) getServiceInventoryJsonTransformer.transform(serviceResponse);
-            return serviceInventoryResponse;
-        } else {
-            throw new BackendFunctionalException(HttpStatus.NOT_FOUND, "no catalog service found","no catalog service found");
-        }
+  public Map get(String serviceId, MultiValueMap<String, String> params) {
 
+    Map serviceResponse = aaiClient.getService(serviceId);
+    if (serviceResponse != null) {
+      addVnfsToResponse(serviceResponse);
+      LinkedHashMap serviceInventoryResponse =
+          (LinkedHashMap) getServiceInventoryJsonTransformer.transform(serviceResponse);
+      addrelatedPartyIdIdandSpecName(serviceId, serviceInventoryResponse);
+      return serviceInventoryResponse;
+    } else {
+      throw new BackendFunctionalException(HttpStatus.NOT_FOUND, "no catalog service found",
+          "no catalog service found");
     }
 
+  }
 
-    private String getCustomerId(String clientId) {
 
-        if (StringUtils.isEmpty(clientId)) {
-            return "generic";
-        } else {
-            return clientId;
-        }
+  private String getCustomerId(String clientId) {
 
+    if (StringUtils.isEmpty(clientId)) {
+      return "generic";
+    } else {
+      return clientId;
     }
 
-    private String getServiceName(String serviceSpecificationName, String serviceSpecificationId) {
+  }
 
-        if (StringUtils.isEmpty(serviceSpecificationName)) {
-            Map serviceSpecification = nbiClient.getServiceSpecification(serviceSpecificationId);
-            return (String) serviceSpecification.get("name");
-        } else {
-            return serviceSpecificationName;
-        }
+  private String getServiceName(String serviceSpecificationName, String serviceSpecificationId) {
 
+    if (StringUtils.isEmpty(serviceSpecificationName)) {
+      Map serviceSpecification = nbiClient.getServiceSpecification(serviceSpecificationId);
+      return (String) serviceSpecification.get("name");
+    } else {
+      return serviceSpecificationName;
     }
 
-    private void addRelatedPartyId(String customerId, LinkedHashMap serviceInventoryResponse) {
-
-        LinkedHashMap relatedParty = (LinkedHashMap) serviceInventoryResponse.get("relatedParty");
-        relatedParty.put("id", customerId);
-
-    }
-
-    private void addVnfsToResponse(Map serviceResponse) {
-
-        List<Map> vnfs = new ArrayList<>();
-        LinkedHashMap relationShip = (LinkedHashMap) serviceResponse.get("relationship-list");
-        if (relationShip != null) {
-            List<LinkedHashMap> relationsList = (List<LinkedHashMap>) relationShip.get("relationship");
-            if (relationsList != null) {
-                for (LinkedHashMap relation : relationsList) {
-                    String relatedLink = (String) relation.get("related-link");
-                    Map vnf = aaiClient.getVNF(relatedLink);
-                    if (vnf != null) {
-                        vnfs.add(vnf);
-                    }
-                }
-                serviceResponse.put("vnfs", vnfs);
-            }
+  }
+
+  private void addrelatedPartyIdIdandSpecName(String serviceId,
+      LinkedHashMap serviceInventoryResponse) {
+
+    String customerId;
+    String serviceSpecName;
+    LinkedHashMap relatedParty = (LinkedHashMap) serviceInventoryResponse.get("relatedParty");
+    LinkedHashMap serviceSpecification =
+        (LinkedHashMap) serviceInventoryResponse.get("serviceSpecification");
+    Map servicecustomerResponse = aaiClient.getServiceCustomer(serviceId);
+    if (servicecustomerResponse != null) {
+      List<LinkedHashMap> serviceCustomerResults =
+          (List<LinkedHashMap>) servicecustomerResponse.get("results");
+
+      if (!CollectionUtils.isEmpty(serviceCustomerResults)) {
+        for (LinkedHashMap serviceCustomerResult : serviceCustomerResults) {
+          String url = (String) serviceCustomerResult.get("url");
+          String[] pathObjects = url.split("/");
+          customerId = pathObjects[6];
+          serviceSpecName = pathObjects[9];
+          relatedParty.put("id", customerId);
+          serviceSpecification.put("name", serviceSpecName);
         }
+      } else {
+        LOGGER.warn("no service instance found for serviceId {}", serviceId);
+      }
+    } else {
+      LOGGER.warn("no service instance found for serviceId {}", serviceId);
     }
-
-
-    public List<LinkedHashMap> find(MultiValueMap<String, String> params) {
-
-        String clientId = params.getFirst("relatedParty.id");
-        String serviceSpecId = params.getFirst("serviceSpecification.id");
-        String serviceSpecName = params.getFirst("serviceSpecification.name");
-        String customerId = getCustomerId(clientId);
-        String serviceName;
-        List<LinkedHashMap> serviceInstances = new ArrayList<>();
-        if (StringUtils.isEmpty(serviceSpecId) && StringUtils.isEmpty(serviceSpecName)) {
-            handleFindWithNoServiceParam(customerId, serviceInstances);
-        } else {
-            serviceName = getServiceName(serviceSpecName, serviceSpecId);
-            buildServiceInstances(serviceInstances, customerId, serviceName);
-        }
-        List<LinkedHashMap> serviceInventoryResponse = new ArrayList<>();
-        if(!CollectionUtils.isEmpty(serviceInstances)){
-            serviceInventoryResponse =
-                findServiceInventoryJsonTransformer.transform(serviceInstances);
-            for (LinkedHashMap serviceInventory : serviceInventoryResponse) {
-                LinkedHashMap party = (LinkedHashMap) serviceInventory.get("relatedParty");
-                party.put("id", customerId);
-            }
-        }else {
-            LOGGER.warn("no service instance found for customer {} ",customerId);
+  }
+
+  private void addVnfsToResponse(Map serviceResponse) {
+
+    List<Map> vnfs = new ArrayList<>();
+    LinkedHashMap relationShip = (LinkedHashMap) serviceResponse.get("relationship-list");
+    if (relationShip != null) {
+      List<LinkedHashMap> relationsList = (List<LinkedHashMap>) relationShip.get("relationship");
+      if (relationsList != null) {
+        for (LinkedHashMap relation : relationsList) {
+          String relatedLink = (String) relation.get("related-link");
+          Map vnf = aaiClient.getVNF(relatedLink);
+          if (vnf != null) {
+            vnfs.add(vnf);
+          }
         }
-        return serviceInventoryResponse;
+        serviceResponse.put("vnfs", vnfs);
+      }
+    }
+  }
+
+
+  public List<LinkedHashMap> find(MultiValueMap<String, String> params) {
+
+    String clientId = params.getFirst("relatedParty.id");
+    String serviceSpecId = params.getFirst("serviceSpecification.id");
+    String serviceSpecName = params.getFirst("serviceSpecification.name");
+    String customerId = getCustomerId(clientId);
+    String serviceName;
+    List<LinkedHashMap> serviceInstances = new ArrayList<>();
+    if (StringUtils.isEmpty(serviceSpecId) && StringUtils.isEmpty(serviceSpecName)) {
+      handleFindWithNoServiceParam(customerId, serviceInstances);
+    } else {
+      serviceName = getServiceName(serviceSpecName, serviceSpecId);
+      buildServiceInstances(serviceInstances, customerId, serviceName);
+    }
+    List<LinkedHashMap> serviceInventoryResponse = new ArrayList<>();
+    if (!CollectionUtils.isEmpty(serviceInstances)) {
+      serviceInventoryResponse = findServiceInventoryJsonTransformer.transform(serviceInstances);
+      for (LinkedHashMap serviceInventory : serviceInventoryResponse) {
+        LinkedHashMap party = (LinkedHashMap) serviceInventory.get("relatedParty");
+        party.put("id", customerId);
+      }
+    } else {
+      LOGGER.warn("no service instance found for customer {} ", customerId);
+    }
+    return serviceInventoryResponse;
+
+
+  }
+
+  private void handleFindWithNoServiceParam(String customerId,
+      List<LinkedHashMap> serviceInstances) {
+    Map servicesInAaiForCustomer = aaiClient.getServicesInAaiForCustomer(customerId);
+    if (servicesInAaiForCustomer != null) {
+      List<LinkedHashMap> servicesInAAI =
+          (List<LinkedHashMap>) servicesInAaiForCustomer.get("service-subscription");
+      for (LinkedHashMap service : servicesInAAI) {
+        String serviceType = (String) service.get("service-type");
+        buildServiceInstances(serviceInstances, customerId, serviceType);
+      }
+    } else {
+      LOGGER.warn("no service instance found for customer {} ", customerId);
+    }
+  }
 
+  private void buildServiceInstances(List<LinkedHashMap> serviceInstances, String customerId,
+      String serviceType) {
 
-    }
+    Map serviceInstancesInAaiForCustomer =
+        aaiClient.getServiceInstancesInAaiForCustomer(customerId, serviceType);
+    if (serviceInstancesInAaiForCustomer != null) {
+      List<LinkedHashMap> serviceInstancesForServiceType =
+          (List<LinkedHashMap>) serviceInstancesInAaiForCustomer.get("service-instance");
 
-    private void handleFindWithNoServiceParam(String customerId, List<LinkedHashMap> serviceInstances) {
-        Map servicesInAaiForCustomer = aaiClient.getServicesInAaiForCustomer(customerId);
-        if(servicesInAaiForCustomer!=null){
-            List<LinkedHashMap> servicesInAAI =
-                (List<LinkedHashMap>) servicesInAaiForCustomer.get("service-subscription");
-            for (LinkedHashMap service : servicesInAAI) {
-                String serviceType = (String) service.get("service-type");
-                buildServiceInstances(serviceInstances, customerId, serviceType);
-            }
-        }else {
-            LOGGER.warn("no service instance found for customer {} ",customerId);
+      if (!CollectionUtils.isEmpty(serviceInstancesForServiceType)) {
+        // add service type for jolt
+        for (LinkedHashMap serviceInstanceForServiceType : serviceInstancesForServiceType) {
+          serviceInstanceForServiceType.put("service-type", serviceType);
         }
+        serviceInstances.addAll(serviceInstancesForServiceType);
+      } else {
+        LOGGER.warn("no service instance found for customer {} and service type {}", customerId,
+            serviceType);
+      }
+    } else {
+      LOGGER.warn("no service instance found for customer {} and service type {}", customerId,
+          serviceType);
     }
 
-    private void buildServiceInstances(List<LinkedHashMap> serviceInstances, String customerId, String serviceType) {
-
-        Map serviceInstancesInAaiForCustomer =
-            aaiClient.getServiceInstancesInAaiForCustomer(customerId, serviceType);
-        if (serviceInstancesInAaiForCustomer != null) {
-            List<LinkedHashMap> serviceInstancesForServiceType =
-                (List<LinkedHashMap>) serviceInstancesInAaiForCustomer.get("service-instance");
-
-            if (!CollectionUtils.isEmpty(serviceInstancesForServiceType)) {
-                // add service type for jolt
-                for (LinkedHashMap serviceInstanceForServiceType : serviceInstancesForServiceType) {
-                    serviceInstanceForServiceType.put("service-type", serviceType);
-                }
-                serviceInstances.addAll(serviceInstancesForServiceType);
-            } else {
-                LOGGER.warn("no service instance found for customer {} and service type {}",customerId,serviceType);
-            }
-        } else {
-            LOGGER.warn("no service instance found for customer {} and service type {}",customerId,serviceType);
-        }
 
-
-    }
+  }
 
 }
index 6dbef15..3ae33b1 100644 (file)
@@ -7,40 +7,36 @@ Background:
 * url nbiBaseUrl
 * def Context = Java.type('org.onap.nbi.test.Context');
 * call Context.startServers();
-
     
 Scenario: testServiceResourceGetInventory
 Given path 'service','e4688e5f-61a0-4f8b-ae02-a2fbde623bcb'
 When method get
 Then status 200
 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 $.serviceSpecification contains { id : '98d95267-5e0f-4531-abf8-f14b90031dc5' , invariantUUID : '709d157b-52fb-4250-976e-7133dff5c347' , @type : 'ONAPservice', name :'servicename2' }
+And match $.relatedParty  contains { role : 'ONAPcustomer' , id : 'DemoTest2' }
 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'
 When method get
 Then status 200
 And match $.state == 'Active'
+And match $.relatedParty  contains { role : 'ONAPcustomer' , id : 'DemoTest1' }
+And match $.serviceSpecification contains { id : '0bf5f56a-4506-4e98-ab50-336d73ca4b07' , invariantUUID : 'f3ec9092-5c98-41f1-9fea-96be80abd064' , @type : 'ONAPservice', name :'servicename1' }
+
 
 Scenario: testServiceResourceGetInventoryWithoutRelationShipList
 Given path 'service','e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList'
 When method get
 Then status 200
 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 $.serviceSpecification contains { id : '98d95267-5e0f-4531-abf8-f14b90031dc5' , invariantUUID : '709d157b-52fb-4250-976e-7133dff5c347' , @type : 'ONAPservice', name : 'servicename3' }
+And match $.relatedParty  contains { role : 'ONAPcustomer' , id : 'DemoTest3' }
 And match $.supportingResource == '#[0]'
 
-Scenario: testServiceResourceGetInventoryWithServiceSpecId
-Given path 'service','e4688e5f-61a0-4f8b-ae02-a2fbde623bcb'
-When method get
-Then status 200
-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: testServiceInventoryFind
 Given path 'service'
diff --git a/src/test/resources/mappings/aai_get_service_3_format_resource_url.json b/src/test/resources/mappings/aai_get_service_3_format_resource_url.json
new file mode 100644 (file)
index 0000000..f78847d
--- /dev/null
@@ -0,0 +1,26 @@
+{
+  "request": {
+    "method": "GET",
+    "url": "/aai/v14/nodes/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList?format=resource_and_url"
+  },
+  "response": {
+    "status": 200,
+    "jsonBody": {
+        "results": [
+        {
+        "url": "/aai/v14/business/customers/customer/DemoTest3/service-subscriptions/service-subscription/servicename3/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList",
+       "service-instance": {
+        "service-instance-id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList",
+        "service-instance-name": "NewFreeRadius-service-instance-01",
+        "model-invariant-id": "709d157b-52fb-4250-976e-7133dff5c347",
+        "model-version-id": "98d95267-5e0f-4531-abf8-f14b90031dc5",
+        "resource-version": "1518508381261"
+ }
+    }
+    ]
+    },
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  }
+}
diff --git a/src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json b/src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json
new file mode 100644 (file)
index 0000000..086441e
--- /dev/null
@@ -0,0 +1,62 @@
+{
+  "request": {
+    "method": "GET",
+    "url": "/aai/v14/nodes/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcb?format=resource_and_url"
+  },
+  "response": {
+    "status": 200,
+    "jsonBody": {
+    "results": [
+        {
+        "url": "/aai/v14/business/customers/customer/DemoTest2/service-subscriptions/service-subscription/servicename2/service-instances/service-instance/e4688e5f-61a0-4f8b-ae02-a2fbde623bcb",
+       "service-instance": {
+        "service-instance-id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb",
+        "service-instance-name": "NewFreeRadius-service-instance-01",
+        "model-invariant-id": "709d157b-52fb-4250-976e-7133dff5c347",
+        "model-version-id": "98d95267-5e0f-4531-abf8-f14b90031dc5",
+        "resource-version": "1518508381261",
+        "relationship-list": {
+          "relationship": [
+            {
+              "related-to": "generic-vnf",
+              "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/cb80fbb6-9aa7-4ac5-9541-e14f45de533e",
+              "relationship-data": [
+                {
+                  "relationship-key": "generic-vnf.vnf-id",
+                  "relationship-value": "cb80fbb6-9aa7-4ac5-9541-e14f45de533e"
+                }
+              ],
+              "related-to-property": [
+                {
+                  "property-key": "generic-vnf.vnf-name",
+                  "property-value": "NewFreeRadius-VNF-instance-01"
+                }
+              ]
+            },
+            {
+              "related-to": "generic-vnf",
+              "related-link": "/aai/v11/network/generic-vnfs/generic-vnf/cb80fbb6-9aa7-4ac5-9541-e14f45de533e",
+              "relationship-data": [
+                {
+                  "relationship-key": "generic-vnf.vnf-id",
+                  "relationship-value": "cb80fbb6-9aa7-4ac5-9541-e14f45de533e"
+                }
+              ],
+              "related-to-property": [
+                {
+                  "property-key": "generic-vnf.vnf-name",
+                  "property-value": "NewFreeRadius-VNF-instance-01"
+                }
+              ]
+            }
+          ]
+        }
+}
+    }
+    ]
+    },
+    "headers": {
+      "Content-Type": "application/json"
+    }
+  }
+}
diff --git a/src/test/resources/mappings/aai_get_service_instance_format_resource_url.json b/src/test/resources/mappings/aai_get_service_instance_format_resource_url.json
new file mode 100644 (file)
index 0000000..7f0db27
--- /dev/null
@@ -0,0 +1,59 @@
+{
+  "request": {
+    "method": "GET",
+    "url": "/aai/v14/nodes/service-instances/service-instance/405c8c00-44b9-4303-9f27-6797d22ca096?format=resource_and_url"
+  },
+  "response": {
+    "status": 200,
+    "jsonBody": {
+      "results": [
+        {
+        "url": "/aai/v14/business/customers/customer/DemoTest1/service-subscriptions/service-subscription/servicename1/service-instances/service-instance/405c8c00-44b9-4303-9f27-6797d22ca096",
+       "service-instance": {
+      "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"
+    }
+  }
+}