Allow storing database password in environment variables 80/101680/1
authorDominik Mizyn <d.mizyn@samsung.com>
Thu, 13 Feb 2020 14:04:53 +0000 (15:04 +0100)
committerDominik Mizyn <d.mizyn@samsung.com>
Thu, 13 Feb 2020 14:07:29 +0000 (15:07 +0100)
This patch allows to store and get database passwor from
environment variables. This is needed if we want to send those
variables by helm secrets.

Issue-ID: OOM-2287
Change-Id: Id9ea8f43dd07c2b0cdeaa6d14a8033336d26923f
Signed-off-by: Dominik Mizyn <d.mizyn@samsung.com>
models-provider/src/main/java/org/onap/policy/models/provider/impl/DatabasePolicyModelsProviderImpl.java

index 08c01b6..50c7390 100644 (file)
@@ -101,7 +101,7 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider {
         daoParameters.setPersistenceUnit(parameters.getPersistenceUnit());
 
         // Decode the password using Base64
-        String decodedPassword = new String(Base64.getDecoder().decode(parameters.getDatabasePassword()));
+        String decodedPassword = new String(Base64.getDecoder().decode(getValue(parameters.getDatabasePassword())));
 
         // @formatter:off
         Properties jdbcProperties = new Properties();
@@ -125,6 +125,13 @@ public class DatabasePolicyModelsProviderImpl implements PolicyModelsProvider {
         }
     }
 
+    private String getValue(final String value) {
+        if (value != null && value.matches("[$][{].*[}]$")) {
+            return System.getenv(value.substring(2, value.length() - 1));
+        }
+        return value;
+    }
+
     @Override
     public void close() throws PfModelException {
         LOGGER.debug("closing the database connection to {} using persistence unit {}", parameters.getDatabaseUrl(),