summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGrzegorz Wielgosinski <g.wielgosins@samsung.com>2021-08-13 16:37:15 +0200
committerGrzegorz Wielgosinski <g.wielgosins@samsung.com>2021-08-23 14:27:47 +0200
commitf38fe1e195c4fc56646050a206724ea3c5c5aff6 (patch)
treea42f05e7b5f2707c253988a9d6a234339d0ac807
parent9a5b5a0edf34e8311e6a67e6d9056e41180920e0 (diff)
Expose CNF simple status check api
Issue-ID: SO-3690 Signed-off-by: Grzegorz Wielgosinski <g.wielgosins@samsung.com> Change-Id: I63b7d7cb84898873cef38add59ebd812eafa41e4
-rw-r--r--so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/statuscheck/StatusCheckResponse.java2
-rw-r--r--so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java32
-rw-r--r--so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java6
-rw-r--r--so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/statuscheck/SimpleStatusCheckService.java56
4 files changed, 93 insertions, 3 deletions
diff --git a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/statuscheck/StatusCheckResponse.java b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/statuscheck/StatusCheckResponse.java
index 86f4812..5fdf762 100644
--- a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/statuscheck/StatusCheckResponse.java
+++ b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/model/statuscheck/StatusCheckResponse.java
@@ -13,7 +13,7 @@ public class StatusCheckResponse {
@JsonProperty("result")
private List<StatusCheckInstanceResponse> instanceResponse;
- @JsonProperty("errorMessage")
+ @JsonProperty("error")
private String errorMessage;
public List<StatusCheckInstanceResponse> getInstanceResponse() {
diff --git a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java
index aab138e..5a729dd 100644
--- a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java
+++ b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/rest/CnfAdapterRest.java
@@ -52,6 +52,8 @@ import org.onap.so.adapters.cnf.model.Tag;
import org.onap.so.adapters.cnf.model.healthcheck.HealthCheckResponse;
import org.onap.so.adapters.cnf.model.statuscheck.StatusCheckResponse;
import org.onap.so.adapters.cnf.service.CnfAdapterService;
+import org.onap.so.adapters.cnf.service.statuscheck.SimpleStatusCheckService;
+import org.onap.so.client.exception.BadResponseException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -75,14 +77,17 @@ public class CnfAdapterRest {
private static final Logger logger = LoggerFactory.getLogger(CnfAdapterRest.class);
private final CloseableHttpClient httpClient = HttpClients.createDefault();
+ private final SimpleStatusCheckService simpleStatusCheckService;
private final CnfAdapterService cnfAdapterService;
private final SoCallbackClient callbackClient;
private final String uri;
@Autowired
- public CnfAdapterRest(CnfAdapterService cnfAdapterService,
+ public CnfAdapterRest(SimpleStatusCheckService simpleStatusCheckService,
+ CnfAdapterService cnfAdapterService,
SoCallbackClient callbackClient,
MulticloudConfiguration multicloudConfiguration) {
+ this.simpleStatusCheckService = simpleStatusCheckService;
this.cnfAdapterService = cnfAdapterService;
this.callbackClient = callbackClient;
this.uri = multicloudConfiguration.getMulticloudUrl();
@@ -114,6 +119,31 @@ public class CnfAdapterRest {
}
@ResponseBody
+ @RequestMapping(value = {"/api/cnf-adapter/v1/statuscheck"}, method = RequestMethod.POST,
+ produces = "application/json")
+ public DeferredResult<ResponseEntity> statusCheck(@RequestBody CheckInstanceRequest statusCheckRequest) {
+ logger.info("statusCheck called.");
+ DeferredResult<ResponseEntity> response = new DeferredResult<>();
+
+ ForkJoinPool.commonPool().submit(() -> {
+ logger.info("Processing healthCheck service");
+ StatusCheckResponse statusCheckResponse = null;
+ try {
+ statusCheckResponse = simpleStatusCheckService.statusCheck(statusCheckRequest);
+ } catch (BadResponseException e) {
+ StatusCheckResponse errorStatusCheck = new StatusCheckResponse();
+ errorStatusCheck.setErrorMessage(e.getMessage());
+ callbackClient.sendPostCallback(statusCheckRequest.getCallbackUrl(), e);
+ return;
+ }
+ callbackClient.sendPostCallback(statusCheckRequest.getCallbackUrl(), statusCheckResponse);
+ });
+
+ response.setResult(ResponseEntity.accepted().build());
+ return response;
+ }
+
+ @ResponseBody
@RequestMapping(value = {"/api/cnf-adapter/v1/instance"}, method = RequestMethod.POST,
produces = "application/json", consumes = "application/json")
public String createInstance(@RequestBody BpmnInstanceRequest bpmnInstanceRequest)
diff --git a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java
index 2008280..a74a9b3 100644
--- a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java
+++ b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/CnfAdapterService.java
@@ -32,6 +32,7 @@ import org.onap.so.adapters.cnf.model.CheckInstanceRequest;
import org.onap.so.adapters.cnf.model.MulticloudInstanceRequest;
import org.onap.so.adapters.cnf.model.healthcheck.HealthCheckResponse;
import org.onap.so.adapters.cnf.service.healthcheck.HealthCheckService;
+import org.onap.so.adapters.cnf.service.statuscheck.SimpleStatusCheckService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -53,15 +54,18 @@ public class CnfAdapterService {
private static final String INSTANCE_CREATE_PATH = "/v1/instance";
private final RestTemplate restTemplate;
- private HealthCheckService healthCheckService;
+ private final HealthCheckService healthCheckService;
+ private final SimpleStatusCheckService simpleStatusCheckService;
private final String uri;
@Autowired
public CnfAdapterService(RestTemplate restTemplate,
HealthCheckService healthCheckService,
+ SimpleStatusCheckService simpleStatusCheckService,
MulticloudConfiguration multicloudConfiguration) {
this.restTemplate = restTemplate;
this.healthCheckService = healthCheckService;
+ this.simpleStatusCheckService = simpleStatusCheckService;
this.uri = multicloudConfiguration.getMulticloudUrl();
}
diff --git a/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/statuscheck/SimpleStatusCheckService.java b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/statuscheck/SimpleStatusCheckService.java
new file mode 100644
index 0000000..510d6b8
--- /dev/null
+++ b/so-cnf-adapter-application/src/main/java/org/onap/so/adapters/cnf/service/statuscheck/SimpleStatusCheckService.java
@@ -0,0 +1,56 @@
+package org.onap.so.adapters.cnf.service.statuscheck;
+
+import org.onap.so.adapters.cnf.client.MulticloudClient;
+import org.onap.so.adapters.cnf.model.CheckInstanceRequest;
+import org.onap.so.adapters.cnf.model.InstanceRequest;
+import org.onap.so.adapters.cnf.model.statuscheck.K8sRbInstanceStatus;
+import org.onap.so.adapters.cnf.model.statuscheck.StatusCheckInstanceResponse;
+import org.onap.so.adapters.cnf.model.statuscheck.StatusCheckResponse;
+import org.onap.so.client.exception.BadResponseException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Service
+public class SimpleStatusCheckService {
+
+ private final Logger log = LoggerFactory.getLogger(SimpleStatusCheckService.class);
+ private final MulticloudClient instanceApi;
+
+ @Autowired
+ public SimpleStatusCheckService(MulticloudClient instanceApi) {
+ this.instanceApi = instanceApi;
+ }
+
+ public StatusCheckResponse statusCheck(CheckInstanceRequest instanceIds) throws BadResponseException {
+ log.info("CnfAdapterService statusCheck called");
+ StatusCheckResponse result = new StatusCheckResponse();
+
+ List<StatusCheckInstanceResponse> simpleStatuses = new ArrayList<>();
+ for (InstanceRequest instanceRequest : instanceIds.getInstances()) {
+ String instanceId = instanceRequest.getInstanceId();
+ StatusCheckInstanceResponse statusCheck = getStatusCheck(instanceId);
+ simpleStatuses.add(statusCheck);
+ }
+
+ result.setInstanceResponse(simpleStatuses);
+ return result;
+ }
+
+ private StatusCheckInstanceResponse getStatusCheck(String instanceId) throws BadResponseException {
+ log.debug("SIMPLE STATUS CHECK - START");
+ K8sRbInstanceStatus instanceStatus = instanceApi.getInstanceStatus(instanceId);
+ boolean isInstanceReady = instanceStatus.isReady();
+ log.info("Get status for instanceId: {}", instanceId);
+ log.info("Instance status: {}", instanceStatus);
+ StatusCheckInstanceResponse result = new StatusCheckInstanceResponse(instanceId, null, isInstanceReady);
+ log.debug("SIMPLE STATUS CHECK - END SUCCESS");
+
+ return result;
+ }
+
+}