Repository: incubator-ranger
Updated Branches:
  refs/heads/ranger-0.6 bf7188031 -> 6d30412d4


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/6d30412d/security-admin/scripts/db_setup.py
----------------------------------------------------------------------
diff --git a/security-admin/scripts/db_setup.py 
b/security-admin/scripts/db_setup.py
index a2b26f5..c1efd4a 100644
--- a/security-admin/scripts/db_setup.py
+++ b/security-admin/scripts/db_setup.py
@@ -27,6 +27,7 @@ from datetime import date
 import time
 import datetime
 from time import gmtime, strftime
+import socket
 globalDict = {}
 
 os_name = platform.system()
@@ -41,6 +42,11 @@ if os_name == "LINUX":
 elif os_name == "WINDOWS":
        RANGER_ADMIN_HOME = os.getenv("RANGER_ADMIN_HOME")
 
+if socket.getfqdn().find('.')>=0:
+       client_host=socket.getfqdn()
+else:
+       client_host=socket.gethostbyaddr(socket.gethostname())[0]
+
 def check_output(query):
        if os_name == "LINUX":
                p = subprocess.Popen(shlex.split(query), stdout=subprocess.PIPE)
@@ -105,11 +111,10 @@ class BaseDB(object):
                log("[I] ---------- Verifying table ----------", "info")
 
        def import_db_file(self, db_name, db_user, db_password, file_name):
-               log("[I] ---------- Importing db schema ----------", "info")
+               log("[I] Importing DB file :"+file_name, "info")
 
-       def upgrade_db(self, db_name, db_user, db_password, 
DBVERSION_CATALOG_CREATION):
-               self.import_db_file(db_name, db_user, db_password, 
DBVERSION_CATALOG_CREATION)
-               log("[I] Baseline DB upgraded successfully", "info")
+       def create_version_history_table(self, db_name, db_user, db_password, 
DBVERSION_CATALOG_CREATION,TABLE_NAME):
+               log("[I] Creating version and patch history info table", "info")
 
        def apply_patches(self, db_name, db_user, db_password, PATCHES_PATH):
                #first get all patches and then apply each patch
