* 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;
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")
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);
}
});
}
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();