@JsonProperty("result")
private List<StatusCheckInstanceResponse> instanceResponse;
- @JsonProperty("errorMessage")
+ @JsonProperty("error")
private String errorMessage;
public List<StatusCheckInstanceResponse> getInstanceResponse() {
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;
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();
return response;
}
+ @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")
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;
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();
}
--- /dev/null
+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;
+ }
+
+}