RANGER-3206 : Enhance db_setup.py to allow reading env variables set in ranger-admin-env scripts
Signed-off-by: Nitin Galave <ni3galave@apache.org>
diff --git a/security-admin/scripts/db_setup.py b/security-admin/scripts/db_setup.py
index 724a47b..488b708 100644
--- a/security-admin/scripts/db_setup.py
+++ b/security-admin/scripts/db_setup.py
@@ -22,6 +22,7 @@
from os.path import basename
import time
import socket
+import glob
globalDict = {}
os_name = platform.system()
@@ -140,6 +141,22 @@
version = 'DEFAULT_KEYADMIN_UPDATE'
return version
+def set_env_val(command):
+ proc = subprocess.Popen(command, stdout = subprocess.PIPE)
+ for line in proc.stdout:
+ (key, _, value) = line.partition("=")
+ os.environ[key] = value.rstrip()
+ proc.communicate()
+
+def run_env_file(path):
+ for filename in glob.glob(path):
+ log("[I] Env filename : "+filename, "info")
+ if not os.path.exists(filename):
+ log("[I] File dose not exist : "+filename, "info")
+ else:
+ command = shlex.split("env -i /bin/bash -c 'source "+filename+" && env'")
+ set_env_val(command)
+
class BaseDB(object):
def check_connection(self, db_name, db_user, db_password):
@@ -1263,6 +1280,19 @@
xa_sqlObj.is_new_install(xa_db_host, db_user, db_password, db_name)
if str(argv[i]) == "-changepassword":
+ rangerAdminConf="/etc/ranger/admin/conf"
+ if os.path.exists(rangerAdminConf):
+ RANGER_ADMIN_ENV_PATH = rangerAdminConf
+ else:
+ RANGER_ADMIN_ENV_PATH = RANGER_ADMIN_CONF
+ log("[I] RANGER_ADMIN_ENV_PATH : "+RANGER_ADMIN_ENV_PATH,"info")
+ if not os.path.exists(RANGER_ADMIN_ENV_PATH):
+ log("[I] path dose not exist" +RANGER_ADMIN_ENV_PATH,"info")
+ else:
+ env_file_path = RANGER_ADMIN_ENV_PATH + '/' + 'ranger-admin-env*.sh'
+ log("[I] env_file_path : " +env_file_path,"info")
+ run_env_file(env_file_path)
+
if len(argv)>5:
isValidPassWord = False
for j in range(len(argv)):