private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";\r
private static final String CONTRAIL_PROPERTIES = "contrail-adaptor.properties";\r
\r
+ /* \r
+ * In Springboot 2.6, these autowired lists become a circular dependency with the RestconfApiController.\r
+ * For now, comment these out and instead just explicitly add wiring for the sli classes\r
@Autowired\r
List<SvcLogicRecorder> recorders;\r
\r
@Autowired\r
List<SvcLogicResource> svcLogicResources;\r
\r
+ */\r
+\r
+ \r
+\r
\r
@Bean\r
public SvcLogicStore getStore() throws Exception {\r
@Bean\r
public SvcLogicServiceBase createService() throws Exception {\r
HashMapResolver resolver = new HashMapResolver();\r
- for (SvcLogicRecorder recorder : recorders) {\r
- log.info("Registering SvcLogicRecorder {}", recorder.getClass().getName());\r
- resolver.addSvcLogicRecorder(recorder.getClass().getName(), recorder);\r
\r
- }\r
+ /**\r
+ * See comment above re: autowired lists. Need to explicitly register\r
+ * SLI features to avoid circular dependency issue in springboot 2.6\r
+ * \r
+ * for (SvcLogicRecorder recorder : recorders) {\r
+ * log.info("Registering SvcLogicRecorder {}", recorder.getClass().getName());\r
+ * resolver.addSvcLogicRecorder(recorder.getClass().getName(), recorder);\r
+ * \r
+ * }\r
+ * \r
+ * for (SvcLogicJavaPlugin plugin : plugins) {\r
+ * log.info("Registering SvcLogicJavaPlugin {}", plugin.getClass().getName());\r
+ * resolver.addSvcLogicSvcLogicJavaPlugin(plugin.getClass().getName(), plugin);\r
+ * \r
+ * }\r
+ * for (SvcLogicResource svcLogicResource : svcLogicResources) {\r
+ * log.info("Registering SvcLogicResource {}",\r
+ * svcLogicResource.getClass().getName());\r
+ * resolver.addSvcLogicResource(svcLogicResource.getClass().getName(),\r
+ * svcLogicResource);\r
+ * }\r
+ */\r
\r
- for (SvcLogicJavaPlugin plugin : plugins) {\r
- log.info("Registering SvcLogicJavaPlugin {}", plugin.getClass().getName());\r
- resolver.addSvcLogicSvcLogicJavaPlugin(plugin.getClass().getName(), plugin);\r
+ Slf4jRecorder slf4jRecorder = slf4jRecorderNode();\r
\r
- }\r
- for (SvcLogicResource svcLogicResource : svcLogicResources) {\r
- log.info("Registering SvcLogicResource {}", svcLogicResource.getClass().getName());\r
- resolver.addSvcLogicResource(svcLogicResource.getClass().getName(), svcLogicResource);\r
- }\r
+ SliPluginUtils sliPluginUtils = sliPluginUtil();\r
+\r
+ SliStringUtils sliStringUtils = sliStringUtils();\r
+\r
+ AAIService aaiService = aaiService();\r
+\r
+ ConfigResource configResource = configResource();\r
+\r
+ OperationalResource operationalResource = operationalResource();\r
+\r
+ NetboxClient netboxClient = netboxClient();\r
+\r
+ SqlResource sqlResource = sqlResource();\r
+\r
+ RestapiCallNode restapiCallNode = restapiCallNode();\r
+\r
+ PropertiesNode propertiesNode = propertiesNode();\r
+ // Register recorder (there is only one)\r
+ resolver.addSvcLogicRecorder(Slf4jRecorder.class.getName(), new Slf4jRecorder());\r
+\r
+ // Register plugins\r
+ resolver.addSvcLogicSvcLogicJavaPlugin(sliPluginUtils.getClass().getName(), sliPluginUtils);\r
+ resolver.addSvcLogicSvcLogicJavaPlugin(sliStringUtils.getClass().getName(), sliStringUtils);\r
+ resolver.addSvcLogicSvcLogicJavaPlugin(restapiCallNode.getClass().getName(), restapiCallNode);\r
+ resolver.addSvcLogicSvcLogicJavaPlugin(propertiesNode.getClass().getName(), propertiesNode);\r
+ resolver.addSvcLogicSvcLogicJavaPlugin(netboxClient.getClass().getName(), netboxClient);\r
+\r
+ // Register resources\r
+ resolver.addSvcLogicResource(aaiService.getClass().getName(), aaiService);\r
+ resolver.addSvcLogicResource(configResource.getClass().getName(), configResource);\r
+ resolver.addSvcLogicResource(operationalResource.getClass().getName(), operationalResource);\r
+ resolver.addSvcLogicResource(sqlResource.getClass().getName(), sqlResource);\r
\r
return new SvcLogicServiceImplBase(getStore(), resolver);\r
}\r
+ \r
\r
@Bean\r
public Slf4jRecorder slf4jRecorderNode() {\r