Fix Sdc controller
[clamp.git] / src / main / java / org / onap / clamp / clds / config / spring / CldsSdcControllerConfiguration.java
index cdba29a..46c483f 100644 (file)
@@ -18,7 +18,7 @@
  * limitations under the License.
  * ============LICENSE_END============================================
  * ===================================================================
- * ECOMP is a trademark and service mark of AT&T Intellectual Property.
+ * 
  */
 
 package org.onap.clamp.clds.config.spring;
@@ -32,16 +32,18 @@ import java.util.List;
 import javax.annotation.PostConstruct;
 import javax.annotation.PreDestroy;
 
+import org.onap.clamp.clds.config.ClampProperties;
 import org.onap.clamp.clds.config.sdc.SdcControllersConfiguration;
-import org.onap.clamp.clds.config.sdc.SdcSingleControllerConfiguration;
 import org.onap.clamp.clds.exception.sdc.controller.SdcControllerException;
 import org.onap.clamp.clds.sdc.controller.SdcSingleController;
+import org.onap.clamp.clds.sdc.controller.SdcSingleControllerStatus;
 import org.onap.clamp.clds.sdc.controller.installer.CsarInstaller;
 import org.onap.clamp.clds.sdc.controller.installer.CsarInstallerImpl;
-import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.context.annotation.Profile;
+import org.springframework.scheduling.annotation.Scheduled;
 
 @Configuration
 @Profile("clamp-sdc-controller")
@@ -49,28 +51,48 @@ public class CldsSdcControllerConfiguration {
 
     private static final EELFLogger logger = EELFManager.getInstance().getLogger(CldsSdcControllerConfiguration.class);
     private List<SdcSingleController> sdcControllersList = new ArrayList<>();
+    @Autowired
+    private ClampProperties clampProp;
+    @Autowired
+    protected CsarInstaller csarInstaller;
 
     @PostConstruct
-    public void loadSdcControllers(
-            @Qualifier("sdcControllersConfiguration") SdcControllersConfiguration sdcControllersConfig) {
+    public void loadSdcControllers() {
+        SdcControllersConfiguration sdcControllersConfig = getSdcControllersConfiguration();
         sdcControllersConfig.getAllDefinedControllers().forEach((k, v) -> {
-            SdcSingleController sdcController = getSdcSingleController(v);
+            logger.info("Instantiating controller :" + k);
+            SdcSingleController sdcController = new SdcSingleController(clampProp, csarInstaller, v, true);
             try {
                 sdcController.initSdc();
             } catch (SdcControllerException e) {
-                logger.error("Exception caught during initialization of sdc controller", e);
+                logger.error("Exception caught when starting sdc controller", e);
             }
-            sdcControllersList.add(getSdcSingleController(v));
+            sdcControllersList.add(sdcController);
         });
     }
 
+    @Scheduled(fixedRate = 120000)
+    public void checkAllSdcControllers() {
+        logger.info("Checking that all SDC Controllers defined are up and running");
+        for (SdcSingleController controller : sdcControllersList) {
+            try {
+                if (SdcSingleControllerStatus.STOPPED.equals(controller.getControllerStatus())) {
+                    controller.initSdc();
+                }
+            } catch (SdcControllerException e) {
+                logger.error("Exception caught when rebooting sdc controller", e);
+            }
+        }
+        logger.info("SDC Controllers check completed");
+    }
+
     @PreDestroy
     public void killSdcControllers() {
         sdcControllersList.forEach(e -> {
             try {
                 e.closeSdc();
             } catch (SdcControllerException e1) {
-                logger.error("Exception caught during initialization of sdc controller", e);
+                logger.error("Exception caught when stopping sdc controller", e1);
             }
         });
     }
@@ -80,11 +102,6 @@ public class CldsSdcControllerConfiguration {
         return new CsarInstallerImpl();
     }
 
-    @Bean(name = "sdcSingleController")
-    public SdcSingleController getSdcSingleController(SdcSingleControllerConfiguration sdcControllerConfig) {
-        return new SdcSingleController(sdcControllerConfig, true);
-    }
-
     @Bean(name = "sdcControllersConfiguration")
     public SdcControllersConfiguration getSdcControllersConfiguration() {
         return new SdcControllersConfiguration();