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