aboutsummaryrefslogtreecommitdiffstats
path: root/src/main
diff options
context:
space:
mode:
authorromaingimbert <romain.gimbert@orange.com>2019-03-07 09:23:10 +0100
committerromaingimbert <romain.gimbert@orange.com>2019-03-07 16:35:45 +0100
commitd801fdc32a34621aed239f5429c55cda0344eac9 (patch)
tree0b94398131dc3b3b661f1e8e8f482020753abd2e /src/main
parentea0c457917a9c6a2f53c0896a69ca132aa6ca9e8 (diff)
Improve nbi status
-add components to check connectivity with onap (sdc, aai, so, dmaap) -activate full status with ?fullStatus=true -change test -change mock tests folders Change-Id: Iddcd7fce3c1b3b5abfea14c46b2f611f27057319 Issue-ID: EXTAPI-209 Signed-off-by: romaingimbert <romain.gimbert@orange.com>
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java8
-rw-r--r--src/main/java/org/onap/nbi/apis/hub/service/CheckDMaaPEventsManager.java14
-rw-r--r--src/main/java/org/onap/nbi/apis/servicecatalog/SdcClient.java13
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceinventory/AaiClient.java219
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceinventory/BaseClient.java23
-rw-r--r--src/main/java/org/onap/nbi/apis/serviceorder/SoClient.java12
-rw-r--r--src/main/java/org/onap/nbi/apis/status/OnapClient.java81
-rw-r--r--src/main/java/org/onap/nbi/apis/status/StatusResource.java52
-rw-r--r--src/main/java/org/onap/nbi/apis/status/StatusService.java5
-rw-r--r--src/main/java/org/onap/nbi/apis/status/StatusServiceImpl.java12
-rw-r--r--src/main/java/org/onap/nbi/apis/status/model/ApplicationStatus.java4
-rw-r--r--src/main/java/org/onap/nbi/apis/status/model/OnapModuleType.java46
12 files changed, 351 insertions, 138 deletions
diff --git a/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java b/src/main/java/org/onap/nbi/OnapComponentsUrlPaths.java
index 80563d5..428788d 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 = "/sdc/v1/artifactTypes";
+
// 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/v14/business/customers";
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..7cd2287 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);
@@ -158,7 +154,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..419a34a 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 List<LinkedHashMap> callCheckConnectivity() {
+
+ UriComponentsBuilder callURI = UriComponentsBuilder.fromHttpUrl(sdcHealthCheck);
+ ResponseEntity<Object> response = callSdc(callURI.build().encode().toUri());
+ return (List<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/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);
+ }
+
+}