@@ -153,6 +158,9 @@ class BaseDB(object):
        def change_admin_default_password(xa_db_host, db_user, db_password, 
db_name,userName,oldPassword,newPassword):
                log("[I] ----------------- Changing Ranger admin default 
password  ------------", "info")
 
+       def import_core_db_schema(self, db_name, db_user, db_password, 
file_name,first_table,last_table):
+               log("[I] ---------- Importing Core DB Schema ----------", 
"info")
+
 class MysqlConf(BaseDB):
        # Constructor
        def __init__(self, host,SQL_CONNECTOR_JAR,JAVA_BIN):
@@ -207,6 +215,7 @@ class MysqlConf(BaseDB):
                                sys.exit(1)
 
        def import_db_file(self, db_name, db_user, db_password, file_name):
+               isImported=False
                name = basename(file_name)
                if os.path.isfile(file_name):
                        log("[I] Importing db schema to database " + db_name + 
" from file: " + name,"info")
@@ -220,13 +229,14 @@ class MysqlConf(BaseDB):
                                jisql_log(query, db_password)
                                ret = subprocess.call(query)
                        if ret == 0:
-                               log("[I] "+name + " DB schema imported 
successfully","info")
+                               log("[I] "+name + " file imported 
successfully","info")
+                               isImported=True
                        else:
-                               log("[E] "+name + " DB schema import 
failed!","error")
-                               sys.exit(1)
+                               log("[E] "+name + " file import 
failed!","error")
                else:
                        log("[E] DB schema file " + name+ " not found","error")
                        sys.exit(1)
+               return isImported
 
        def import_db_patches(self, db_name, db_user, db_password, file_name):
                name = basename(file_name)
@@ -257,11 +267,11 @@ class MysqlConf(BaseDB):
                                                output = check_output(query)
                                else:
                                        if os_name == "LINUX":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), user(), now(), user(),'N') ;\"" 
%(version)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\"" 
%(version,client_host,client_host)
                                                jisql_log(query, db_password)
                                                ret = 
subprocess.call(shlex.split(query))
                                        elif os_name == "WINDOWS":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), user(), now(), user(),'N') ;\" -c ;" 
%(version)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\" -c ;" 
%(version,client_host,client_host)
                                                jisql_log(query, db_password)
                                                ret = subprocess.call(query)
                                        if ret == 0:
@@ -280,25 +290,33 @@ class MysqlConf(BaseDB):
                                        if ret == 0:
                                                log("[I] "+name + " patch 
applied","info")
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\"" %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
                                                        log("[I] Patch version 
updated", "info")
                                                else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
                                                        log("[E] Updating patch 
version failed", "error")
                                                        sys.exit(1)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\"" 
%(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\" -c ;" 
%(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                log("[E] "+name + " import 
failed!","error")
@@ -336,11 +354,11 @@ class MysqlConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), user(), now(), user(),'N') ;\"" 
%(version)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\"" 
%(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), user(), now(), user(),'N') ;\" -c ;" 
%(version)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\" -c ;" 
%(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -360,25 +378,33 @@ class MysqlConf(BaseDB):
                                                if ret == 0:
                                                        log("[I] "+name + " 
patch applied","info")
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\"" %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log("[I] Patch 
version updated", "info")
                                                        else:
+                                                               if os_name == 
"LINUX":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(shlex.split(query))
+                                                               elif os_name == 
"WINDOWS":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(query)
                                                                log("[E] 
Updating patch version failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] "+name + " 
import failed!","error")
@@ -466,11 +492,11 @@ class MysqlConf(BaseDB):
                                                                output = 
check_output(query)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', now(), user(), now(), user(),'N') ;\"" 
%(version)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', now(), '%s', now(), '%s','N') ;\"" 
%(version,client_host,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', now(), user(), now(), user(),'N') ;\" -c ;" 
%(version)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', now(), '%s', now(), '%s','N') ;\" -c ;" 
%(version,client_host,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
@@ -489,33 +515,33 @@ class MysqlConf(BaseDB):
                                                                ret = 
subprocess.call(get_java_cmd)
                                                        if ret == 0:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                if ret == 0:
                                                                        log 
("[I] java patch "+ className +" is applied..","info")
                                                                else:
                                                                        if 
os_name == "LINUX":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\"" %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(shlex.split(query))
                                                                        elif 
os_name == "WINDOWS":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(query)
                                                                        
log("[E] java patch "+ className +" failed", "error")
                                                                        
sys.exit(1)
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] 
applying java patch "+ className +" failed", "error")
@@ -555,11 +581,11 @@ class MysqlConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), user(), now(), user(),'N') ;\"" 
%(version)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\"" 
%(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), user(), now(), user(),'N') ;\" -c ;" 
%(version)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\" -c ;" 
%(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -578,38 +604,154 @@ class MysqlConf(BaseDB):
                                                        ret = 
subprocess.call(get_java_cmd)
                                                if ret == 0:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\"" %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log ("[I] 
Ranger admin default password change request processed successfully..","info")
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] Ranger 
admin default password change request failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\"" 
%(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\" -c 
;" %(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] Ranger admin 
default password change request failed", "error")
                                                        sys.exit(1)
 
+       def create_version_history_table(self, db_name, db_user, db_password, 
file_name,table_name):
+               name = basename(file_name)
+               if os.path.isfile(file_name):
+                       isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+                       if isTableExist==False:
+                               log("[I] Importing "+table_name+" table schema 
to database " + db_name + " from file: " + name,"info")
+                       while(isTableExist==False):
+                               get_cmd = self.get_jisql_cmd(db_user, 
db_password, db_name)
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -input %s" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = 
subprocess.call(shlex.split(query))
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -input %s -c ;" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = subprocess.call(query)
+                               if ret == 0:
+                                       log("[I] "+name + " file imported 
successfully","info")
+                               else:
+                                       log("[E] "+name + " file import 
failed!","error")
+                                       time.sleep(30)
+                               isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+               else:
+                       log("[E] Table schema file " + name+ " not 
found","error")
+                       sys.exit(1)
+
+       def import_core_db_schema(self, db_name, db_user, db_password, 
file_name,first_table,last_table):
+               version = 'CORE_DB_SCHEMA'
+               if os.path.isfile(file_name):
+                       get_cmd = self.get_jisql_cmd(db_user, db_password, 
db_name)
+                       if os_name == "LINUX":
+                               query = get_cmd + " -query \"select version 
from x_db_version_h where version = '%s' and active = 'Y';\"" %(version)
+                       elif os_name == "WINDOWS":
+                               query = get_cmd + " -query \"select version 
from x_db_version_h where version = '%s' and active = 'Y';\" -c ;" %(version)
+                       jisql_log(query, db_password)
+                       output = check_output(query)
+                       if output.strip(version + " |"):
+                               log("[I] "+version+" is already imported" 
,"info")
+                       else:
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -query \"select 
version from x_db_version_h where version = '%s' and active = 'N';\"" %(version)
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -query \"select 
version from x_db_version_h where version = '%s' and active = 'N';\" -c ;" 
%(version)
+                               jisql_log(query, db_password)
+                               output = check_output(query)
+                               if output.strip(version + " |"):
+                                       while(output.strip(version + " |")):
+                                               log("[I] "+ version  +" is 
being imported by some other process" ,"info")
+                                               time.sleep(300)
+                                               jisql_log(query, db_password)
+                                               output = check_output(query)
+                               else:
+                                       if os_name == "LINUX":
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\"" 
%(version,client_host,client_host)
+                                               jisql_log(query, db_password)
+                                               ret = 
subprocess.call(shlex.split(query))
+                                       elif os_name == "WINDOWS":
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\" -c ;" 
%(version,client_host,client_host)
+                                               jisql_log(query, db_password)
+                                               ret = subprocess.call(query)
+                                       if ret != 0:
+                                               log("[E] "+ version +" import 
failed", "error")
+                                               sys.exit(1)
+                                       isFirstTableExist = 
self.check_table(db_name, db_user, db_password, first_table)
+                                       isLastTableExist = 
self.check_table(db_name, db_user, db_password, last_table)
+                                       isSchemaCreated=False
+                                       if isFirstTableExist == True and 
isLastTableExist == True :
+                                               isSchemaCreated=True
+                                       elif isFirstTableExist == True and 
isLastTableExist == False :
+                                               while(isLastTableExist==False):
+                                                       log("[I] "+ version  +" 
is being imported by some other process" ,"info")
+                                                       time.sleep(300)
+                                                       
isLastTableExist=self.check_table(db_name, db_user, db_password, last_table)
+                                                       
if(isLastTableExist==True):
+                                                               
isSchemaCreated=True
+                                       elif isFirstTableExist == False and 
isLastTableExist == False :
+                                               
isImported=self.import_db_file(db_name, db_user, db_password, file_name)
+                                               if(isImported==False):
+                                                       log("[I] "+ version  +" 
might being imported by some other process" ,"info")
+                                                       time.sleep(300)
+                                               
isLastTableExist=self.check_table(db_name, db_user, db_password, last_table)
+                                               if(isLastTableExist==True):
+                                                       isSchemaCreated=True
+                                       if isSchemaCreated == True:
+                                               if os_name == "LINUX":
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(shlex.split(query))
+                                               elif os_name == "WINDOWS":
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(query)
+                                               if ret == 0:
+                                                       log("[I] "+version +" 
import status has been updated", "info")
+                                               else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
+                                                       log("[E] Updating 
"+version +" import status failed", "error")
+                                                       sys.exit(1)
+                                       else:
+                                               if os_name == "LINUX":
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(shlex.split(query))
+                                               elif os_name == "WINDOWS":
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(query)
+                                               log("[E] "+version + " import 
failed!","error")
+                                               sys.exit(1)
 
 class OracleConf(BaseDB):
        # Constructor
@@ -679,6 +821,7 @@ class OracleConf(BaseDB):
                        sys.exit(1)
 
        def import_db_file(self, db_name, db_user, db_password, file_name):
+               isImported=False
                name = basename(file_name)
                if os.path.isfile(file_name):
                        log("[I] Importing script " + db_name + " from file: " 
+ name,"info")
@@ -693,9 +836,13 @@ class OracleConf(BaseDB):
                                ret = subprocess.call(query)
                        if ret == 0:
                                log("[I] "+name + " imported 
successfully","info")
+                               isImported=True
                        else:
                                log("[E] "+name + " import failed!","error")
-                               sys.exit(1)
+               else:
+                       log("[E] DB schema file " + name+ " not found","error")
+                       sys.exit(1)
+               return isImported
 
        def create_synonym(self,db_name, db_user, db_password,audit_db_user):
                log("[I] ----------------- Creating Synonym ------------", 
"info")
@@ -750,11 +897,11 @@ class OracleConf(BaseDB):
                                                output = check_output(query)
                                else:
                                        if os_name == "LINUX":
-                                               query = get_cmd + " -c \; 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\"" %(version, db_user, db_user)
+                                               query = get_cmd + " -c \; 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\"" %(version, client_host, client_host)
                                                jisql_log(query, db_password)
                                                ret = 
subprocess.call(shlex.split(query))
                                        elif os_name == "WINDOWS":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\" -c ;" %(version, db_user, db_user)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\" -c ;" %(version, client_host, client_host)
                                                jisql_log(query, db_password)
                                                ret = subprocess.call(query)
                                        if ret == 0:
@@ -772,25 +919,33 @@ class OracleConf(BaseDB):
                                        if ret == 0:
                                                log("[I] "+name + " patch 
applied","info")
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " -c 
\; -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\"" %(version)
+                                                       query = get_cmd + " -c 
\; -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
                                                        log("[I] Patch version 
updated", "info")
                                                else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -c \; -query \"delete from x_db_version_h where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
                                                        log("[E] Updating patch 
version failed", "error")
                                                        sys.exit(1)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " -c 
\; -query \"delete from x_db_version_h where version='%s' and active='N';\"" 
%(version)
+                                                       query = get_cmd + " -c 
\; -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\" -c ;" 
%(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                log("[E] "+name + " Import 
failed!","error")
@@ -828,11 +983,11 @@ class OracleConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd1 + " -c 
\; -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', 
sysdate, '%s', sysdate, '%s','N');\"" %(version, db_user, db_user)
+                                                       query = get_cmd1 + " -c 
\; -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', 
sysdate, '%s', sysdate, '%s','N');\"" %(version, client_host, client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\" -c ;" %(version, db_user, db_user)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\" -c ;" %(version, client_host, client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -851,25 +1006,33 @@ class OracleConf(BaseDB):
                                                if ret == 0:
                                                        log("[I] "+name + " 
patch applied","info")
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -c \; -query \"update x_db_version_h set active='Y' where 
version='%s' and active='N';\"" %(version)
+                                                               query = 
get_cmd1 + " -c \; -query \"update x_db_version_h set active='Y' where 
version='%s' and active='N' and updated_by='%s';\"" %(version, client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\" -c ;" %(version, client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log("[I] Patch 
version updated", "info")
                                                        else:
+                                                               if os_name == 
"LINUX":
+                                                                       query = 
get_cmd1 + " -c \; -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version, client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(shlex.split(query))
+                                                               elif os_name == 
"WINDOWS":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version, client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(query)
                                                                log("[E] 
Updating patch version failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -c \; -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                               query = 
get_cmd1 + " -c \; -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version, client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version, client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] "+name + " 
Import failed!","error")
@@ -976,11 +1139,11 @@ class OracleConf(BaseDB):
                                                                output = 
check_output(query)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -c \; -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by) values ( X_DB_VERSION_H_SEQ.nextval,'J%s', sysdate, 
'%s', sysdate, '%s');\"" %(version, db_user, db_user)
+                                                               query = get_cmd 
+ " -c \; -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'J%s', 
sysdate, '%s', sysdate, '%s','N');\"" %(version, client_host, client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by) values ( X_DB_VERSION_H_SEQ.nextval,'J%s', sysdate, 
'%s', sysdate, '%s');\" -c ;" %(version, db_user, db_user)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'J%s', 
sysdate, '%s', sysdate, '%s','N');\" -c ;" %(version, client_host, client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
@@ -999,33 +1162,33 @@ class OracleConf(BaseDB):
                                                                ret = 
subprocess.call(get_cmd)
                                                        if ret == 0:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -c \; -query \"update x_db_version_h set active='Y' where 
version='J%s' and active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -c \; -query \"update x_db_version_h set active='Y' where 
version='J%s' and active='N' and updated_by='%s';\"" %(version, client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\" -c ;" %(version, client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                if ret == 0:
                                                                        log 
("[I] java patch "+ className +" is applied..","info")
                                                                else:
                                                                        if 
os_name == "LINUX":
-                                                                               
query = get_cmd + " -c \; -query \"delete from x_db_version_h where 
version='J%s' and active='N';\"" %(version)
+                                                                               
query = get_cmd + " -c \; -query \"delete from x_db_version_h where 
version='J%s' and active='N' and updated_by='%s';\"" %(version, client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(shlex.split(query))
                                                                        elif 
os_name == "WINDOWS":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version, client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(query)
                                                                        
log("[E] java patch "+ className +" failed", "error")
                                                                        
sys.exit(1)
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -c \; -query \"delete from x_db_version_h where version='J%s' and 
active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -c \; -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] 
applying java patch "+ className +" failed", "error")
@@ -1065,11 +1228,11 @@ class OracleConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " -c 
\; -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, 
'%s', sysdate, '%s');\"" %(version, db_user, db_user)
+                                                       query = get_cmd + " -c 
\; -query \"insert into x_db_version_h (id,version, inst_at, inst_by, 
updated_at, updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', 
sysdate, '%s', sysdate, '%s','N');\"" %(version, client_host, client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', sysdate, 
'%s');\" -c ;" %(version, db_user, db_user)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\" -c ;" %(version, client_host, client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -1088,38 +1251,155 @@ class OracleConf(BaseDB):
                                                        ret = 
subprocess.call(get_java_cmd)
                                                if ret == 0:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -c \; -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\"" %(version)
+                                                               query = get_cmd 
+ " -c \; -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log ("[I] 
Ranger admin default password change request processed successfully..","info")
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -c \; -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -c \; -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] Ranger 
admin default password change request failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -c \; -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                               query = get_cmd 
+ " -c \; -query \"delete from x_db_version_h where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\" -c 
;" %(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] Ranger admin 
default password change request failed", "error")
                                                        sys.exit(1)
 
+       def create_version_history_table(self, db_name, db_user, db_password, 
file_name,table_name):
+               name = basename(file_name)
+               if os.path.isfile(file_name):
+                       isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+                       if isTableExist==False:
+                               log("[I] Importing "+table_name+" table schema 
from file: " + name,"info")
+                       while(isTableExist==False):
+                               get_cmd = self.get_jisql_cmd(db_user, 
db_password)
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -input %s -c \;" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = 
subprocess.call(shlex.split(query))
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -input %s -c ;" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = subprocess.call(query)
+                               if ret == 0:
+                                       log("[I] "+name + " file imported 
successfully","info")
+                               else:
+                                       log("[E] "+name + " file import 
failed!","error")
+                                       time.sleep(30)
+                               isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+               else:
+                       log("[E] Table schema file " + name+ " not 
found","error")
+                       sys.exit(1)
+
+       def import_core_db_schema(self, db_name, db_user, db_password, 
file_name,first_table,last_table):
+               version = 'CORE_DB_SCHEMA'
+               if os.path.isfile(file_name):
+                       get_cmd = self.get_jisql_cmd(db_user, db_password)
+                       if os_name == "LINUX":
+                               query = get_cmd + " -c \; -query \"select 
version from x_db_version_h where version = '%s' and active = 'Y';\"" %(version)
+                       elif os_name == "WINDOWS":
+                               query = get_cmd + " -query \"select version 
from x_db_version_h where version = '%s' and active = 'Y';\" -c ;" %(version)
+                       jisql_log(query, db_password)
+                       output = check_output(query)
+                       if output.strip(version + " |"):
+                               log("[I] "+version+" is already imported" 
,"info")
+                       else:
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -c \; -query 
\"select version from x_db_version_h where version = '%s' and active = 'N';\"" 
%(version)
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -query \"select 
version from x_db_version_h where version = '%s' and active = 'N';\" -c ;" 
%(version)
+                               jisql_log(query, db_password)
+                               output = check_output(query)
+                               if output.strip(version + " |"):
+                                       while(output.strip(version + " |")):
+                                               log("[I] "+ version  +" is 
being imported by some other process" ,"info")
+                                               time.sleep(300)
+                                               jisql_log(query, db_password)
+                                               output = check_output(query)
+                               else:
+                                       if os_name == "LINUX":
+                                               query = get_cmd + " -c \; 
-query \"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\"" %(version, client_host, client_host)
+                                               jisql_log(query, db_password)
+                                               ret = 
subprocess.call(shlex.split(query))
+                                       elif os_name == "WINDOWS":
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (id,version, inst_at, inst_by, updated_at, 
updated_by,active) values ( X_DB_VERSION_H_SEQ.nextval,'%s', sysdate, '%s', 
sysdate, '%s','N');\" -c ;" %(version, client_host, client_host)
+                                               jisql_log(query, db_password)
+                                               ret = subprocess.call(query)
+                                       if ret != 0:
+                                               log("[E] "+ version +" import 
failed", "error")
+                                               sys.exit(1)
+                                       isFirstTableExist = 
self.check_table(db_name, db_user, db_password, first_table)
+                                       isLastTableExist = 
self.check_table(db_name, db_user, db_password, last_table)
+                                       isSchemaCreated=False
+                                       if isFirstTableExist == True and 
isLastTableExist == True :
+                                               isSchemaCreated=True
+                                       elif isFirstTableExist == True and 
isLastTableExist == False :
+                                               while(isLastTableExist==False):
+                                                       log("[I] "+ version  +" 
is being imported by some other process" ,"info")
+                                                       time.sleep(300)
+                                                       
isLastTableExist=self.check_table(db_name, db_user, db_password, last_table)
+                                                       
if(isLastTableExist==True):
+                                                               
isSchemaCreated=True
+                                       elif isFirstTableExist == False and 
isLastTableExist == False :
+                                               
isImported=self.import_db_file(db_name, db_user, db_password, file_name)
+                                               if(isImported==False):
+                                                       log("[I] "+ version  +" 
might being imported by some other process" ,"info")
+                                                       time.sleep(300)
+                                               
isLastTableExist=self.check_table(db_name, db_user, db_password, last_table)
+                                               if(isLastTableExist==True):
+                                                       isSchemaCreated=True
+                                       if isSchemaCreated == True:
+                                               if os_name == "LINUX":
+                                                       query = get_cmd + " -c 
\; -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(shlex.split(query))
+                                               elif os_name == "WINDOWS":
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(query)
+                                               if ret == 0:
+                                                       log("[I] "+version +" 
import status has been updated", "info")
+                                               else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -c \; -query \"delete from x_db_version_h where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
+                                                       log("[E] Updating 
"+version +" import status failed", "error")
+                                                       sys.exit(1)
+                                       else:
+                                               if os_name == "LINUX":
+                                                       query = get_cmd + " -c 
\; -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(shlex.split(query))
+                                               elif os_name == "WINDOWS":
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(query)
+                                               log("[E] "+version + " import 
failed!","error")
+                                               sys.exit(1)
+
 class PostgresConf(BaseDB):
        # Constructor
        def __init__(self, host, SQL_CONNECTOR_JAR, JAVA_BIN):
@@ -1154,6 +1434,7 @@ class PostgresConf(BaseDB):
                        sys.exit(1)
 
        def import_db_file(self, db_name, db_user, db_password, file_name):
+               isImported=False
                name = basename(file_name)
                if os.path.isfile(file_name):
                        log("[I] Importing db schema to database " + db_name + 
" from file: " + name,"info")
@@ -1168,9 +1449,13 @@ class PostgresConf(BaseDB):
                                ret = subprocess.call(query)
                        if ret == 0:
                                log("[I] "+name + " DB schema imported 
successfully","info")
+                               isImported=True
                        else:
                                log("[E] "+name + " DB schema import 
failed!","error")
-                               sys.exit(1)
+               else:
+                       log("[E] DB schema file " + name+ " not found","error")
+                       sys.exit(1)
+               return isImported
 
        def grant_audit_db_user(self, audit_db_name , db_user, audit_db_user, 
db_password, audit_db_password):
                log("[I] Granting permission to " + audit_db_user, "info")
@@ -1254,11 +1539,11 @@ class PostgresConf(BaseDB):
                                                output = check_output(query)
                                else:
                                        if os_name == "LINUX":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,db_user,db_user)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,client_host,client_host)
                                                jisql_log(query, db_password)
                                                ret = 
subprocess.call(shlex.split(query))
                                        elif os_name == "WINDOWS":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,db_user,db_user)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,client_host,client_host)
                                                jisql_log(query, db_password)
                                                ret = subprocess.call(query)
                                        if ret == 0:
@@ -1276,25 +1561,33 @@ class PostgresConf(BaseDB):
                                        if ret == 0:
                                                log("[I] "+name + " patch 
applied","info")
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\"" %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
                                                        log("[I] Patch version 
updated", "info")
                                                else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
                                                        log("[E] Updating patch 
version failed", "error")
                                                        sys.exit(1)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\"" 
%(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\" -c ;" 
%(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                log("[E] "+name + " import 
failed!","error")
@@ -1333,11 +1626,11 @@ class PostgresConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,db_user,db_user)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,db_user,db_user)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -1356,25 +1649,33 @@ class PostgresConf(BaseDB):
                                                if ret == 0:
                                                        log("[I] "+name + " 
patch applied","info")
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\"" %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log("[I] Patch 
version updated", "info")
                                                        else:
+                                                               if os_name == 
"LINUX":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(shlex.split(query))
+                                                               elif os_name == 
"WINDOWS":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(query)
                                                                log("[E] 
Updating patch version failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] "+name + " 
import failed!","error")
@@ -1465,11 +1766,11 @@ class PostgresConf(BaseDB):
                                                                output = 
check_output(query)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,db_user,db_user)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,client_host,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,db_user,db_user)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,client_host,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
@@ -1488,33 +1789,33 @@ class PostgresConf(BaseDB):
                                                                ret = 
subprocess.call(get_java_cmd)
                                                        if ret == 0:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                if ret == 0:
                                                                        log 
("[I] java patch "+ className +" is applied..","info")
                                                                else:
                                                                        if 
os_name == "LINUX":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\"" %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(shlex.split(query))
                                                                        elif 
os_name == "WINDOWS":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(query)
                                                                        
log("[E] java patch "+ className +" failed", "error")
                                                                        
sys.exit(1)
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] 
applying java patch "+ className +" failed", "error")
@@ -1554,11 +1855,11 @@ class PostgresConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,db_user,db_user)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,db_user,db_user)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\" -c ;" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -1577,38 +1878,155 @@ class PostgresConf(BaseDB):
                                                        ret = 
subprocess.call(get_java_cmd)
                                                if ret == 0:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\"" %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log ("[I] 
Ranger admin default password change request processed successfully..","info")
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\"" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\"" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] Ranger 
admin default password change request failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\"" 
%(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\" -c 
;" %(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] Ranger admin 
default password change request failed", "error")
                                                        sys.exit(1)
 
+       def create_version_history_table(self, db_name, db_user, db_password, 
file_name,table_name):
+               name = basename(file_name)
+               if os.path.isfile(file_name):
+                       isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+                       if isTableExist==False:
+                               log("[I] Importing "+table_name+" table schema 
to database " + db_name + " from file: " + name,"info")
+                       while(isTableExist==False):
+                               get_cmd = self.get_jisql_cmd(db_user, 
db_password, db_name)
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -input %s" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = 
subprocess.call(shlex.split(query))
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -input %s -c ;" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = subprocess.call(query)
+                               if ret == 0:
+                                       log("[I] "+name + " file imported 
successfully","info")
+                               else:
+                                       log("[E] "+name + " file import 
failed!","error")
+                                       time.sleep(30)
+                               isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+               else:
+                       log("[E] Table schema file " + name+ " not 
found","error")
+                       sys.exit(1)
+
+       def import_core_db_schema(self, db_name, db_user, db_password, 
file_name,first_table,last_table):
+               version = 'CORE_DB_SCHEMA'
+               if os.path.isfile(file_name):
+                       get_cmd = self.get_jisql_cmd(db_user, db_password, 
db_name)
+                       if os_name == "LINUX":
+                               query = get_cmd + " -query \"select version 
from x_db_version_h where version = '%s' and active = 'Y';\"" %(version)
+                       elif os_name == "WINDOWS":
+                               query = get_cmd + " -query \"select version 
from x_db_version_h where version = '%s' and active = 'Y';\" -c ;" %(version)
+                       jisql_log(query, db_password)
+                       output = check_output(query)
+                       if output.strip(version + " |"):
+                               log("[I] "+version+" is already imported" 
,"info")
+                       else:
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -query \"select 
version from x_db_version_h where version = '%s' and active = 'N';\"" %(version)
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -query \"select 
version from x_db_version_h where version = '%s' and active = 'N';\" -c ;" 
%(version)
+                               jisql_log(query, db_password)
+                               output = check_output(query)
+                               if output.strip(version + " |"):
+                                       while(output.strip(version + " |")):
+                                               log("[I] "+ version  +" is 
being imported by some other process" ,"info")
+                                               time.sleep(300)
+                                               jisql_log(query, db_password)
+                                               output = check_output(query)
+                               else:
+                                       if os_name == "LINUX":
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', current_timestamp, '%s', current_timestamp, 
'%s','N') ;\"" %(version,client_host,client_host)
+                                               jisql_log(query, db_password)
+                                               ret = 
subprocess.call(shlex.split(query))
+                                       elif os_name == "WINDOWS":
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', now(), '%s', now(), '%s','N') ;\" -c ;" 
%(version)
+                                               jisql_log(query, db_password)
+                                               ret = subprocess.call(query)
+                                       if ret != 0:
+                                               log("[E] "+ version +" import 
failed", "error")
+                                               sys.exit(1)
+                                       isFirstTableExist = 
self.check_table(db_name, db_user, db_password, first_table)
+                                       isLastTableExist = 
self.check_table(db_name, db_user, db_password, last_table)
+                                       isSchemaCreated=False
+                                       if isFirstTableExist == True and 
isLastTableExist == True :
+                                               isSchemaCreated=True
+                                       elif isFirstTableExist == True and 
isLastTableExist == False :
+                                               while(isLastTableExist==False):
+                                                       log("[I] "+ version  +" 
is being imported by some other process" ,"info")
+                                                       time.sleep(300)
+                                                       
isLastTableExist=self.check_table(db_name, db_user, db_password, last_table)
+                                                       
if(isLastTableExist==True):
+                                                               
isSchemaCreated=True
+                                       elif isFirstTableExist == False and 
isLastTableExist == False :
+                                               
isImported=self.import_db_file(db_name, db_user, db_password, file_name)
+                                               if(isImported==False):
+                                                       log("[I] "+ version  +" 
might being imported by some other process" ,"info")
+                                                       time.sleep(300)
+                                               
isLastTableExist=self.check_table(db_name, db_user, db_password, last_table)
+                                               if(isLastTableExist==True):
+                                                       isSchemaCreated=True
+                                       if isSchemaCreated == True:
+                                               if os_name == "LINUX":
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\"" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(shlex.split(query))
+                                               elif os_name == "WINDOWS":
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(query)
+                                               if ret == 0:
+                                                       log("[I] "+version +" 
import status has been updated", "info")
+                                               else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
+                                                       log("[E] Updating 
"+version +" import status failed", "error")
+                                                       sys.exit(1)
+                                       else:
+                                               if os_name == "LINUX":
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\"" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(shlex.split(query))
+                                               elif os_name == "WINDOWS":
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                       jisql_log(query, 
db_password)
+                                                       ret = 
subprocess.call(query)
+                                               log("[E] "+version + " import 
failed!","error")
+                                               sys.exit(1)
+
 class SqlServerConf(BaseDB):
        # Constructor
        def __init__(self, host, SQL_CONNECTOR_JAR, JAVA_BIN):
@@ -1643,6 +2061,7 @@ class SqlServerConf(BaseDB):
                        sys.exit(1)
 
        def import_db_file(self, db_name, db_user, db_password, file_name):
+               isImported=False
                name = basename(file_name)
                if os.path.isfile(file_name):
                        log("[I] Importing db schema to database " + db_name + 
" from file: " + name,"info")
@@ -1657,9 +2076,13 @@ class SqlServerConf(BaseDB):
                                ret = subprocess.call(query)
                        if ret == 0:
                                log("[I] "+name + " DB schema imported 
successfully","info")
+                               isImported=True
                        else:
                                log("[E] "+name + " DB Schema import 
failed!","error")
-                               sys.exit(1)
+               else:
+                       log("[E] DB schema file " + name+ " not found","error")
+                       sys.exit(1)
+               return isImported
 
        def check_table(self, db_name, db_user, db_password, TABLE_NAME):
                get_cmd = self.get_jisql_cmd(db_user, db_password, db_name)
@@ -1721,11 +2144,11 @@ class SqlServerConf(BaseDB):
                                                output = check_output(query)
                                else:
                                        if os_name == "LINUX":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,db_user,db_user)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,client_host,client_host)
                                                jisql_log(query, db_password)
                                                ret = 
subprocess.call(shlex.split(query))
                                        elif os_name == "WINDOWS":
-                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,db_user,db_user)
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,client_host,client_host)
                                                jisql_log(query, db_password)
                                                ret = subprocess.call(query)
                                        if ret == 0:
@@ -1743,25 +2166,33 @@ class SqlServerConf(BaseDB):
                                        if ret == 0:
                                                log("[I] "+name + " patch 
applied","info")
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c \;"  %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c \;"  %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                       query = get_cmd + " 
-query \"update x_db_version_h set active='Y' where version='%s' and active='N' 
and updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
                                                        log("[I] Patch version 
updated", "info")
                                                else:
+                                                       if os_name == "LINUX":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c \;"  %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(shlex.split(query))
+                                                       elif os_name == 
"WINDOWS":
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
+                                                               
jisql_log(query, db_password)
+                                                               ret = 
subprocess.call(query)
                                                        log("[E] Updating patch 
version failed", "error")
                                                        sys.exit(1)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\" -c \;" 
 %(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c \;"  %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N';\" -c ;" 
%(version)
+                                                       query = get_cmd + " 
-query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                log("[E] "+name + " import 
failed!","error")
@@ -1800,11 +2231,11 @@ class SqlServerConf(BaseDB):
                                        else:
                                                get_cmd2 = 
self.get_jisql_cmd(db_user, db_password, audit_db_name)
                                                if os_name == "LINUX":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,db_user,db_user)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,db_user,db_user)
+                                                       query = get_cmd1 + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -1822,25 +2253,33 @@ class SqlServerConf(BaseDB):
                                                if ret == 0:
                                                        log("[I] "+name + " 
patch applied","info")
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\" -c \;"  %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"update x_db_version_h set active='Y' where version='%s' 
and active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log("[I] Patch 
version updated", "info")
                                                        else:
+                                                               if os_name == 
"LINUX":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(shlex.split(query))
+                                                               elif os_name == 
"WINDOWS":
+                                                                       query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
+                                                                       
jisql_log(query, db_password)
+                                                                       ret = 
subprocess.call(query)
                                                                log("[E] 
Updating patch version failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c \;"  %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = 
get_cmd1 + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] "+name + " 
import failed!","error")
@@ -1915,11 +2354,11 @@ class SqlServerConf(BaseDB):
                                                                output = 
check_output(query)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,db_user,db_user)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,client_host,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,db_user,db_user)
+                                                               query = get_cmd 
+ " -query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('J%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,client_host,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
@@ -1938,33 +2377,33 @@ class SqlServerConf(BaseDB):
                                                                ret = 
subprocess.call(get_java_cmd)
                                                        if ret == 0:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\" -c \;"  %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"update x_db_version_h set active='Y' where version='J%s' 
and active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                if ret == 0:
                                                                        log 
("[I] java patch "+ className +" is applied..","info")
                                                                else:
                                                                        if 
os_name == "LINUX":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c \;"  %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(shlex.split(query))
                                                                        elif 
os_name == "WINDOWS":
-                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                               
query = get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                                
jisql_log(query, db_password)
                                                                                
ret = subprocess.call(query)
                                                                        
log("[E] java patch "+ className +" failed", "error")
                                                                        
sys.exit(1)
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c \;"  %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='J%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] 
applying java patch "+ className +" failed", "error")
@@ -2004,11 +2443,11 @@ class SqlServerConf(BaseDB):
                                                        output = 
check_output(query)
                                        else:
                                                if os_name == "LINUX":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,db_user,db_user)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(shlex.split(query))
                                                elif os_name == "WINDOWS":
-                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,db_user,db_user)
+                                                       query = get_cmd + " 
-query \"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
;" %(version,client_host,client_host)
                                                        jisql_log(query, 
db_password)
                                                        ret = 
subprocess.call(query)
                                                if ret == 0:
@@ -2027,38 +2466,155 @@ class SqlServerConf(BaseDB):
                                                        ret = 
subprocess.call(get_java_cmd)
                                                if ret == 0:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c \;"  %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N';\" -c ;" %(version)
+                                                               query = get_cmd 
+ " -query \"update x_db_version_h set active='Y' where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        if ret == 0:
                                                                log ("[I] 
Ranger admin default password change request processed successfully..","info")
                                                        else:
                                                                if os_name == 
"LINUX":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c \;"  %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c \;"  %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(shlex.split(query))
                                                                elif os_name == 
"WINDOWS":
-                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N';\" -c ;" %(version)
+                                                                       query = 
get_cmd + " -query \"delete from x_db_version_h where version='%s' and 
active='N' and updated_by='%s';\" -c ;" %(version,client_host)
                                                                        
jisql_log(query, db_password)
                                                                        ret = 
subprocess.call(query)
                                                                log("[E] Ranger 
admin default password change request failed", "error")
                                                                sys.exit(1)
                                                else:
                                                        if os_name == "LINUX":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\" -c 
\;"  %(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c \;"  %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(shlex.split(query))
                                                        elif os_name == 
"WINDOWS":
-                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N';\" -c 
;" %(version)
+                                                               query = get_cmd 
+ " -query \"delete from x_db_version_h where version='%s' and active='N' and 
updated_by='%s';\" -c ;" %(version,client_host)
                                                                
jisql_log(query, db_password)
                                                                ret = 
subprocess.call(query)
                                                        log("[E] Ranger admin 
default password change request failed", "error")
                                                        sys.exit(1)
 
+       def create_version_history_table(self, db_name, db_user, db_password, 
file_name,table_name):
+               name = basename(file_name)
+               if os.path.isfile(file_name):
+                       isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+                       if isTableExist==False:
+                               log("[I] Importing "+table_name+" table schema 
to database " + db_name + " from file: " + name,"info")
+                       while(isTableExist==False):
+                               get_cmd = self.get_jisql_cmd(db_user, 
db_password, db_name)
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -input %s" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = 
subprocess.call(shlex.split(query))
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -input %s" 
%file_name
+                                       jisql_log(query, db_password)
+                                       ret = subprocess.call(query)
+                               if ret == 0:
+                                       log("[I] "+name + " file imported 
successfully","info")
+                               else:
+                                       log("[E] "+name + " file import 
failed!","error")
+                                       time.sleep(30)
+                               isTableExist=self.check_table(db_name, db_user, 
db_password, table_name)
+               else:
+                       log("[E] Table schema file " + name+ " not 
found","error")
+                       sys.exit(1)
+
+       def import_core_db_schema(self, db_name, db_user, db_password, 
file_name,first_table,last_table):
+               version = 'CORE_DB_SCHEMA'
+               if os.path.isfile(file_name):
+                       get_cmd = self.get_jisql_cmd(db_user, db_password, 
db_name)
+                       if os_name == "LINUX":
+                               query = get_cmd + " -c \; -query \"select 
version from x_db_version_h where version = '%s' and active = 'Y';\"" %(version)
+                       elif os_name == "WINDOWS":
+                               query = get_cmd + " -query \"select version 
from x_db_version_h where version = '%s' and active = 'Y';\" -c ;" %(version)
+                       jisql_log(query, db_password)
+                       output = check_output(query)
+                       if output.strip(version + " |"):
+                               log("[I] "+version+" is already imported" 
,"info")
+                       else:
+                               if os_name == "LINUX":
+                                       query = get_cmd + " -c \; -query 
\"select version from x_db_version_h where version = '%s' and active = 'N';\"" 
%(version)
+                               elif os_name == "WINDOWS":
+                                       query = get_cmd + " -query \"select 
version from x_db_version_h where version = '%s' and active = 'N';\" -c ;" 
%(version)
+                               jisql_log(query, db_password)
+                               output = check_output(query)
+                               if output.strip(version + " |"):
+                                       while(output.strip(version + " |")):
+                                               log("[I] "+ version  +" is 
being imported by some other process" ,"info")
+                                               time.sleep(300)
+                                               jisql_log(query, db_password)
+                                               output = check_output(query)
+                               else:
+                                       if os_name == "LINUX":
+                                               query = get_cmd + " -query 
\"insert into x_db_version_h (version, inst_at, inst_by, updated_at, 
updated_by,active) values ('%s', GETDATE(), '%s', GETDATE(), '%s','N') ;\" -c 
\;" %(version,client_host,client_host)
+                                               jisql_log(query, db_password)
+                                               ret = 
subprocess.call(shlex.split(query))
+                                       elif os_name == "WINDOWS":
+                                               query = get_cmd + " -query 
\"insert

<TRUNCATED>

Reply via email to