Allow storing db.user and db.pass in environment variables 91/101091/7
authorDominik Mizyn <d.mizyn@samsung.com>
Fri, 31 Jan 2020 14:45:21 +0000 (15:45 +0100)
committerDominik Mizyn <d.mizyn@samsung.com>
Tue, 4 Feb 2020 13:25:02 +0000 (14:25 +0100)
This patch allows to store and get db.user and db.pass from
environment variables. This is needed if we want to send those
variables by helm secrets.

Issue-ID: OOM-2287
Signed-off-by: Dominik Mizyn <d.mizyn@samsung.com>
Change-Id: Ie1736dd4bd89710b441f5cc96dd116bd433ad1b6

datarouter-prov/src/main/java/org/onap/dmaap/datarouter/provisioning/utils/ProvDbUtils.java

index 34f05f4..b654bf3 100644 (file)
@@ -66,14 +66,22 @@ public class ProvDbUtils {
         Class.forName((String) props.get("org.onap.dmaap.datarouter.db.driver"));
         BasicDataSource dataSource = new BasicDataSource();
         dataSource.setUrl((String) props.get("org.onap.dmaap.datarouter.db.url"));
-        dataSource.setUsername((String) props.get("org.onap.dmaap.datarouter.db.login"));
-        dataSource.setPassword((String) props.get("org.onap.dmaap.datarouter.db.password"));
+        dataSource.setUsername(getValue(props, "org.onap.dmaap.datarouter.db.login"));
+        dataSource.setPassword(getValue(props, "org.onap.dmaap.datarouter.db.password"));
         dataSource.setMinIdle(5);
         dataSource.setMaxIdle(15);
         dataSource.setMaxOpenPreparedStatements(100);
         return dataSource;
     }
 
+    private static String getValue(final Properties props, final String value) {
+        String prop = (String) props.get(value);
+        if (prop != null && prop.matches("[$][{].*[}]$")) {
+            return System.getenv(prop.substring(2, prop.length() - 1));
+        }
+        return prop;
+    }
+
     public Connection getConnection() throws SQLException {
         return dataSource.getConnection();
     }
@@ -130,7 +138,7 @@ public class ProvDbUtils {
      * sql_init_NN.sql
      *
      * @param connection a DB connection
-     * @param scriptId the number of the sql_init_NN.sql script to run
+     * @param scriptId   the number of the sql_init_NN.sql script to run
      */
     private void runInitScript(Connection connection, int scriptId) {
         String scriptDir = ProvRunner.getProvProperties().getProperty("org.onap.dmaap.datarouter.provserver.dbscripts");
@@ -165,4 +173,4 @@ public class ProvDbUtils {
             statement.execute(sql);
         }
     }
-}
\ No newline at end of file
+}