1 package org.onap.sdnc.apps.ms.gra.controllers;
3 import com.fasterxml.jackson.annotation.JsonInclude;
4 import com.fasterxml.jackson.core.JsonProcessingException;
5 import com.fasterxml.jackson.databind.ObjectMapper;
6 import org.onap.sdnc.apps.ms.gra.data.*;
7 import org.onap.sdnc.apps.ms.gra.swagger.OperationalApi;
8 import org.onap.sdnc.apps.ms.gra.swagger.model.*;
9 import org.slf4j.Logger;
10 import org.slf4j.LoggerFactory;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.boot.autoconfigure.domain.EntityScan;
13 import org.springframework.context.annotation.ComponentScan;
14 import org.springframework.http.HttpStatus;
15 import org.springframework.http.ResponseEntity;
16 import org.springframework.stereotype.Controller;
18 import javax.servlet.http.HttpServletRequest;
19 import javax.validation.Valid;
20 import java.util.Iterator;
21 import java.util.List;
22 import java.util.Optional;
23 import java.util.concurrent.atomic.AtomicBoolean;
26 @ComponentScan(basePackages = {"org.onap.sdnc.apps.ms.gra.*"})
27 @EntityScan("org.onap.sdnc.apps.ms.gra.springboot.*")
28 public class OperationalApiController implements OperationalApi {
29 private static final Logger log = LoggerFactory.getLogger(ConfigApiController.class);
31 private final ObjectMapper objectMapper;
33 private final HttpServletRequest request;
36 private OperationalPreloadDataRepository operationalPreloadDataRepository;
39 private OperationalServicesRepository operationalServicesRepository;
42 public OperationalApiController(ObjectMapper objectMapper, HttpServletRequest request) {
43 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);
44 objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
45 this.objectMapper = objectMapper;
46 this.request = request;
50 public Optional<ObjectMapper> getObjectMapper() {
51 return Optional.ofNullable(objectMapper);
55 public Optional<HttpServletRequest> getRequest() {
56 return Optional.ofNullable(request);
61 public ResponseEntity<GenericResourceApiPreloadModelInformation> operationalGENERICRESOURCEAPIpreloadInformationGet() {
62 GenericResourceApiPreloadModelInformation genericResourceApiPreloadModelInformation = new GenericResourceApiPreloadModelInformation();
64 operationalPreloadDataRepository.findAll().forEach(configPreloadData -> {
65 GenericResourceApiPreloadmodelinformationPreloadList preloadListItem = new GenericResourceApiPreloadmodelinformationPreloadList();
67 preloadListItem.setPreloadId(configPreloadData.getPreloadId());
68 preloadListItem.setPreloadType(configPreloadData.getPreloadType());
70 preloadListItem.setPreloadData(objectMapper.readValue(configPreloadData.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class));
71 } catch (JsonProcessingException e) {
72 log.error("Could not convert preload data", e);
74 genericResourceApiPreloadModelInformation.addPreloadListItem(preloadListItem);
78 return new ResponseEntity<>(genericResourceApiPreloadModelInformation, HttpStatus.OK);
83 public ResponseEntity<GenericResourceApiPreloadmodelinformationPreloadList> operationalGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypeGet(String preloadId, String preloadType) {
84 List<OperationalPreloadData> preloadData = operationalPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId, preloadType);
85 if (preloadData != null) {
86 if (!preloadData.isEmpty()) {
87 OperationalPreloadData preloadDataItem = preloadData.get(0);
88 GenericResourceApiPreloadmodelinformationPreloadList preloadDataList = new GenericResourceApiPreloadmodelinformationPreloadList();
89 preloadDataList.setPreloadId(preloadDataItem.getPreloadId());
90 preloadDataList.setPreloadType(preloadDataItem.getPreloadType());
92 preloadDataList.setPreloadData(objectMapper.readValue(preloadDataItem.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class));
93 } catch (JsonProcessingException e) {
94 log.error("Cannot convert preload data", e);
96 return new ResponseEntity<>(preloadDataList, HttpStatus.OK);
99 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
104 public ResponseEntity<GenericResourceApiPreloaddataPreloadData> operationalGENERICRESOURCEAPIpreloadInformationPreloadListPreloadIdPreloadTypePreloadDataGet(String preloadId, String preloadType) {
105 List<OperationalPreloadData> preloadData = operationalPreloadDataRepository.findByPreloadIdAndPreloadType(preloadId, preloadType);
106 if (preloadData != null) {
107 if (!preloadData.isEmpty()) {
108 OperationalPreloadData preloadDataItem = preloadData.get(0);
110 return new ResponseEntity<>(objectMapper.readValue(preloadDataItem.getPreloadData(), GenericResourceApiPreloaddataPreloadData.class), HttpStatus.OK);
111 } catch (JsonProcessingException e) {
112 log.error("Cannot convert preload data", e);
116 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
121 public ResponseEntity<GenericResourceApiServiceModelInfrastructure> operationalGENERICRESOURCEAPIservicesGet() {
122 GenericResourceApiServiceModelInfrastructure modelInfrastructure = new GenericResourceApiServiceModelInfrastructure();
124 AtomicBoolean caughtError = new AtomicBoolean(false);
125 operationalServicesRepository.findAll().forEach(service ->
127 GenericResourceApiServicemodelinfrastructureService serviceItem = new GenericResourceApiServicemodelinfrastructureService();
128 serviceItem.setServiceInstanceId(service.getSvcInstanceId());
130 serviceItem.setServiceData(objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class));
131 } catch (JsonProcessingException e) {
132 log.error("Could not deserialize service data for {}", service.getSvcInstanceId(), e);
133 caughtError.set(true);
135 serviceItem.setServiceStatus(service.getServiceStatus());
136 modelInfrastructure.addServiceItem(serviceItem);
139 if (caughtError.get()) {
140 return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
142 return new ResponseEntity<>(modelInfrastructure, HttpStatus.OK);
149 public ResponseEntity<GenericResourceApiServicemodelinfrastructureService> operationalGENERICRESOURCEAPIservicesServiceServiceInstanceIdGet(String serviceInstanceId) {
150 GenericResourceApiServicemodelinfrastructureService retval = null;
152 List<OperationalServices> services = operationalServicesRepository.findBySvcInstanceId(serviceInstanceId);
154 if (services.isEmpty()) {
155 return new ResponseEntity<> (HttpStatus.NOT_FOUND);
157 OperationalServices service = services.get(0);
158 retval = new GenericResourceApiServicemodelinfrastructureService();
159 retval.setServiceInstanceId(serviceInstanceId);
160 retval.setServiceStatus(service.getServiceStatus());
162 retval.setServiceData(objectMapper.readValue(service.getSvcData(), GenericResourceApiServicedataServiceData.class));
163 } catch (JsonProcessingException e) {
164 log.error("Could not deserialize service data for service instance id {}", serviceInstanceId, e);
169 if (retval == null) {
170 return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
172 return new ResponseEntity<>(retval, HttpStatus.OK);
178 public ResponseEntity<GenericResourceApiServicedataServiceData> operationalGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceDataGet(String serviceInstanceId) {
179 GenericResourceApiServicedataServiceData serviceData = null;
181 List<OperationalServices> services = operationalServicesRepository.findBySvcInstanceId(serviceInstanceId);
182 if (services.isEmpty()) {
183 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
186 serviceData = objectMapper.readValue(services.get(0).getSvcData(), GenericResourceApiServicedataServiceData.class);
187 return new ResponseEntity<>(serviceData, HttpStatus.OK);
188 } catch (JsonProcessingException e) {
189 log.error("Could not parse service data", e);
190 return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
196 public ResponseEntity<GenericResourceApiServicestatusServiceStatus> operationalGENERICRESOURCEAPIservicesServiceServiceInstanceIdServiceStatusGet(String serviceInstanceId) {
197 GenericResourceApiServicestatusServiceStatus serviceStatus = null;
198 List<OperationalServices> services = operationalServicesRepository.findBySvcInstanceId(serviceInstanceId);
200 if (!services.isEmpty()) {
201 OperationalServices service = services.get(0);
202 serviceStatus = service.getServiceStatus();
205 if (serviceStatus == null) {
206 return new ResponseEntity<>(HttpStatus.NOT_FOUND);
208 return new ResponseEntity<>(serviceStatus, HttpStatus.OK);