diff options
55 files changed, 692 insertions, 155 deletions
diff --git a/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java b/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java index 80563d5..0796c2f 100644 --- a/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java +++ b/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java @@ -27,6 +27,8 @@ public final class OnapComponentsUrlPaths { public static final String SDC_ROOT_URL = "/sdc/v1/catalog/services"; public static final String SDC_GET_PATH = "/metadata"; public static final String SDC_TOSCA_PATH = "/toscaModel"; + public static final String SDC_HEALTH_CHECK = "/sdc2/rest/healthCheck"; + // AAI public static final String AAI_GET_TENANTS_PATH = @@ -36,6 +38,8 @@ public final class OnapComponentsUrlPaths { "/aai/v14/business/customers/customer/$customerId/service-subscriptions"; public static final String AAI_PUT_SERVICE_FOR_CUSTOMER_PATH = "/aai/v14/business/customers/customer/$customerId/service-subscriptions/service-subscription/"; + public static final String AAI_HEALTH_CHECK = + "aai/util/echo?action=long"; public static final String AAI_GET_SERVICE = "/aai/v14/nodes/service-instances/service-instance/$serviceId"; public static final String AAI_GET_SERVICE_CUSTOMER = @@ -43,6 +47,7 @@ public final class OnapComponentsUrlPaths { public static final String AAI_GET_SERVICE_INSTANCES_PATH = "/aai/v14/business/customers/customer/$customerId/service-subscriptions/service-subscription/$serviceSpecName/service-instances/"; + // MSO public static final String MSO_CREATE_SERVICE_INSTANCE_PATH = "/onap/so/infra/serviceInstantiation/v7/serviceInstances/"; public static final String MSO_GET_REQUEST_STATUS_PATH = "/onap/so/infra/orchestrationRequests/v7/"; @@ -50,7 +55,8 @@ public final class OnapComponentsUrlPaths { public static final String MSO_CREATE_E2ESERVICE_INSTANCE_PATH = "/onap/so/infra/e2eServiceInstances/v3"; public static final String MSO_DELETE_E2ESERVICE_INSTANCE_PATH = "/onap/so/infra/e2eServiceInstances/v3/"; public static final String MSO_GET_E2EREQUEST_STATUS_PATH = "/onap/so/infra/e2eServiceInstances/v3/$serviceId/operations/$operationId"; - + public static final String MSO_HEALTH_CHECK = "/globalhealthcheck"; + // DMaaP Message Router REST Client public static final String DMAAP_CONSUME_EVENTS = "/events/$topic/$consumergroup/$consumerid?timeout=$timeout"; diff --git a/src/main/java/org/onap/nbi/apis/hub/service/CheckDMaaPEventsManager.java b/src/main/java/org/onap/nbi/apis/hub/service/CheckDMaaPEventsManager.java index 6e2811f..b45647f 100644 --- a/src/main/java/org/onap/nbi/apis/hub/service/CheckDMaaPEventsManager.java +++ b/src/main/java/org/onap/nbi/apis/hub/service/CheckDMaaPEventsManager.java @@ -88,12 +88,8 @@ public class CheckDMaaPEventsManager { ObjectMapper mapper = new ObjectMapper(); - String dmaapGetEventsUrlFormated = dmaapGetEventsUrl.replace("$topic", topic); - dmaapGetEventsUrlFormated = dmaapGetEventsUrlFormated.replace("$consumergroup", consumerGroup); - dmaapGetEventsUrlFormated = dmaapGetEventsUrlFormated.replace("$consumerid", consumerId); - dmaapGetEventsUrlFormated = dmaapGetEventsUrlFormated.replace("$timeout", timeout); - List<String> dmaapResponse = callDMaaPGetEvents(dmaapGetEventsUrlFormated); + List<String> dmaapResponse = callDMaaPGetEvents(); if (!CollectionUtils.isEmpty(dmaapResponse)) { for (int i = 0; i < dmaapResponse.size(); i++) { String aaiEventString = dmaapResponse.get(i); @@ -125,6 +121,7 @@ public class CheckDMaaPEventsManager { JsonNode serviceInstances = childserviceInstances.get("service-instance"); JsonNode serviceInstance = serviceInstances.get(0); serviceInstanceEvent.setId(serviceInstance.get("service-instance-id").asText()); + serviceInstanceEvent.setHref("service/" + serviceInstance.get("service-instance-id").asText()); serviceInstanceEvent.setState(serviceInstance.get("orchestration-status").asText()); if (action.equals("CREATE")) { if (logger.isDebugEnabled()) { @@ -158,7 +155,13 @@ public class CheckDMaaPEventsManager { } } - public List<String> callDMaaPGetEvents(String dmaapGetEventsUrlFormated) { + public List<String> callDMaaPGetEvents() { + + String dmaapGetEventsUrlFormated = dmaapGetEventsUrl.replace("$topic", topic); + dmaapGetEventsUrlFormated = dmaapGetEventsUrlFormated.replace("$consumergroup", consumerGroup); + dmaapGetEventsUrlFormated = dmaapGetEventsUrlFormated.replace("$consumerid", consumerId); + dmaapGetEventsUrlFormated = dmaapGetEventsUrlFormated.replace("$timeout", timeout); + if (logger.isDebugEnabled()) { logger.debug("Calling DMaaP Url : " + dmaapGetEventsUrlFormated); diff --git a/src/main/java/org/onap/nbi/apis/servicecatalog/SdcClient.java b/src/main/java/org/onap/nbi/apis/servicecatalog/SdcClient.java index e25ab4e..0be415c 100644 --- a/src/main/java/org/onap/nbi/apis/servicecatalog/SdcClient.java +++ b/src/main/java/org/onap/nbi/apis/servicecatalog/SdcClient.java @@ -71,15 +71,19 @@ public class SdcClient { private String sdcGetUrl; private String sdcFindUrl; + private String sdcHealthCheck; @PostConstruct private void setUpAndLogSDCUrl() { sdcGetUrl= new StringBuilder().append(sdcHost).append(OnapComponentsUrlPaths.SDC_ROOT_URL+"/{id}"+OnapComponentsUrlPaths.SDC_GET_PATH).toString(); sdcFindUrl = new StringBuilder().append(sdcHost).append(OnapComponentsUrlPaths.SDC_ROOT_URL).toString(); + sdcHealthCheck = new StringBuilder().append(sdcHost).append(OnapComponentsUrlPaths.SDC_HEALTH_CHECK).toString(); + LOGGER.info("SDC GET url : "+sdcGetUrl); LOGGER.info("SDC FIND url : "+ sdcFindUrl); + LOGGER.info("SDC HealthCheck : "+ sdcHealthCheck); } @@ -111,6 +115,15 @@ public class SdcClient { } + public LinkedHashMap callCheckConnectivity() { + + UriComponentsBuilder callURI = UriComponentsBuilder.fromHttpUrl(sdcHealthCheck); + ResponseEntity<Object> response = callSdc(callURI.build().encode().toUri()); + return (LinkedHashMap) response.getBody(); + + } + + public File callGetWithAttachment(String toscaModelUrl) { StringBuilder urlBuilder = new StringBuilder().append(sdcHost).append(toscaModelUrl); 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 5424db5..0becb02 100644 --- a/src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java +++ b/src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java @@ -1,15 +1,14 @@ /** * 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; @@ -24,134 +23,146 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.StringHttpMessageConverter; 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 aaiServiceCustomerUrl; - private String aaiServicesUrl; - private String aaiServicesInstancesUrl; + private String aaiServiceUrl; + private String aaiServiceCustomerUrl; + private String aaiServicesUrl; + private String aaiServicesInstancesUrl; + private String aaiHealthCheckUrl; - @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(); + @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(); + aaiHealthCheckUrl = new StringBuilder().append(aaiHost) + .append(OnapComponentsUrlPaths.AAI_HEALTH_CHECK).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); + LOGGER.info("AAI aaiHealthCheckUrl : " + aaiHealthCheckUrl); - } + } - 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(); + 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(); + + 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; } - return null; - } - public Map getServiceCustomer(String serviceId) { + public Map getServiceCustomer(String serviceId) { - String callUrlFormated = aaiServiceCustomerUrl.replace("$serviceId", serviceId); - ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI()); - if (response != null && response.getStatusCode().equals(HttpStatus.OK)) { - return (LinkedHashMap) response.getBody(); + String callUrlFormated = aaiServiceCustomerUrl.replace("$serviceId", serviceId); + try { + ResponseEntity<Object> response = callApiGet(callUrlFormated, buildRequestHeaderForAAI()); + return (LinkedHashMap) response.getBody(); + } catch (BackendFunctionalException e) { + LOGGER.error("error on calling {} , {}", callUrlFormated.toString(), 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 void callCheckConnectivity() { + String customersUrl = new StringBuilder().append(aaiHealthCheckUrl).toString(); + ResponseEntity<String> response = callApiGetHealthCheck(customersUrl, buildRequestHeaderForAAI()); } - } - - 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 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 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; + + 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/BaseClient.java b/src/main/java/org/onap/nbi/apis/serviceinventory/BaseClient.java index 72ee99e..adae4ec 100644 --- a/src/main/java/org/onap/nbi/apis/serviceinventory/BaseClient.java +++ b/src/main/java/org/onap/nbi/apis/serviceinventory/BaseClient.java @@ -23,6 +23,7 @@ import org.springframework.http.HttpHeaders; import org.springframework.http.HttpMethod; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; +import org.springframework.http.converter.StringHttpMessageConverter; import org.springframework.web.client.RestTemplate; public abstract class BaseClient { @@ -56,4 +57,26 @@ public abstract class BaseClient { return response; } + + protected ResponseEntity<String> callApiGetHealthCheck(String callURL, HttpHeaders httpHeaders) { + + + if(LOGGER.isDebugEnabled()){ + LOGGER.debug("log request : "+callURL+ " "+httpHeaders); + } + + ResponseEntity<String> response = null; + response = restTemplate.exchange(callURL, HttpMethod.GET, + new HttpEntity<>("parameters", httpHeaders), String.class); + + if(LOGGER.isDebugEnabled()){ + LOGGER.debug("response body : {}",response.getBody().toString()); + } + LOGGER.info("response status : {}", response.getStatusCodeValue()); + if (LOGGER.isWarnEnabled() && !response.getStatusCode().equals(HttpStatus.OK)) { + LOGGER.warn("HTTP call on {} returns {}, {}", callURL , response.getStatusCodeValue() ,response.getBody().toString()); + } + return response; + } + } 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 0426226..4abc3e8 100644 --- a/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java +++ b/src/main/java/org/onap/nbi/apis/serviceinventory/ServiceInventoryService.java @@ -55,6 +55,8 @@ public class ServiceInventoryService { LinkedHashMap serviceInventoryResponse = (LinkedHashMap) getServiceInventoryJsonTransformer.transform(serviceResponse); addrelatedPartyIdIdandSpecName(serviceId, serviceInventoryResponse); + String href = "service/" + serviceId; + serviceInventoryResponse.put("href", href ); return serviceInventoryResponse; } else { throw new BackendFunctionalException(HttpStatus.NOT_FOUND, "no catalog service found", @@ -153,6 +155,8 @@ public class ServiceInventoryService { if (!CollectionUtils.isEmpty(serviceInstances)) { serviceInventoryResponse = findServiceInventoryJsonTransformer.transform(serviceInstances); for (LinkedHashMap serviceInventory : serviceInventoryResponse) { + String href = "service/" + serviceInventory.get("id"); + serviceInventory.put("href", href); LinkedHashMap party = (LinkedHashMap) serviceInventory.get("relatedParty"); party.put("id", customerId); } diff --git a/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java b/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java index 0d863d1..deb1443 100644 --- a/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java +++ b/src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java @@ -66,6 +66,7 @@ public class SoClient { private String getE2ESoStatus; private String deleteE2ESoUrl; private String deleteSoUrl; + private String SoHealthCheck; @PostConstruct @@ -82,6 +83,8 @@ public class SoClient { .toString(); getE2ESoStatus = new StringBuilder().append(soHostname) .append(OnapComponentsUrlPaths.MSO_GET_E2EREQUEST_STATUS_PATH).toString(); + SoHealthCheck = new StringBuilder().append(soHostname) + .append(OnapComponentsUrlPaths.MSO_HEALTH_CHECK).toString(); LOGGER.info("SO create service url : " + createSoUrl); LOGGER.info("SO create e2e service url : " + createE2ESoUrl); @@ -89,6 +92,7 @@ public class SoClient { LOGGER.info("SO delete e2e service url : " + deleteE2ESoUrl); LOGGER.info("SO get so status url : " + getSoStatus); LOGGER.info("SO get e2e so status url : " + getE2ESoStatus); + LOGGER.info("SO healthCheck : " + SoHealthCheck); } @@ -250,6 +254,14 @@ public class SoClient { } } + + public void callCheckConnectivity() { + String url = SoHealthCheck; + restTemplate.exchange(url, HttpMethod.GET, + new HttpEntity<>(buildRequestHeader()), String.class); + + } + public GetE2ERequestStatusResponse callE2EGetRequestStatus(String operationId, String serviceId) { String callUrlFormated = getE2ESoStatus.replace("$serviceId", serviceId); diff --git a/src/main/java/org/onap/nbi/apis/status/OnapClient.java b/src/main/java/org/onap/nbi/apis/status/OnapClient.java new file mode 100644 index 0000000..d9bedc0 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/status/OnapClient.java @@ -0,0 +1,81 @@ +/** + * 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 + * + * 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. + */ +package org.onap.nbi.apis.status; + +import java.text.MessageFormat; +import org.onap.nbi.apis.hub.service.CheckDMaaPEventsManager; +import org.onap.nbi.apis.servicecatalog.SdcClient; +import org.onap.nbi.apis.serviceinventory.AaiClient; +import org.onap.nbi.apis.serviceorder.SoClient; +import org.onap.nbi.apis.status.model.ApplicationStatus; +import org.onap.nbi.apis.status.model.OnapModuleType; +import org.onap.nbi.apis.status.model.StatusType; +import org.onap.nbi.exceptions.BackendFunctionalException; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; +import org.springframework.web.client.ResourceAccessException; + +@Service +public class OnapClient { + + @Autowired + private SdcClient sdcClient; + + @Autowired + private AaiClient aaiClient; + + @Autowired + private SoClient soClient; + + @Autowired + private CheckDMaaPEventsManager checkDMaaPEventsManager; + + private static final Logger LOGGER = LoggerFactory.getLogger(OnapClient.class); + + + public ApplicationStatus checkConnectivity(OnapModuleType onapModuleType) { + try { + + switch (onapModuleType) { + case SDC: + sdcClient.callCheckConnectivity(); + break; + case AAI: + aaiClient.callCheckConnectivity(); + break; + case SO: + soClient.callCheckConnectivity(); + break; + case DMAAP: + checkDMaaPEventsManager.callDMaaPGetEvents(); + break; + } + } catch (BackendFunctionalException e) { + String message = MessageFormat + .format("backend exception for {0}, status code {1}, body response {2}", onapModuleType, + e.getHttpStatus(), e.getBodyResponse()); + LOGGER.error(message); + return new ApplicationStatus(onapModuleType.getValue() + " connectivity", StatusType.KO, null); + } catch (ResourceAccessException e) { + String message = MessageFormat + .format("resource access exception for {0}, response {1}", onapModuleType, e.getMessage()); + LOGGER.error(message); + return new ApplicationStatus(onapModuleType.getValue() + " connectivity", StatusType.KO, null); + } + return new ApplicationStatus(onapModuleType.getValue() + " connectivity", StatusType.OK, null); + } + + +}
\ No newline at end of file diff --git a/src/main/java/org/onap/nbi/apis/status/StatusResource.java b/src/main/java/org/onap/nbi/apis/status/StatusResource.java index 4fead09..e1510cc 100644 --- a/src/main/java/org/onap/nbi/apis/status/StatusResource.java +++ b/src/main/java/org/onap/nbi/apis/status/StatusResource.java @@ -1,21 +1,19 @@ /** - * 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.status; import org.onap.nbi.apis.status.model.ApplicationStatus; +import org.onap.nbi.apis.status.model.OnapModuleType; import org.onap.nbi.apis.status.model.StatusType; import org.onap.nbi.commons.JsonRepresentation; import org.onap.nbi.commons.ResourceManagement; @@ -24,8 +22,10 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; +import org.springframework.util.MultiValueMap; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import javax.servlet.http.HttpServletRequest; @@ -44,30 +44,36 @@ public class StatusResource extends ResourceManagement { .add("components.name").add("components.status"); @GetMapping(value = "", produces = MediaType.APPLICATION_JSON_VALUE) - public ResponseEntity<Object> status(HttpServletRequest request) { + public ResponseEntity<Object> status(HttpServletRequest request, @RequestParam MultiValueMap<String, String> params) { ResponseEntity<Object> responseEntity = null; - final String[] splitPath = request.getRequestURI().split("/"); final String applicationName = splitPath[1]; - - final ApplicationStatus applicationStatus = this.statusService.get(applicationName, version); - - final boolean isServiceFullyFunctional = - StatusType.OK.equals(applicationStatus.getStatus()) ? applicationStatus.getComponents().stream() - .allMatch(componentStatus -> StatusType.OK.equals(componentStatus.getStatus())) : false; + boolean fullStatus = Boolean.valueOf(params.getFirst("fullStatus")); + final ApplicationStatus applicationStatus = buildNbiStatus(applicationName,fullStatus); // filter object Object response = this.getEntity(applicationStatus, fullRepresentation); - if (isServiceFullyFunctional) { - responseEntity = ResponseEntity.ok(response); - } else { - responseEntity = ResponseEntity.status(HttpStatus.SERVICE_UNAVAILABLE).body(response); - } + responseEntity = ResponseEntity.ok(response); return responseEntity; } + private ApplicationStatus buildNbiStatus(String applicationName, boolean fullStatus) { + final ApplicationStatus applicationStatus = this.statusService.get(applicationName, version); + + if(fullStatus) { + final ApplicationStatus sdcConnectivityStatus = this.statusService.getOnapConnectivity(OnapModuleType.SDC); + final ApplicationStatus aaiConnectivityStatus = this.statusService.getOnapConnectivity(OnapModuleType.AAI); + final ApplicationStatus soConnectivityStatus = this.statusService.getOnapConnectivity(OnapModuleType.SO); + final ApplicationStatus dmaapConnectivityStatus = this.statusService.getOnapConnectivity(OnapModuleType.DMAAP); + applicationStatus.addComponent(sdcConnectivityStatus).addComponent(aaiConnectivityStatus) + .addComponent(soConnectivityStatus).addComponent(dmaapConnectivityStatus); + } + + return applicationStatus; + } + } diff --git a/src/main/java/org/onap/nbi/apis/status/StatusService.java b/src/main/java/org/onap/nbi/apis/status/StatusService.java index 8f285bf..35eba3a 100644 --- a/src/main/java/org/onap/nbi/apis/status/StatusService.java +++ b/src/main/java/org/onap/nbi/apis/status/StatusService.java @@ -16,9 +16,14 @@ package org.onap.nbi.apis.status; import org.onap.nbi.apis.status.model.ApplicationStatus; +import org.onap.nbi.apis.status.model.OnapModuleType; public interface StatusService { ApplicationStatus get(String serviceName, String serviceVersion); + + ApplicationStatus getOnapConnectivity(OnapModuleType onapModuleType); + + } diff --git a/src/main/java/org/onap/nbi/apis/status/StatusServiceImpl.java b/src/main/java/org/onap/nbi/apis/status/StatusServiceImpl.java index a55e113..1ee9fc6 100644 --- a/src/main/java/org/onap/nbi/apis/status/StatusServiceImpl.java +++ b/src/main/java/org/onap/nbi/apis/status/StatusServiceImpl.java @@ -16,12 +16,18 @@ package org.onap.nbi.apis.status; import org.onap.nbi.apis.status.model.ApplicationStatus; +import org.onap.nbi.apis.status.model.OnapModuleType; import org.onap.nbi.apis.status.model.StatusType; +import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service("statusService") public class StatusServiceImpl implements StatusService { + @Autowired + private OnapClient onapClient; + + @Override public ApplicationStatus get(final String serviceName, final String serviceVersion) { @@ -29,9 +35,11 @@ public class StatusServiceImpl implements StatusService { } + @Override + public ApplicationStatus getOnapConnectivity(OnapModuleType onapModuleType) { - public boolean serviceIsUp() { - return true; + return onapClient.checkConnectivity(onapModuleType); } + } diff --git a/src/main/java/org/onap/nbi/apis/status/model/ApplicationStatus.java b/src/main/java/org/onap/nbi/apis/status/model/ApplicationStatus.java index 3e1a60f..6d8e0c1 100644 --- a/src/main/java/org/onap/nbi/apis/status/model/ApplicationStatus.java +++ b/src/main/java/org/onap/nbi/apis/status/model/ApplicationStatus.java @@ -33,7 +33,7 @@ public class ApplicationStatus implements Resource { * Builds a new {@code ApplicationStatus} with the following attributes : * * @param name name of the service - * @param state state of the service ({@code OK} | {@code KO}) + * @param status status of the service ({@code OK} | {@code KO}) * @param version version of the service ({@code x.y.z}) */ public ApplicationStatus(final String name, final StatusType status, final String version) { @@ -58,7 +58,7 @@ public class ApplicationStatus implements Resource { return this.components; } - public ApplicationStatus component(final ApplicationStatus componentStatus) { + public ApplicationStatus addComponent(final ApplicationStatus componentStatus) { this.components.add(componentStatus); return this; } diff --git a/src/main/java/org/onap/nbi/apis/status/model/OnapModuleType.java b/src/main/java/org/onap/nbi/apis/status/model/OnapModuleType.java new file mode 100644 index 0000000..2013147 --- /dev/null +++ b/src/main/java/org/onap/nbi/apis/status/model/OnapModuleType.java @@ -0,0 +1,46 @@ +/** + * 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 + * + * 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. + */ +package org.onap.nbi.apis.status.model; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonValue; + +public enum OnapModuleType { + + SDC("sdc"), AAI("aai"),SO("so"), DMAAP("dmaap"); + + private final String value; + + OnapModuleType(String v) { + this.value = v; + } + + @JsonValue + public String getValue() { + return this.value; + } + + @JsonCreator + public static OnapModuleType fromValue(String v) { + for (OnapModuleType c : OnapModuleType.values()) { + if (c.value.equals(v)) { + return c; + } + } + throw new IllegalArgumentException(v); + } + +} diff --git a/src/main/resources/application-test.properties b/src/main/resources/application-test.properties index ca04a05..028040d 100644 --- a/src/main/resources/application-test.properties +++ b/src/main/resources/application-test.properties @@ -17,11 +17,13 @@ nbi.version = v3 # SERVER -server.servlet.context-path = /nbi/api/${nbi.version} +server.servlet.context-path = /nbi/api/${nbi.version} server.port = 8080 # LOGGING -logging.level. = ERROR +logging.level.org.springframework = OFF +logging.level.root = OFF +spring.main.banner-mode = off # ONAP onap.lcpCloudRegionId = RegionOne @@ -61,11 +63,11 @@ so.owning.entity.name = OE-generic so.project.name = Project-generic # DMAAP -dmaap.host = http://127.0.0.1:8091 -dmaap.topic = AAI-EVENT -dmaap.consumergroup = NBICG1 -dmaap.consumerid = NBIC1 -dmaap.timeout = 2000 +dmaap.host = http://127.0.0.1:8091 +dmaap.topic = AAI-EVENT +dmaap.consumergroup = NBICG1 +dmaap.consumerid = NBIC1 +dmaap.timeout = 2000 # MSB msb.enabled = false diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 70d640c..741682e 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -27,7 +27,11 @@ server.servlet.context-path = /nbi/api/${nbi.version} server.port = 8080 # LOGGING -logging.level. = INFO +logging.level. = WARN +logging.level.org.springframework = OFF +logging.level.org.onap = INFO +logging.level.root = WARN +spring.main.banner-mode = off # ONAP onap.lcpCloudRegionId = RegionOne @@ -44,8 +48,8 @@ serviceOrder.schedule = 5000 serviceOrder.initial = 1 executionTask.schedule = 2000 executionTask.initial = 1 -dmaapCheck.schedule = 10000 -dmaapCheck.initial = 1 +dmaapCheck.schedule = 10000 +dmaapCheck.initial = 1 # SDC sdc.host = http://10.0.3.1:8080 diff --git a/src/test/resources/karatetest/features/01--ServiceInventory.feature b/src/test/resources/karatetest/features/01--ServiceInventory.feature index 3ae33b1..95f8696 100644 --- a/src/test/resources/karatetest/features/01--ServiceInventory.feature +++ b/src/test/resources/karatetest/features/01--ServiceInventory.feature @@ -12,7 +12,7 @@ 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 $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , href : 'service/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', 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' } @@ -32,7 +32,7 @@ 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 $ contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList' , href : 'service/e4688e5f-61a0-4f8b-ae02-a2fbde623bcbWithoutList' , 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', name : 'servicename3' } And match $.relatedParty contains { role : 'ONAPcustomer' , id : 'DemoTest3' } And match $.supportingResource == '#[0]' @@ -44,7 +44,7 @@ And params {serviceSpecification.name : 'vFW' , relatedParty.id : '6490' } When method get Then status 200 And match $ == '#[1]' -And match $[0] contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' } +And match $[0] contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , href : 'service/e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' } And match $[0].relatedParty contains { role : 'ONAPcustomer' , id : '6490' } And match $[0].serviceSpecification contains { name : 'vFW' , id : '98d95267-5e0f-4531-abf8-f14b90031dc5' } @@ -54,7 +54,7 @@ And params {serviceSpecification.id : '1e3feeb0-8e36-46c6-862c-236d9c626439' , r When method get Then status 200 And match $ == '#[1]' -And match $[0] contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' } +And match $[0] contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , href : 'service/e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' } And match $[0].relatedParty contains { role : 'ONAPcustomer' , id : '6490' } And match $[0].serviceSpecification contains { name : 'vFW' , id : '98d95267-5e0f-4531-abf8-f14b90031dc5' } @@ -64,7 +64,7 @@ And params {relatedParty.id:'6490'} When method get Then status 200 And match $ == '#[2]' -And match $[0] contains { id : 'vfw-service-id' , name : 'vfw-service-name' } +And match $[0] contains { id : 'vfw-service-id' , href : 'service/vfw-service-id' , name : 'vfw-service-name' } And match $[0].relatedParty contains { role : 'ONAPcustomer' , id : '6490' } And match $[0].serviceSpecification contains { name : 'vFW-service-2VF-based' , id : '9vfw-service-modek-version-id' } And match $[1] contains { id : 'e4688e5f-61a0-4f8b-ae02-a2fbde623bcb' , name : 'NewFreeRadius-service-instance-01' } diff --git a/src/test/resources/karatetest/features/04--StatusRessourceTest.feature b/src/test/resources/karatetest/features/04--StatusRessourceTest.feature index f616e90..a21b9b3 100644 --- a/src/test/resources/karatetest/features/04--StatusRessourceTest.feature +++ b/src/test/resources/karatetest/features/04--StatusRessourceTest.feature @@ -9,9 +9,41 @@ Background: * call Context.startServers(); Scenario: testHealthCheck +Given path 'status' +When method get +Then status 200 +And match response.status == 'ok' +And match response.name == 'nbi' + +Scenario: testFullHealthCheck +Given path 'status' +And params {fullStatus :true} +When method get +Then status 200 +And match response.status == 'ok' +And match response.name == 'nbi' +And assert response.components.length == 4 +And match each $.components contains {status :'ok'} + + +Scenario: testFullHealthChecWithoutWiremock +* call Context.stopWiremock(); +Given path 'status' +And params {fullStatus :true} +When method get +Then status 200 +And match response.status == 'ok' +And match response.name == 'nbi' +And assert response.components.length == 4 +And match each response.components contains { status: 'ko'} +Scenario: testFullHealthCheckWithSDCNotResponding +* call Context.removeWireMockMapping("/sdc2/rest/healthCheck"); Given path 'status' +And params {fullStatus :true} When method get Then status 200 And match response.status == 'ok' -And match response.name == 'nbi'
\ No newline at end of file +And match response.name == 'nbi' +And assert response.components.length == 4 +And match response.components contains [{name:'sdc connectivity', status: 'ko'},{name:'so connectivity', status: 'ok'},{name:'aai connectivity', status: 'ok'},{name:'dmaap connectivity', status: 'ok'},] diff --git a/src/test/resources/logback-test.xml b/src/test/resources/logback-test.xml new file mode 100644 index 0000000..342220f --- /dev/null +++ b/src/test/resources/logback-test.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- + + Copyright (c) 2019 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 + + 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. + +--> +<configuration> + <include resource="org/springframework/boot/logging/logback/base.xml"/> + <logger level="OFF" name="org.springframework"/> +</configuration>
\ No newline at end of file diff --git a/src/test/resources/mappings/aai_get_6490_service-subscriptions.json b/src/test/resources/mappings/aai/aai_get_6490_service-subscriptions.json index 7606483..7606483 100644 --- a/src/test/resources/mappings/aai_get_6490_service-subscriptions.json +++ b/src/test/resources/mappings/aai/aai_get_6490_service-subscriptions.json diff --git a/src/test/resources/mappings/aai_get_customer_6490.json b/src/test/resources/mappings/aai/aai_get_customer_6490.json index 8361f94..8361f94 100644 --- a/src/test/resources/mappings/aai_get_customer_6490.json +++ b/src/test/resources/mappings/aai/aai_get_customer_6490.json diff --git a/src/test/resources/mappings/aai_get_customer_generic.json b/src/test/resources/mappings/aai/aai_get_customer_generic.json index 9194687..9194687 100644 --- a/src/test/resources/mappings/aai_get_customer_generic.json +++ b/src/test/resources/mappings/aai/aai_get_customer_generic.json diff --git a/src/test/resources/mappings/aai/aai_get_customers.json b/src/test/resources/mappings/aai/aai_get_customers.json new file mode 100644 index 0000000..4146b6a --- /dev/null +++ b/src/test/resources/mappings/aai/aai_get_customers.json @@ -0,0 +1,34 @@ +{ + "request": { + "method": "GET", + "url": "/aai/v14/business/customers" + }, + "response": { + "status": 200, + "jsonBody": { + "customer": [ + { + "global-customer-id": "generic", + "subscriber-name": "generic", + "subscriber-type": "INFRA", + "resource-version": "1550238542827" + }, + { + "global-customer-id": "Generic-Vendor", + "subscriber-name": "Generic-Vendor", + "subscriber-type": "INFRA", + "resource-version": "1550569650318" + }, + { + "global-customer-id": "customerRG", + "subscriber-name": "customerRG", + "subscriber-type": "INFRA", + "resource-version": "1551445667218" + } + ] + }, + "headers": { + "Content-Type": "application/xml" + } + } +} diff --git a/src/test/resources/mappings/aai_get_generic_service-subscriptions.json b/src/test/resources/mappings/aai/aai_get_generic_service-subscriptions.json index 73bd5e1..73bd5e1 100644 --- a/src/test/resources/mappings/aai_get_generic_service-subscriptions.json +++ b/src/test/resources/mappings/aai/aai_get_generic_service-subscriptions.json diff --git a/src/test/resources/mappings/aai/aai_get_healtcheck.json b/src/test/resources/mappings/aai/aai_get_healtcheck.json new file mode 100644 index 0000000..ed8939e --- /dev/null +++ b/src/test/resources/mappings/aai/aai_get_healtcheck.json @@ -0,0 +1,30 @@ +{ + "request": { + "method": "GET", + "url": "/aai/util/echo?action=long" + }, + "response": { + "status": 200, + "jsonBody":{ + "responseMessages": { + "responseMessage": [ + { + "messageId": "INF0001", + "text": "Success X-FromAppId=%1 X-TransactionId=%2 (msg=%3) (rc=%4)", + "variables": { + "variable": [ + "AAI", + "808b54e3-e563-4144-a1b9-e24e2ed93d4f", + "Successful health check:OK", + "0.0.0002" + ] + } + } + ] + } + }, + "headers": { + "Content-Type": "application/xml" + } + } +} diff --git a/src/test/resources/mappings/aai_get_service-subscription-Ansible-service.json b/src/test/resources/mappings/aai/aai_get_service-subscription-Ansible-service.json index 121f7d1..121f7d1 100644 --- a/src/test/resources/mappings/aai_get_service-subscription-Ansible-service.json +++ b/src/test/resources/mappings/aai/aai_get_service-subscription-Ansible-service.json diff --git a/src/test/resources/mappings/aai_get_service-subscription_vnf.json b/src/test/resources/mappings/aai/aai_get_service-subscription_vnf.json index 7c33979..7c33979 100644 --- a/src/test/resources/mappings/aai_get_service-subscription_vnf.json +++ b/src/test/resources/mappings/aai/aai_get_service-subscription_vnf.json diff --git a/src/test/resources/mappings/aai_get_service-subscriptionsVFW.json b/src/test/resources/mappings/aai/aai_get_service-subscriptionsVFW.json index 6fb1b4c..6fb1b4c 100644 --- a/src/test/resources/mappings/aai_get_service-subscriptionsVFW.json +++ b/src/test/resources/mappings/aai/aai_get_service-subscriptionsVFW.json diff --git a/src/test/resources/mappings/aai_get_service-subscriptionsvFW-service-2VF-based.json b/src/test/resources/mappings/aai/aai_get_service-subscriptionsvFW-service-2VF-based.json index 10c172d..10c172d 100644 --- a/src/test/resources/mappings/aai_get_service-subscriptionsvFW-service-2VF-based.json +++ b/src/test/resources/mappings/aai/aai_get_service-subscriptionsvFW-service-2VF-based.json diff --git a/src/test/resources/mappings/aai_get_service_3.json b/src/test/resources/mappings/aai/aai_get_service_3.json index fc2e416..40c02bd 100644 --- a/src/test/resources/mappings/aai_get_service_3.json +++ b/src/test/resources/mappings/aai/aai_get_service_3.json @@ -6,7 +6,7 @@ "response": { "status": 200, "jsonBody": { - "service-instance-id": "e4688e5f-61a0-4f8b-ae02-a2fbde623bcb", + "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", diff --git a/src/test/resources/mappings/aai_get_service_3_format_resource_url.json b/src/test/resources/mappings/aai/aai_get_service_3_format_resource_url.json index f78847d..f78847d 100644 --- a/src/test/resources/mappings/aai_get_service_3_format_resource_url.json +++ b/src/test/resources/mappings/aai/aai_get_service_3_format_resource_url.json diff --git a/src/test/resources/mappings/aai_get_service_instance.json b/src/test/resources/mappings/aai/aai_get_service_instance.json index d9f2ab2..d9f2ab2 100644 --- a/src/test/resources/mappings/aai_get_service_instance.json +++ b/src/test/resources/mappings/aai/aai_get_service_instance.json diff --git a/src/test/resources/mappings/aai_get_service_instance_2.json b/src/test/resources/mappings/aai/aai_get_service_instance_2.json index 7d90bc2..7d90bc2 100644 --- a/src/test/resources/mappings/aai_get_service_instance_2.json +++ b/src/test/resources/mappings/aai/aai_get_service_instance_2.json diff --git a/src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json b/src/test/resources/mappings/aai/aai_get_service_instance_2_format_resource_url.json index 086441e..086441e 100644 --- a/src/test/resources/mappings/aai_get_service_instance_2_format_resource_url.json +++ b/src/test/resources/mappings/aai/aai_get_service_instance_2_format_resource_url.json diff --git a/src/test/resources/mappings/aai_get_service_instance_format_resource_url.json b/src/test/resources/mappings/aai/aai_get_service_instance_format_resource_url.json index 7f0db27..7f0db27 100644 --- a/src/test/resources/mappings/aai_get_service_instance_format_resource_url.json +++ b/src/test/resources/mappings/aai/aai_get_service_instance_format_resource_url.json diff --git a/src/test/resources/mappings/aai_get_tenants.json b/src/test/resources/mappings/aai/aai_get_tenants.json index 2dda86e..2dda86e 100644 --- a/src/test/resources/mappings/aai_get_tenants.json +++ b/src/test/resources/mappings/aai/aai_get_tenants.json diff --git a/src/test/resources/mappings/aai_put_customer.json b/src/test/resources/mappings/aai/aai_put_customer.json index f9f2418..f9f2418 100644 --- a/src/test/resources/mappings/aai_put_customer.json +++ b/src/test/resources/mappings/aai/aai_put_customer.json diff --git a/src/test/resources/mappings/aai_put_customer_service.json b/src/test/resources/mappings/aai/aai_put_customer_service.json index 98ed133..98ed133 100644 --- a/src/test/resources/mappings/aai_put_customer_service.json +++ b/src/test/resources/mappings/aai/aai_put_customer_service.json diff --git a/src/test/resources/mappings/dmaap_get_aaievents.json b/src/test/resources/mappings/dmaap/dmaap_get_aaievents.json index 6b5c630..6b5c630 100644 --- a/src/test/resources/mappings/dmaap_get_aaievents.json +++ b/src/test/resources/mappings/dmaap/dmaap_get_aaievents.json diff --git a/src/test/resources/mappings/sdc_find.json b/src/test/resources/mappings/sdc/sdc_find.json index c04ecae..c04ecae 100644 --- a/src/test/resources/mappings/sdc_find.json +++ b/src/test/resources/mappings/sdc/sdc_find.json diff --git a/src/test/resources/mappings/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439.json b/src/test/resources/mappings/sdc/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439.json index 4956be7..4956be7 100644 --- a/src/test/resources/mappings/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439.json +++ b/src/test/resources/mappings/sdc/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439.json diff --git a/src/test/resources/mappings/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_tosca.json b/src/test/resources/mappings/sdc/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_tosca.json index ebf72bb..ebf72bb 100644 --- a/src/test/resources/mappings/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_tosca.json +++ b/src/test/resources/mappings/sdc/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_tosca.json diff --git a/src/test/resources/mappings/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_withoutTosca.json b/src/test/resources/mappings/sdc/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_withoutTosca.json index 35554f0..35554f0 100644 --- a/src/test/resources/mappings/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_withoutTosca.json +++ b/src/test/resources/mappings/sdc/sdc_get_1e3feeb0-8e36-46c6-862c-236d9c626439_withoutTosca.json diff --git a/src/test/resources/mappings/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_toscafile.json b/src/test/resources/mappings/sdc/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_toscafile.json index 9886df7..9886df7 100644 --- a/src/test/resources/mappings/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_toscafile.json +++ b/src/test/resources/mappings/sdc/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_toscafile.json diff --git a/src/test/resources/mappings/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_withTosca.json b/src/test/resources/mappings/sdc/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_withTosca.json index 848b725..848b725 100644 --- a/src/test/resources/mappings/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_withTosca.json +++ b/src/test/resources/mappings/sdc/sdc_get_462f84e5-f0e5-44c5-ab95-38fb4bf77064_withTosca.json diff --git a/src/test/resources/mappings/sdc/sdc_get_artifactTypes.json b/src/test/resources/mappings/sdc/sdc_get_artifactTypes.json new file mode 100644 index 0000000..2c7f635 --- /dev/null +++ b/src/test/resources/mappings/sdc/sdc_get_artifactTypes.json @@ -0,0 +1,68 @@ +{ + "request": { + "method": "GET", + "url": "/sdc/v1/artifactTypes" + }, + "response": { + "status": 200, + "jsonBody": +[ + "CHEF", + "PUPPET", + "YANG", + "SHELL_SCRIPT", + "SHELL", + "ICON", + "UNKNOWN", + "HEAT", + "DG_XML", + "MURANO_PKG", + "HEAT_ENV", + "YANG_XML", + "HEAT_VOL", + "HEAT_NET", + "OTHER", + "WORKFLOW", + "NETWORK_CALL_FLOW", + "TOSCA_TEMPLATE", + "TOSCA_CSAR", + "VNF_CATALOG", + "VF_LICENSE", + "BPEL", + "VENDOR_LICENSE", + "MODEL_INVENTORY_PROFILE", + "MODEL_QUERY_SPEC", + "APPC_CONFIG", + "HEAT_NESTED", + "HEAT_ARTIFACT", + "VF_MODULES_METADATA", + "LIFECYCLE_OPERATIONS", + "VES_EVENTS", + "PERFORMANCE_COUNTER", + "UCPE_LAYER_2_CONFIGURATION", + "DCAE_TOSCA", + "DCAE_JSON", + "DCAE_POLICY", + "DCAE_DOC", + "DCAE_EVENT", + "DCAE_INVENTORY_TOSCA", + "DCAE_INVENTORY_JSON", + "DCAE_INVENTORY_POLICY", + "DCAE_INVENTORY_DOC", + "DCAE_INVENTORY_BLUEPRINT", + "DCAE_INVENTORY_EVENT", + "AAI_SERVICE_MODEL", + "AAI_VF_MODEL", + "AAI_VF_MODULE_MODEL", + "AAI_VF_INSTANCE_MODEL", + "SNMP_POLL", + "SNMP_TRAP", + "GUIDE", + "PLAN" +] + , + "headers": { + "Content-Type": "application/json" + } + } +}
\ No newline at end of file diff --git a/src/test/resources/mappings/sdc/sdc_get_healthcheck.json b/src/test/resources/mappings/sdc/sdc_get_healthcheck.json new file mode 100644 index 0000000..787a33a --- /dev/null +++ b/src/test/resources/mappings/sdc/sdc_get_healthcheck.json @@ -0,0 +1,92 @@ +{ + "request": { + "method": "GET", + "url": "/sdc2/rest/healthCheck" + }, + "response": { + "status": 200, + "jsonBody": + { + "sdcVersion": "1.3.6", + "siteMode": "unknown", + "componentsInfo": [ + { + "healthCheckComponent": "BE", + "healthCheckStatus": "UP", + "version": "1.3.6", + "description": "OK" + }, + { + "healthCheckComponent": "TITAN", + "healthCheckStatus": "UP", + "description": "OK" + }, + { + "healthCheckComponent": "ES", + "healthCheckStatus": "UP", + "version": "1.3.6", + "description": "OK" + }, + { + "healthCheckComponent": "DE", + "healthCheckStatus": "UP", + "description": "OK" + }, + { + "healthCheckComponent": "CASSANDRA", + "healthCheckStatus": "UP", + "description": "OK" + }, + { + "healthCheckComponent": "ON_BOARDING", + "healthCheckStatus": "UP", + "version": "1.3.6", + "description": "OK", + "componentsInfo": [ + { + "healthCheckComponent": "ZU", + "healthCheckStatus": "UP", + "description": "OK" + }, + { + "healthCheckComponent": "BE", + "healthCheckStatus": "UP", + "version": "1.3.6", + "description": "OK" + }, + { + "healthCheckComponent": "CAS", + "healthCheckStatus": "UP", + "version": "2.1.17", + "description": "OK" + } + ] + }, + { + "healthCheckComponent": "DCAE", + "healthCheckStatus": "UP", + "version": "1.3.0", + "description": "OK", + "componentsInfo": [ + { + "healthCheckComponent": "BE", + "healthCheckStatus": "UP", + "version": "1.3.0", + "description": "OK" + }, + { + "healthCheckComponent": "TOSCA_LAB", + "healthCheckStatus": "UP", + "version": "1.3.0", + "description": "OK" + } + ] + } + ] + } + , + "headers": { + "Content-Type": "application/json" + } + } +}
\ No newline at end of file diff --git a/src/test/resources/mappings/so_delete_service_instance.json b/src/test/resources/mappings/so/so_delete_service_instance.json index 92a713d..92a713d 100644 --- a/src/test/resources/mappings/so_delete_service_instance.json +++ b/src/test/resources/mappings/so/so_delete_service_instance.json diff --git a/src/test/resources/mappings/so_e2e_delete_service_instance.json b/src/test/resources/mappings/so/so_e2e_delete_service_instance.json index ea7b446..ea7b446 100644 --- a/src/test/resources/mappings/so_e2e_delete_service_instance.json +++ b/src/test/resources/mappings/so/so_e2e_delete_service_instance.json diff --git a/src/test/resources/mappings/so_get_.json b/src/test/resources/mappings/so/so_get_.json index a251e69..a251e69 100644 --- a/src/test/resources/mappings/so_get_.json +++ b/src/test/resources/mappings/so/so_get_.json diff --git a/src/test/resources/mappings/so_get_e2e.json b/src/test/resources/mappings/so/so_get_e2e.json index 530cd84..530cd84 100644 --- a/src/test/resources/mappings/so_get_e2e.json +++ b/src/test/resources/mappings/so/so_get_e2e.json diff --git a/src/test/resources/mappings/so_get_e2e_delete.json b/src/test/resources/mappings/so/so_get_e2e_delete.json index 34247e0..34247e0 100644 --- a/src/test/resources/mappings/so_get_e2e_delete.json +++ b/src/test/resources/mappings/so/so_get_e2e_delete.json diff --git a/src/test/resources/mappings/so/so_get_healthcheck.json b/src/test/resources/mappings/so/so_get_healthcheck.json new file mode 100644 index 0000000..8f2171d --- /dev/null +++ b/src/test/resources/mappings/so/so_get_healthcheck.json @@ -0,0 +1,12 @@ +{ + "request": { + "method": "GET", + "url": "/globalhealthcheck" + }, + "response": { + "status": 200, + "jsonBody": { + "bodyFileName": "so_healthcheck.xml" + } + } +} diff --git a/src/test/resources/mappings/so/so_healthcheck.xml b/src/test/resources/mappings/so/so_healthcheck.xml new file mode 100644 index 0000000..d023c9f --- /dev/null +++ b/src/test/resources/mappings/so/so_healthcheck.xml @@ -0,0 +1,23 @@ +<!-- + Copyright (c) 2019 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 + + 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. +--> +<!DOCTYPE html> +<html> + <head> + <meta charset="ISO-8859-1"> + <title>Health Check</title> + </head> + <body>Application ready</body> +</html>
\ No newline at end of file diff --git a/src/test/resources/mappings/so_post_create_service_instance.json b/src/test/resources/mappings/so/so_post_create_service_instance.json index 8d319f6..8d319f6 100644 --- a/src/test/resources/mappings/so_post_create_service_instance.json +++ b/src/test/resources/mappings/so/so_post_create_service_instance.json diff --git a/src/test/resources/mappings/so_post_e2e_create_service_instance.json b/src/test/resources/mappings/so/so_post_e2e_create_service_instance.json index a357bef..a357bef 100644 --- a/src/test/resources/mappings/so_post_e2e_create_service_instance.json +++ b/src/test/resources/mappings/so/so_post_e2e_create_service_instance.json |