diff options
Diffstat (limited to 'src')
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" + } + } +} |