Support netbox-client outside OSGi container 68/114068/1
authorDan Timoney <dtimoney@att.com>
Tue, 20 Oct 2020 20:26:49 +0000 (16:26 -0400)
committerDan Timoney <dtimoney@att.com>
Tue, 20 Oct 2020 20:26:49 +0000 (16:26 -0400)
Updated netbox-client initialization so that it works properly
when initialized outside an OSGi container (e.g springboot)

Change-Id: I4a6cb477206745eb4ca21f10a7fb54cc616ef4cd
Issue-ID: CCSDK-2923
Signed-off-by: Dan Timoney <dtimoney@att.com>
netbox-client/provider/src/main/java/org/onap/ccsdk/sli/adaptors/netbox/impl/NetboxClientImpl.java
netbox-client/provider/src/main/java/org/onap/ccsdk/sli/adaptors/netbox/property/NetboxProperties.java

index 4e4761d..bfb5ee5 100644 (file)
@@ -17,16 +17,23 @@ package org.onap.ccsdk.sli.adaptors.netbox.impl;
 
 import com.google.common.collect.Lists;
 import com.google.gson.JsonSyntaxException;
+
+import java.io.File;
+import java.io.FileInputStream;
 import java.io.IOException;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.Map;
+import java.util.Properties;
+
 import javax.sql.rowset.CachedRowSet;
 import org.apache.http.HttpResponse;
 import org.apache.http.util.EntityUtils;
 import org.onap.ccsdk.sli.adaptors.netbox.api.NetboxClient;
 import org.onap.ccsdk.sli.adaptors.netbox.model.IPAddress;
 import org.onap.ccsdk.sli.adaptors.netbox.model.IPStatus;
+import org.onap.ccsdk.sli.adaptors.netbox.property.NetboxProperties;
+import org.onap.ccsdk.sli.core.dblib.DBResourceManager;
 import org.onap.ccsdk.sli.core.dblib.DbLibService;
 import org.onap.ccsdk.sli.core.sli.SvcLogicContext;
 import org.onap.ccsdk.sli.core.sli.SvcLogicException;
@@ -73,9 +80,56 @@ public class NetboxClientImpl implements NetboxClient {
     private final NetboxHttpClient client;
     private final DbLibService dbLibService;
 
+    public NetboxClientImpl() {
+        this(null, null);
+    }
+
     public NetboxClientImpl(final NetboxHttpClient client, final DbLibService dbLibService) {
-        this.client = client;
-        this.dbLibService = dbLibService;
+        if (client == null) {
+            this.client = new NetboxHttpClient(new NetboxProperties());
+        } else {
+            this.client = client;
+        }
+
+        if (dbLibService == null) {
+            Properties dblibProps = System.getProperties();
+
+            String cfgDir = dblibProps.getProperty("sdnc.config.dir", System.getenv("SDNC_CONFIG_DIR"));
+    
+            if ((cfgDir == null) || (cfgDir.length() == 0)) {
+                cfgDir = "/opt/sdnc/data/properties";
+            }
+    
+            File dblibPropFile = new File(cfgDir + "/dblib.properties");
+            if (dblibPropFile.exists()) {
+                try {
+                    LOG.debug("Loading dblib properties from {}", dblibPropFile.getAbsolutePath());
+                    dblibProps = new Properties();
+                    dblibProps.load(new FileInputStream(dblibPropFile));
+                } catch (Exception e) {
+                    LOG.warn("Could not load properties file {}", dblibPropFile.getAbsolutePath(), e);
+    
+                    dblibProps = System.getProperties();
+                }
+            }
+            
+            DbLibService dbSvc = null;
+            try {
+                dbSvc  = new DBResourceManager(dblibProps);
+            } catch (Exception e) {
+                LOG.error("Caught exception trying to create dblib service", e);
+            }
+    
+            try {
+                dbSvc  = new DBResourceManager(dblibProps);
+            } catch (Exception e) {
+                LOG.error("Caught exception trying to create dblib service", e);
+            }
+            this.dbLibService = dbSvc;
+    
+        } else {
+            this.dbLibService = dbLibService;
+        }
     }
 
     @Override
index 2eecf6e..065b075 100644 (file)
@@ -60,15 +60,15 @@ public class NetboxProperties {
             properties.load(in);
             LOG.info("Loaded {} properties from file {}", properties.size(), ccsdkConfigDir);
         } catch (Exception e) {
-            // Try to load config from jar
-            final Bundle bundle = FrameworkUtil.getBundle(NetboxProperties.class);
-            final BundleContext ctx = bundle.getBundleContext();
-            final URL url = ctx.getBundle().getResource(NETBOX_PROPERTY_FILE_NAME);
-
-            try (InputStream inputStream = url.openStream()) {
+            try {
+                // Try to load config from jar
+                final Bundle bundle = FrameworkUtil.getBundle(NetboxProperties.class);
+                final BundleContext ctx = bundle.getBundleContext();
+                final URL url = ctx.getBundle().getResource(NETBOX_PROPERTY_FILE_NAME);
+                InputStream inputStream = url.openStream();
                 properties.load(inputStream);
                 LOG.info("Loaded {} properties from file {}", properties.size(), NETBOX_PROPERTY_FILE_NAME);
-            } catch (IOException e1) {
+            } catch (IOException|NoClassDefFoundError e1) {
                 LOG.error("Failed to load properties for file: {} " + NETBOX_PROPERTY_FILE_NAME, e1);
             }
         }