diff options
author | Grzegorz Wielgosinski <g.wielgosins@samsung.com> | 2021-08-13 16:37:15 +0200 |
---|---|---|
committer | Grzegorz Wielgosinski <g.wielgosins@samsung.com> | 2021-08-23 14:27:47 +0200 |
commit | f38fe1e195c4fc56646050a206724ea3c5c5aff6 (patch) | |
tree | a42f05e7b5f2707c253988a9d6a234339d0ac807 /so-cnf-adapter-application/src | |
parent | 9a5b5a0edf34e8311e6a67e6d9056e41180920e0 (diff) |
Expose CNF simple status check api
Issue-ID: SO-3690
Signed-off-by: Grzegorz Wielgosinski <g.wielgosins@samsung.com>
Change-Id: I63b7d7cb84898873cef38add59ebd812eafa41e4
Diffstat (limited to 'so-cnf-adapter-application/src')
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; + } + +} |