aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraosull01 <adrian.osullivan@huawei.com>2019-02-08 14:26:43 +0000
committeraosull01 <adrian.osullivan@huawei.com>2019-02-08 16:42:52 +0000
commit7589723d28be3443c4108aba3e6c30629ea494c7 (patch)
treedf9f10c59fa3fa4da0c2843fdbb0235f804164df
parent8661255afca19d7ef0750288c1a905e0bf89599a (diff)
Use node query with format option
Change-Id: Ie29472147bbbc661a5fe9419407727e84d6f8dfe Issue-ID: EXTAPI-199 Signed-off-by: aosull01 <adrian.osullivan@huawei.com>
-rw-r--r--src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java2
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java201
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java275
-rw-r--r--src/test/resources/karatetest/features/01--ServiceInventory.feature20
-rw-r--r--src/test/resources/mappings/aai_get_service_3_format_resource_url.json26
-rw-r--r--src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json62
-rw-r--r--src/test/resources/mappings/aai_get_service_instance_format_resource_url.json59
7 files changed, 415 insertions, 230 deletions
diff --git a/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java b/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java
index 212242b..9060249 100644
--- a/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java
+++ b/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java
@@ -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/";
diff --git a/src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java b/src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java
index ebb5144..5424db5 100644
--- a/src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java
+++ b/src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java
@@ -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;
}
+ }
}
diff --git a/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java b/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java
index 57bb0f9..0426226 100644
--- a/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java
+++ b/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java
@@ -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);
- }
-
- }
+ }
}
diff --git a/src/test/resources/karatetest/features/01--ServiceInventory.feature b/src/test/resources/karatetest/features/01--ServiceInventory.feature
index 6dbef15..3ae33b1 100644
--- a/src/test/resources/karatetest/features/01--ServiceInventory.feature
+++ b/src/test/resources/karatetest/features/01--ServiceInventory.feature
@@ -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
index 0000000..f78847d
--- /dev/null
+++ b/src/test/resources/mappings/aai_get_service_3_format_resource_url.json
@@ -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
index 0000000..086441e
--- /dev/null
+++ b/src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json
@@ -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
index 0000000..7f0db27
--- /dev/null
+++ b/src/test/resources/mappings/aai_get_service_instance_format_resource_url.json
@@ -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"
+ }
+ }
+}