1 package org.onap.ccsdk.sli.core.sliapi.springboot;
 
   3 import java.io.FileInputStream;
 
   4 import java.io.IOException;
 
   5 import java.util.Optional;
 
   6 import java.util.Properties;
 
   8 import javax.servlet.http.HttpServletRequest;
 
  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;
 
  27 import com.fasterxml.jackson.databind.ObjectMapper;
 
  29 @javax.annotation.Generated(value = "io.swagger.codegen.languages.SpringCodegen", date = "2020-02-20T12:50:11.207-05:00")
 
  32 public class RestconfApiController implements RestconfApi {
 
  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);
 
  39         @org.springframework.beans.factory.annotation.Autowired
 
  40         public RestconfApiController(ObjectMapper objectMapper, HttpServletRequest request) {
 
  41                 this.objectMapper = objectMapper;
 
  42                 this.request = request;
 
  44                 SvcLogicPropertiesProvider propProvider = new SvcLogicPropertiesProvider() {
 
  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));
 
  62                 SvcLogicStore store = null;
 
  64                         store = SvcLogicStoreFactory.getSvcLogicStore(propProvider.getProperties());
 
  65                 } catch (SvcLogicException e) {
 
  66                         log.error("Cannot create SvcLogicStore", e);
 
  70                 String serviceLogicDirectory = System.getProperty("serviceLogicDirectory");
 
  71                 System.out.println("serviceLogicDirectory is " + serviceLogicDirectory);
 
  72                 SvcLogicLoader loader = new SvcLogicLoader(serviceLogicDirectory, store);
 
  75                         loader.loadAndActivate();
 
  76                 } catch (IOException e) {
 
  77                         log.error("Cannot load directed graphs", e);
 
  79                 SvcLogicResolver resolver = new HashMapResolver();
 
  81                 svc = new SvcLogicServiceImplBase(store, resolver);
 
  86         public ResponseEntity<ResponseFields> healthcheck() {
 
  87                 ResponseFields resp = new ResponseFields();
 
  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!");
 
  96                                 log.info("DG execution returned properties");
 
  97                                 for (String key : respProps.stringPropertyNames()) {
 
  98                                         log.info("DG returned property " + key + " = " + respProps.getProperty(key));
 
 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"));
 
 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);
 
 113                 return (new ResponseEntity<>(resp, HttpStatus.INTERNAL_SERVER_ERROR));
 
 117         public Optional<ObjectMapper> getObjectMapper() {
 
 118                 return Optional.ofNullable(objectMapper);
 
 122         public Optional<HttpServletRequest> getRequest() {
 
 123                 return Optional.ofNullable(request);