8d2553a9e3db5f7e6740ebe7d279a1954a8b81a6
[ccsdk/sli.git] /
1 package org.onap.ccsdk.sli.core.sliapi.springboot;
2
3 import java.io.FileInputStream;
4 import java.io.IOException;
5 import java.util.Optional;
6 import java.util.Properties;
7
8 import javax.servlet.http.HttpServletRequest;
9
10 import org.onap.ccsdk.sli.core.sli.ConfigurationException;
11 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
12 import org.onap.ccsdk.sli.core.sli.SvcLogicLoader;
13 import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
14 import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
15 import org.onap.ccsdk.sli.core.sli.provider.base.HashMapResolver;
16 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicPropertiesProvider;
17 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicResolver;
18 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceBase;
19 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceImplBase;
20 import org.onap.ccsdk.sli.core.sliapi.model.ResponseFields;
21 import org.slf4j.Logger;
22 import org.slf4j.LoggerFactory;
23 import org.springframework.http.HttpStatus;
24 import org.springframework.http.ResponseEntity;
25 import org.springframework.stereotype.Controller;
26
27 import com.fasterxml.jackson.databind.ObjectMapper;
28
29 @javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2020-02-20T12:50:11.207-05:00")
30
31 @Controller
32 public class RestconfApiController implements RestconfApi {
33
34         private final ObjectMapper objectMapper;
35         private final HttpServletRequest request;
36         private static SvcLogicServiceBase svc;
37         private static final Logger log = LoggerFactory.getLogger(RestconfApiController.class);
38
39         @org.springframework.beans.factory.annotation.Autowired
40         public RestconfApiController(ObjectMapper objectMapper, HttpServletRequest request) {
41                 this.objectMapper = objectMapper;
42                 this.request = request;
43
44                 SvcLogicPropertiesProvider propProvider = new SvcLogicPropertiesProvider() {
45
46                         @Override
47                         public Properties getProperties() {
48                                 Properties props = new Properties();
49                                 String propPath = "src/main/resources/svclogic.properties";
50                                 System.out.println(propPath);
51                                 try (FileInputStream fileInputStream = new FileInputStream(propPath)) {
52                                         props = new Properties();
53                                         props.load(fileInputStream);
54                                 } catch (final IOException e) {
55                                         log.error("Failed to load properties for file: {}", propPath,
56                                                         new ConfigurationException("Failed to load properties for file: " + propPath, e));
57                                 }
58                                 return props;
59                         }
60                 };
61
62                 SvcLogicStore store = null;
63                 try {
64                         store = SvcLogicStoreFactory.getSvcLogicStore(propProvider.getProperties());
65                 } catch (SvcLogicException e) {
66                         log.error("Cannot create SvcLogicStore", e);
67                         return;
68                 }
69
70                 String serviceLogicDirectory = System.getProperty("serviceLogicDirectory");
71                 System.out.println("serviceLogicDirectory is " + serviceLogicDirectory);
72                 SvcLogicLoader loader = new SvcLogicLoader(serviceLogicDirectory, store);
73
74                 try {
75                         loader.loadAndActivate();
76                 } catch (IOException e) {
77                         log.error("Cannot load directed graphs", e);
78                 }
79                 SvcLogicResolver resolver = new HashMapResolver();
80
81                 svc = new SvcLogicServiceImplBase(store, resolver);
82
83         }
84
85         @Override
86         public ResponseEntity<ResponseFields> healthcheck() {
87                 ResponseFields resp = new ResponseFields();
88
89                 try {
90                         log.info("Calling SLI-API:healthcheck DG");
91                         Properties inputProps = new Properties();
92                         Properties respProps = svc.execute("sli", "healthcheck", null, "sync", inputProps);
93                         if (respProps == null) {
94                                 log.info("DG execution returned no properties!");
95                         } else {
96                                 log.info("DG execution returned properties");
97                                 for (String key : respProps.stringPropertyNames()) {
98                                         log.info("DG returned property " + key + " = " + respProps.getProperty(key));
99                                 }
100                         }
101                         resp.setAckFinalIndicator(respProps.getProperty("ack-final-indicator", "Y"));
102                         resp.setResponseCode(respProps.getProperty("error-code", "200"));
103                         resp.setResponseMessage(respProps.getProperty("error-message", "Success"));
104
105                         return (new ResponseEntity<>(resp, HttpStatus.OK));
106                 } catch (Exception e) {
107                         resp.setAckFinalIndicator("true");
108                         resp.setResponseCode("500");
109                         resp.setResponseMessage(e.getMessage());
110                         log.error("Error calling healthcheck directed graph", e);
111
112                 }
113                 return (new ResponseEntity<>(resp, HttpStatus.INTERNAL_SERVER_ERROR));
114         }
115
116         @Override
117         public Optional<ObjectMapper> getObjectMapper() {
118                 return Optional.ofNullable(objectMapper);
119         }
120
121         @Override
122         public Optional<HttpServletRequest> getRequest() {
123                 return Optional.ofNullable(request);
124         }
125
126 }