2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright (C) 2020 AT&T Intellectual Property. All rights reserved.
\r
6 * ================================================================================
\r
7 * Licensed under the Apache License, Version 2.0 (the "License");
\r
8 * you may not use this file except in compliance with the License.
\r
9 * You may obtain a copy of the License at
\r
11 * http://www.apache.org/licenses/LICENSE-2.0
\r
13 * Unless required by applicable law or agreed to in writing, software
\r
14 * distributed under the License is distributed on an "AS IS" BASIS,
\r
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
16 * See the License for the specific language governing permissions and
\r
17 * limitations under the License.
\r
18 * ============LICENSE_END=========================================================
\r
21 package org.onap.ccsdk.apps.services;
\r
23 import java.io.File;
\r
24 import java.io.FileInputStream;
\r
25 import java.io.FileReader;
\r
26 import java.io.IOException;
\r
27 import java.io.InputStream;
\r
28 import java.util.List;
\r
29 import java.util.Properties;
\r
31 import org.onap.ccsdk.sli.adaptors.aai.AAIService;
\r
32 import org.onap.ccsdk.sli.adaptors.aai.AAIServiceProvider;
\r
33 import org.onap.ccsdk.sli.adaptors.messagerouter.publisher.api.PublisherApi;
\r
34 import org.onap.ccsdk.sli.adaptors.messagerouter.publisher.provider.impl.PublisherApiImpl;
\r
35 import org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient;
\r
36 import org.onap.ccsdk.sli.adaptors.netbox.impl.NetboxClientImpl;
\r
37 import org.onap.ccsdk.sli.adaptors.netbox.impl.NetboxHttpClient;
\r
38 import org.onap.ccsdk.sli.adaptors.netbox.property.NetboxProperties;
\r
39 import org.onap.ccsdk.sli.adaptors.resource.mdsal.ConfigResource;
\r
40 import org.onap.ccsdk.sli.adaptors.resource.mdsal.MdsalResourcePropertiesProviderImpl;
\r
41 import org.onap.ccsdk.sli.adaptors.resource.mdsal.OperationalResource;
\r
42 import org.onap.ccsdk.sli.adaptors.resource.sql.SqlResource;
\r
43 import org.onap.ccsdk.sli.core.dblib.DBLIBResourceProvider;
\r
44 import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
\r
45 import org.onap.ccsdk.sli.core.dblib.DbLibService;
\r
46 import org.onap.ccsdk.sli.core.sli.ConfigurationException;
\r
47 import org.onap.ccsdk.sli.core.sli.SvcLogicAdaptor;
\r
48 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
\r
49 import org.onap.ccsdk.sli.core.sli.SvcLogicJavaPlugin;
\r
50 import org.onap.ccsdk.sli.core.sli.SvcLogicLoader;
\r
51 import org.onap.ccsdk.sli.core.sli.SvcLogicRecorder;
\r
52 import org.onap.ccsdk.sli.core.sli.SvcLogicResource;
\r
53 import org.onap.ccsdk.sli.core.sli.SvcLogicStore;
\r
54 import org.onap.ccsdk.sli.core.sli.SvcLogicStoreFactory;
\r
55 import org.onap.ccsdk.sli.core.sli.provider.base.HashMapResolver;
\r
56 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicPropertiesProvider;
\r
57 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceBase;
\r
58 import org.onap.ccsdk.sli.core.sli.provider.base.SvcLogicServiceImplBase;
\r
59 import org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder;
\r
60 import org.onap.ccsdk.sli.core.slipluginutils.SliPluginUtils;
\r
61 import org.onap.ccsdk.sli.core.slipluginutils.SliStringUtils;
\r
62 import org.onap.ccsdk.sli.core.utils.common.EnvProperties;
\r
63 import org.onap.ccsdk.sli.plugins.prop.PropertiesNode;
\r
64 import org.onap.ccsdk.sli.plugins.restapicall.RestapiCallNode;
\r
65 import org.slf4j.Logger;
\r
66 import org.slf4j.LoggerFactory;
\r
67 import org.springframework.beans.factory.annotation.Autowired;
\r
68 import org.springframework.context.annotation.Bean;
\r
69 import org.springframework.context.annotation.Configuration;
\r
70 import org.springframework.stereotype.Service;
\r
74 public class SvcLogicFactory {
\r
75 private static final Logger log = LoggerFactory.getLogger(SvcLogicFactory.class);
\r
76 private static final String SDNC_CONFIG_DIR = "SDNC_CONFIG_DIR";
\r
77 private static final String CONTRAIL_PROPERTIES = "contrail-adaptor.properties";
\r
80 List<SvcLogicRecorder> recorders;
\r
83 List<SvcLogicJavaPlugin> plugins;
\r
86 List<SvcLogicResource> svcLogicResources;
\r
90 public SvcLogicStore getStore() throws Exception {
\r
91 SvcLogicPropertiesProvider propProvider = new SvcLogicPropertiesProvider() {
\r
94 public Properties getProperties() {
\r
95 Properties props = new Properties();
\r
97 String propPath = System.getProperty("serviceLogicProperties", "");
\r
99 if ("".equals(propPath)) {
\r
100 propPath = System.getenv("SVCLOGIC_PROPERTIES");
\r
103 if ((propPath == null) || propPath.length() == 0) {
\r
104 propPath = "src/main/resources/svclogic.properties";
\r
106 System.out.println(propPath);
\r
107 try (FileInputStream fileInputStream = new FileInputStream(propPath)) {
\r
108 props = new EnvProperties();
\r
109 props.load(fileInputStream);
\r
110 } catch (final IOException e) {
\r
111 log.error("Failed to load properties for file: {}", propPath,
\r
112 new ConfigurationException("Failed to load properties for file: " + propPath, e));
\r
117 SvcLogicStore store = SvcLogicStoreFactory.getSvcLogicStore(propProvider.getProperties());
\r
122 public SvcLogicLoader createLoader() throws Exception {
\r
123 String serviceLogicDirectory = System.getProperty("serviceLogicDirectory");
\r
124 if (serviceLogicDirectory == null) {
\r
125 serviceLogicDirectory = "src/main/resources";
\r
128 System.out.println("serviceLogicDirectory is " + serviceLogicDirectory);
\r
129 SvcLogicLoader loader = new SvcLogicLoader(serviceLogicDirectory, getStore());
\r
132 loader.loadAndActivate();
\r
133 } catch (IOException e) {
\r
134 log.error("Cannot load directed graphs", e);
\r
140 public SvcLogicServiceBase createService() throws Exception {
\r
141 HashMapResolver resolver = new HashMapResolver();
\r
142 for (SvcLogicRecorder recorder : recorders) {
\r
143 log.info("Registering SvcLogicRecorder {}", recorder.getClass().getName());
\r
144 resolver.addSvcLogicRecorder(recorder.getClass().getName(), recorder);
\r
148 for (SvcLogicJavaPlugin plugin : plugins) {
\r
149 log.info("Registering SvcLogicJavaPlugin {}", plugin.getClass().getName());
\r
150 resolver.addSvcLogicSvcLogicJavaPlugin(plugin.getClass().getName(), plugin);
\r
153 for (SvcLogicResource svcLogicResource : svcLogicResources) {
\r
154 log.info("Registering SvcLogicResource {}", svcLogicResource.getClass().getName());
\r
155 resolver.addSvcLogicResource(svcLogicResource.getClass().getName(), svcLogicResource);
\r
158 return new SvcLogicServiceImplBase(getStore(), resolver);
\r
162 public Slf4jRecorder slf4jRecorderNode() {
\r
163 return new Slf4jRecorder();
\r
166 // Beans from sli/core
\r
169 public SliPluginUtils sliPluginUtil() {
\r
170 return new SliPluginUtils();
\r
174 public SliStringUtils sliStringUtils() {
\r
175 return new SliStringUtils();
\r
178 // Beans from sli/adaptors
\r
181 AAIService aaiService() {
\r
182 return new AAIService(new AAIServiceProvider());
\r
186 public ConfigResource configResource() {
\r
187 return new ConfigResource(new MdsalResourcePropertiesProviderImpl());
\r
191 public OperationalResource operationalResource() {
\r
192 return new OperationalResource(new MdsalResourcePropertiesProviderImpl());
\r
196 public PublisherApi publisherApi() {
\r
197 return new PublisherApiImpl();
\r
201 public NetboxClient netboxClient() {
\r
202 return new NetboxClientImpl();
\r
206 public SqlResource sqlResource() {
\r
207 return new SqlResource();
\r
211 public RestapiCallNode restapiCallNode() {
\r
212 return new RestapiCallNode();
\r
216 public PropertiesNode propertiesNode() {
\r
217 return new PropertiesNode();
\r