Repository: ambari
Updated Branches:
  refs/heads/branch-2.2 497b7aa44 -> 0f40f37cf


AMBARI-15127. Separate DB operation during upgrade and add them as pre-upgrade 
tasks(gautam)


Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/0f40f37c
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/0f40f37c
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/0f40f37c

Branch: refs/heads/branch-2.2
Commit: 0f40f37cfcdeb9f6a2590785a2dbc7ea05c210ff
Parents: 497b7aa
Author: Gautam Borad <[email protected]>
Authored: Thu Mar 3 10:35:16 2016 +0530
Committer: Gautam Borad <[email protected]>
Committed: Mon Mar 7 09:25:27 2016 +0530

----------------------------------------------------------------------
 .../0.4.0/package/scripts/ranger_admin.py       |  45 +++++--
 .../0.4.0/package/scripts/ranger_usersync.py    |  10 +-
 .../0.4.0/package/scripts/setup_ranger.py       |  10 +-
 .../0.4.0/package/scripts/setup_ranger_xml.py   | 122 +++++++++--------
 .../RANGER_KMS/0.5.0.2.3/package/scripts/kms.py | 135 +++++++++++--------
 .../0.5.0.2.3/package/scripts/kms_server.py     |  16 ++-
 .../HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml |  14 ++
 .../HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml |  14 ++
 .../stacks/HDP/2.2/upgrades/upgrade-2.3.xml     |  12 ++
 .../stacks/HDP/2.2/upgrades/upgrade-2.4.xml     |  12 ++
 .../HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml |  47 ++++++-
 .../HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml |  47 ++++++-
 .../stacks/HDP/2.3/upgrades/upgrade-2.3.xml     |  42 ++++++
 .../stacks/HDP/2.3/upgrades/upgrade-2.4.xml     |  64 ++++++++-
 .../HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml |  47 ++++++-
 .../stacks/HDP/2.4/upgrades/upgrade-2.4.xml     |  42 ++++++
 16 files changed, 539 insertions(+), 140 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
index 5bcf6b9..f145ac5 100644
--- 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
+++ 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
@@ -17,6 +17,7 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 
 """
+from resource_management.libraries.functions import hdp_select
 from resource_management.libraries.script import Script
 from resource_management.core.resources.system import Execute
 from resource_management.core.exceptions import ComponentIsNotRunning
@@ -59,12 +60,6 @@ class RangerAdmin(Script):
 
     upgrade.prestart(env, "ranger-admin")
 
-    if params.xml_configurations_supported:
-      from setup_ranger_xml import ranger, setup_ranger_db, setup_java_patch
-      ranger('ranger_admin', upgrade_type=upgrade_type)
-      setup_ranger_db(upgrade_type=upgrade_type)
-      setup_java_patch(upgrade_type=upgrade_type)
-
     self.set_ru_rangeradmin_in_progress(params.upgrade_marker_file)
 
   def post_upgrade_restart(self,env, upgrade_type=None):
@@ -77,7 +72,7 @@ class RangerAdmin(Script):
   def start(self, env, upgrade_type=None):
     import params
     env.set_params(params)
-    self.configure(env)
+    self.configure(env, upgrade_type=upgrade_type)
     ranger_service('ranger_admin')
 
 
@@ -96,7 +91,7 @@ class RangerAdmin(Script):
         raise ComponentIsNotRunning()
     pass
 
-  def configure(self, env):
+  def configure(self, env, upgrade_type=None):
     import params
     env.set_params(params)
     if params.xml_configurations_supported:
@@ -104,7 +99,7 @@ class RangerAdmin(Script):
     else:
       from setup_ranger import ranger
 
-    ranger('ranger_admin')
+    ranger('ranger_admin', upgrade_type=upgrade_type)
 
   def set_ru_rangeradmin_in_progress(self, upgrade_marker_file):
     config_dir = os.path.dirname(upgrade_marker_file)
@@ -124,6 +119,38 @@ class RangerAdmin(Script):
   def is_ru_rangeradmin_in_progress(self, upgrade_marker_file):
     return os.path.isfile(upgrade_marker_file)
 
+  def setup_ranger_database(self, env):
+    import params
+    env.set_params(params)
+
+    upgrade_stack = hdp_select._get_upgrade_stack()
+    if upgrade_stack is None:
+      raise Fail('Unable to determine the stack and stack version')
+
+    stack_version = upgrade_stack[1]
+
+    if params.xml_configurations_supported:
+      Logger.info(format('Setting Ranger database schema, using version 
{stack_version}'))
+
+      from setup_ranger_xml import setup_ranger_db
+      setup_ranger_db(stack_version=stack_version)
+
+  def setup_ranger_java_patches(self, env):
+    import params
+    env.set_params(params)
+
+    upgrade_stack = hdp_select._get_upgrade_stack()
+    if upgrade_stack is None:
+      raise Fail('Unable to determine the stack and stack version')
+
+    stack_version = upgrade_stack[1]
+
+    if params.xml_configurations_supported:
+      Logger.info(format('Applying Ranger java patches, using version 
{stack_version}'))
+
+      from setup_ranger_xml import setup_java_patch
+      setup_java_patch(stack_version=stack_version)
+
 if __name__ == "__main__":
   RangerAdmin().execute()
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
index 72133bc..51e5eab 100644
--- 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
+++ 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
@@ -32,7 +32,7 @@ class RangerUsersync(Script):
     self.install_packages(env)
     self.configure(env)
     
-  def configure(self, env):
+  def configure(self, env, upgrade_type=None):
     import params
     env.set_params(params)
 
@@ -41,13 +41,13 @@ class RangerUsersync(Script):
     else:
       from setup_ranger import ranger    
     
-    ranger('ranger_usersync')
+    ranger('ranger_usersync', upgrade_type=upgrade_type)
     
   def start(self, env, upgrade_type=None):
     import params
     env.set_params(params)
     
-    self.configure(env)
+    self.configure(env, upgrade_type=upgrade_type)
     ranger_service('ranger_usersync')
     
   def stop(self, env, upgrade_type=None):
@@ -70,10 +70,6 @@ class RangerUsersync(Script):
     env.set_params(params)
     upgrade.prestart(env, "ranger-usersync")
 
-    if params.xml_configurations_supported:
-      from setup_ranger_xml import ranger
-      ranger('ranger_usersync', upgrade_type=upgrade_type)
-
   def get_stack_to_component(self):
     return {"HDP": "ranger-usersync"}
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger.py
 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger.py
index a571686..db89664 100644
--- 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger.py
+++ 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger.py
@@ -23,14 +23,14 @@ import os
 from resource_management import *
 from resource_management.core.logger import Logger
 
-def ranger(name=None):
+def ranger(name=None, upgrade_type=None):
   if name == 'ranger_admin':
-    setup_ranger_admin()
+    setup_ranger_admin(upgrade_type=upgrade_type)
 
   if name == 'ranger_usersync':
-    setup_usersync()
+    setup_usersync(upgrade_type=upgrade_type)
 
-def setup_ranger_admin():
+def setup_ranger_admin(upgrade_type=None):
   import params
 
   check_db_connnection()
@@ -84,7 +84,7 @@ def setup_ranger_admin():
     group = params.unix_group
   )
 
-def setup_usersync():
+def setup_usersync(upgrade_type=None):
   import params
 
   PropertiesFile(format("{usersync_home}/install.properties"),

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
index 4868fd0..6394f51 100644
--- 
a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
+++ 
b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
@@ -58,6 +58,7 @@ def setup_ranger_admin(upgrade_type=None):
   if upgrade_type is not None:
     ranger_home = format("/usr/hdp/{version}/ranger-admin")
     ranger_conf = format("/usr/hdp/{version}/ranger-admin/conf")
+    copy_jdbc_connector(stack_version=params.version)
 
   File(format("/usr/lib/ambari-agent/{check_db_connection_jar_name}"),
     content = 
DownloadSource(format("{jdk_location}{check_db_connection_jar_name}")),
@@ -69,7 +70,7 @@ def setup_ranger_admin(upgrade_type=None):
     cp = cp + os.pathsep + format("{ranger_home}/ews/lib/{jdbc_jar_name}")
   else:
     cp = cp + os.pathsep + format("{driver_curl_target}")
-  cp = cp + os.pathsep + format("{ranger_home}/ews/webapp/WEB-INF/lib/*")
+  cp = cp + os.pathsep + format("{ranger_home}/ews/lib/*")
 
   db_connection_check_command = format(
     "{java_home}/bin/java -cp {cp} 
org.apache.ambari.server.DBConnectionVerification 
'{ranger_jdbc_connection_url}' {ranger_db_user} {ranger_db_password!p} 
{ranger_jdbc_driver}")
@@ -145,61 +146,16 @@ def setup_ranger_admin(upgrade_type=None):
   do_keystore_setup(upgrade_type=upgrade_type)
 
 
-def setup_ranger_db(upgrade_type=None):
+def setup_ranger_db(stack_version=None):
   import params
   
-  File(params.downloaded_custom_connector,
-    content = DownloadSource(params.driver_curl_source),
-    mode = 0644
-  )
-
-  Directory(params.java_share_dir,
-    mode=0755,
-    recursive=True,
-    cd_access="a"
-  )
-
-  if params.db_flavor.lower() != 'sqla':
-    Execute(('cp', '--remove-destination', params.downloaded_custom_connector, 
params.driver_curl_target),
-      path=["/bin", "/usr/bin/"],
-      sudo=True)
-
-    File(params.driver_curl_target, mode=0644)
-
   ranger_home = params.ranger_home
-  if upgrade_type is not None:
-    ranger_home = format("/usr/hdp/{version}/ranger-admin")
-
-  if params.db_flavor.lower() == 'sqla':
-    Execute(('tar', '-xvf', params.downloaded_custom_connector, '-C', 
params.tmp_dir), sudo = True)
-
-    Execute(('cp', '--remove-destination', params.jar_path_in_archive, 
os.path.join(params.ranger_home, 'ews', 'lib')),
-      path=["/bin", "/usr/bin/"],
-      sudo=True)
+  version = params.version
+  if stack_version is not None:
+    ranger_home = format("/usr/hdp/{stack_version}/ranger-admin")
+    version = stack_version
 
-    Directory(params.jdbc_libs_dir,
-      cd_access="a",
-      recursive=True)
-
-    Execute(as_sudo(['yes', '|', 'cp', params.libs_path_in_archive, 
params.jdbc_libs_dir], auto_escape=False),
-            path=["/bin", "/usr/bin/"])
-  else:
-    Execute(('cp', '--remove-destination', params.downloaded_custom_connector, 
os.path.join(params.ranger_home, 'ews', 'lib')),
-      path=["/bin", "/usr/bin/"],
-      sudo=True)
-
-  File(os.path.join(params.ranger_home, 'ews', 'lib',params.jdbc_jar_name), 
mode=0644)
-
-  ModifyPropertiesFile(format("{ranger_home}/install.properties"),
-    properties = params.config['configurations']['admin-properties'],
-    owner = params.unix_user,
-  )
-
-  if params.db_flavor.lower() == 'sqla':
-    ModifyPropertiesFile(format("{ranger_home}/install.properties"),
-      properties = {'SQL_CONNECTOR_JAR': 
format('{ranger_home}/ews/lib/{jdbc_jar_name}')},
-      owner = params.unix_user,
-    )
+  copy_jdbc_connector(stack_version=version)
 
   env_dict = {'RANGER_ADMIN_HOME':ranger_home, 'JAVA_HOME':params.java_home}
   if params.db_flavor.lower() == 'sqla':
@@ -225,12 +181,12 @@ def setup_ranger_db(upgrade_type=None):
   )
 
 
-def setup_java_patch(upgrade_type=None):
+def setup_java_patch(stack_version=None):
   import params
 
   ranger_home = params.ranger_home
-  if upgrade_type is not None:
-    ranger_home = format("/usr/hdp/{version}/ranger-admin")
+  if stack_version is not None:
+    ranger_home = format("/usr/hdp/{stack_version}/ranger-admin")
 
   env_dict = {'RANGER_ADMIN_HOME':ranger_home, 'JAVA_HOME':params.java_home}
   if params.db_flavor.lower() == 'sqla':
@@ -294,6 +250,62 @@ def password_validation(password):
     raise Fail("LDAP/AD bind password contains one of the unsupported special 
characters like \" ' \ `")
   else:
     Logger.info("password validated")
+
+def copy_jdbc_connector(stack_version=None):
+  import params
+
+  File(params.downloaded_custom_connector,
+    content = DownloadSource(params.driver_curl_source),
+    mode = 0644
+  )
+
+  Directory(params.java_share_dir,
+    mode=0755,
+    recursive=True,
+    cd_access="a"
+  )
+
+  if params.db_flavor.lower() != 'sqla':
+    Execute(('cp', '--remove-destination', params.downloaded_custom_connector, 
params.driver_curl_target),
+      path=["/bin", "/usr/bin/"],
+      sudo=True)
+
+    File(params.driver_curl_target, mode=0644)
+
+  ranger_home = params.ranger_home
+  if stack_version is not None:
+    ranger_home = format("/usr/hdp/{stack_version}/ranger-admin")
+
+  if params.db_flavor.lower() == 'sqla':
+    Execute(('tar', '-xvf', params.downloaded_custom_connector, '-C', 
params.tmp_dir), sudo = True)
+
+    Execute(('cp', '--remove-destination', params.jar_path_in_archive, 
os.path.join(ranger_home, 'ews', 'lib')),
+      path=["/bin", "/usr/bin/"],
+      sudo=True)
+
+    Directory(params.jdbc_libs_dir,
+      cd_access="a",
+      recursive=True)
+
+    Execute(as_sudo(['yes', '|', 'cp', params.libs_path_in_archive, 
params.jdbc_libs_dir], auto_escape=False),
+            path=["/bin", "/usr/bin/"])
+  else:
+    Execute(('cp', '--remove-destination', params.downloaded_custom_connector, 
os.path.join(ranger_home, 'ews', 'lib')),
+      path=["/bin", "/usr/bin/"],
+      sudo=True)
+
+  File(os.path.join(ranger_home, 'ews', 'lib',params.jdbc_jar_name), mode=0644)
+
+  ModifyPropertiesFile(format("{ranger_home}/install.properties"),
+    properties = params.config['configurations']['admin-properties'],
+    owner = params.unix_user,
+  )
+
+  if params.db_flavor.lower() == 'sqla':
+    ModifyPropertiesFile(format("{ranger_home}/install.properties"),
+      properties = {'SQL_CONNECTOR_JAR': 
format('{ranger_home}/ews/lib/{jdbc_jar_name}')},
+      owner = params.unix_user,
+    )
  
 def setup_usersync(upgrade_type=None):
   import params

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py
 
b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py
index 5a8f61f..18ada15 100755
--- 
a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py
+++ 
b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms.py
@@ -48,69 +48,24 @@ def password_validation(password, key):
   else:
     Logger.info("Password validated")
 
-def setup_kms_db():
+def setup_kms_db(stack_version=None):
   import params
 
   if params.has_ranger_admin:
 
-    password_validation(params.kms_master_key_password, 'KMS master key')
-
-    File(params.downloaded_custom_connector,
-      content = DownloadSource(params.driver_curl_source),
-      mode = 0644
-    )
-
-    Directory(params.java_share_dir,
-      mode=0755,
-      recursive=True,
-      cd_access="a"
-    )
-    
-    if params.db_flavor.lower() != 'sqla':
-      Execute(('cp', '--remove-destination', 
params.downloaded_custom_connector, params.driver_curl_target),
-          path=["/bin", "/usr/bin/"],
-          sudo=True)
-
-      File(params.driver_curl_target, mode=0644)
-
-    Directory(os.path.join(params.kms_home, 'ews', 'lib'),
-      mode=0755
-    )
-    
-    if params.db_flavor.lower() == 'sqla':
-      Execute(('tar', '-xvf', params.downloaded_custom_connector, '-C', 
params.tmp_dir), sudo = True)
+    kms_home = params.kms_home
+    version = params.version
+    if stack_version is not None:
+      kms_home = format("/usr/hdp/{stack_version}/ranger-kms")
+      version = stack_version
 
-      Execute(('cp', '--remove-destination', params.jar_path_in_archive, 
os.path.join(params.kms_home, 'ews', 'webapp', 'lib')),
-        path=["/bin", "/usr/bin/"],
-        sudo=True)
-
-      Directory(params.jdbc_libs_dir,
-        cd_access="a",
-        recursive=True)
-
-      Execute(as_sudo(['yes', '|', 'cp', params.libs_path_in_archive, 
params.jdbc_libs_dir], auto_escape=False),
-        path=["/bin", "/usr/bin/"])
-    else:
-      Execute(('cp', '--remove-destination', 
params.downloaded_custom_connector, os.path.join(params.kms_home, 'ews', 
'webapp', 'lib')),
-        path=["/bin", "/usr/bin/"],
-        sudo=True)
-
-    File(os.path.join(params.kms_home, 'ews', 'webapp', 'lib', 
params.jdbc_jar_name), mode=0644)
+    password_validation(params.kms_master_key_password, 'KMS master key')
 
-    
ModifyPropertiesFile(format("/usr/hdp/current/ranger-kms/install.properties"),
-      properties = params.config['configurations']['kms-properties'],
-      owner = params.kms_user
-    )
+    copy_jdbc_connector(stack_version=version)
 
+    env_dict = {'RANGER_KMS_HOME':kms_home, 'JAVA_HOME': params.java_home}
     if params.db_flavor.lower() == 'sqla':
-      ModifyPropertiesFile(format("{kms_home}/install.properties"),
-        properties = {'SQL_CONNECTOR_JAR': 
format('{kms_home}/ews/webapp/lib/{jdbc_jar_name}')},
-        owner = params.kms_user,
-      )
-
-    env_dict = {'RANGER_KMS_HOME':params.kms_home, 'JAVA_HOME': 
params.java_home}
-    if params.db_flavor.lower() == 'sqla':
-      env_dict = {'RANGER_KMS_HOME':params.kms_home, 'JAVA_HOME': 
params.java_home, 'LD_LIBRARY_PATH':params.ld_library_path}
+      env_dict = {'RANGER_KMS_HOME':kms_home, 'JAVA_HOME': params.java_home, 
'LD_LIBRARY_PATH':params.ld_library_path}
 
     dba_setup = format('python {kms_home}/dba_script.py -q')
     db_setup = format('python {kms_home}/db_setup.py')
@@ -128,11 +83,12 @@ def setup_java_patch():
 
   if params.has_ranger_admin:
 
+    kms_home = params.kms_home
     setup_java_patch = format('python {kms_home}/db_setup.py -javapatch')
 
-    env_dict = {'RANGER_KMS_HOME':params.kms_home, 'JAVA_HOME': 
params.java_home}
+    env_dict = {'RANGER_KMS_HOME':kms_home, 'JAVA_HOME': params.java_home}
     if params.db_flavor.lower() == 'sqla':
-      env_dict = {'RANGER_KMS_HOME':params.kms_home, 'JAVA_HOME': 
params.java_home, 'LD_LIBRARY_PATH':params.ld_library_path}
+      env_dict = {'RANGER_KMS_HOME':kms_home, 'JAVA_HOME': params.java_home, 
'LD_LIBRARY_PATH':params.ld_library_path}
 
     Execute(setup_java_patch, environment=env_dict, logoutput=True, 
user=params.kms_user, tries=5, try_sleep=10)
 
@@ -169,7 +125,7 @@ def do_keystore_setup(cred_provider_path, credential_alias, 
credential_password)
       mode = 0640
     )
 
-def kms():
+def kms(upgrade_type=None):
   import params
 
   if params.has_ranger_admin:
@@ -180,6 +136,9 @@ def kms():
       recursive = True
     )
 
+    if upgrade_type is not None:
+      copy_jdbc_connector(stack_version=params.version)
+
     File(format("/usr/lib/ambari-agent/{check_db_connection_jar_name}"),
       content = 
DownloadSource(format("{jdk_location}{check_db_connection_jar_name}")),
       mode = 0644,
@@ -298,6 +257,66 @@ def kms():
       mode=0644
     )
 
+def copy_jdbc_connector(stack_version=None):
+  import params
+
+  kms_home = params.kms_home
+  if stack_version is not None:
+    kms_home = format("/usr/hdp/{stack_version}/ranger-kms")
+
+  File(params.downloaded_custom_connector,
+    content = DownloadSource(params.driver_curl_source),
+    mode = 0644
+  )
+
+  Directory(params.java_share_dir,
+    mode=0755,
+    recursive=True,
+    cd_access="a"
+  )
+
+  if params.db_flavor.lower() != 'sqla':
+    Execute(('cp', '--remove-destination', params.downloaded_custom_connector, 
params.driver_curl_target),
+        path=["/bin", "/usr/bin/"],
+        sudo=True)
+
+    File(params.driver_curl_target, mode=0644)
+
+  Directory(os.path.join(kms_home, 'ews', 'lib'),
+    mode=0755
+  )
+
+  if params.db_flavor.lower() == 'sqla':
+    Execute(('tar', '-xvf', params.downloaded_custom_connector, '-C', 
params.tmp_dir), sudo = True)
+
+    Execute(('cp', '--remove-destination', params.jar_path_in_archive, 
os.path.join(kms_home, 'ews', 'webapp', 'lib')),
+      path=["/bin", "/usr/bin/"],
+      sudo=True)
+
+    Directory(params.jdbc_libs_dir,
+      cd_access="a",
+      recursive=True)
+
+    Execute(as_sudo(['yes', '|', 'cp', params.libs_path_in_archive, 
params.jdbc_libs_dir], auto_escape=False),
+      path=["/bin", "/usr/bin/"])
+  else:
+    Execute(('cp', '--remove-destination', params.downloaded_custom_connector, 
os.path.join(kms_home, 'ews', 'webapp', 'lib')),
+      path=["/bin", "/usr/bin/"],
+      sudo=True)
+
+  File(os.path.join(kms_home, 'ews', 'webapp', 'lib', params.jdbc_jar_name), 
mode=0644)
+
+  ModifyPropertiesFile(format("{kms_home}/install.properties"),
+    properties = params.config['configurations']['kms-properties'],
+    owner = params.kms_user
+  )
+
+  if params.db_flavor.lower() == 'sqla':
+    ModifyPropertiesFile(format("{kms_home}/install.properties"),
+      properties = {'SQL_CONNECTOR_JAR': 
format('{kms_home}/ews/webapp/lib/{jdbc_jar_name}')},
+      owner = params.kms_user,
+    )
+
 def enable_kms_plugin():
 
   import params

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
 
b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
index 4ffc8eb..9450184 100755
--- 
a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
+++ 
b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
@@ -17,6 +17,7 @@ See the License for the specific language governing 
permissions and
 limitations under the License.
 
 """
+from resource_management.libraries.functions import hdp_select
 from resource_management.libraries.script import Script
 from resource_management.core.resources.system import Execute
 from resource_management.core.exceptions import ComponentIsNotRunning
@@ -74,9 +75,20 @@ class KmsServer(Script):
     env.set_params(params)
 
     upgrade.prestart(env, "ranger-kms")
-    setup_kms_db()
-    kms()
+    kms(upgrade_type=upgrade_type)
     setup_java_patch()
 
+  def setup_ranger_kms_database(self, env):
+    import params
+    env.set_params(params)
+
+    upgrade_stack = hdp_select._get_upgrade_stack()
+    if upgrade_stack is None:
+      raise Fail('Unable to determine the stack and stack version')
+
+    stack_version = upgrade_stack[1]
+    Logger.info(format('Setting Ranger KMS database schema, using version 
{stack_version}'))
+    setup_kms_db(stack_version=stack_version)
+
 if __name__ == "__main__":
   KmsServer().execute()

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
index 47e7a64..b22f203 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
@@ -877,9 +877,23 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
       </component>
 
       <component name="RANGER_USERSYNC">

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml
index eca1789..f1d3c82 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml
@@ -942,9 +942,23 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
       </component>
 
       <component name="RANGER_USERSYNC">

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
index 6dcbcb2..a2c6b12 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.3.xml
@@ -457,11 +457,23 @@
           <task xsi:type="configure" 
id="hdp_2_3_0_0_update_ranger_admin_hdfs_audit"/>
 
           <task xsi:type="configure" 
id="hdp_2_3_0_0_update_ranger_admin_db_audit"/>
+
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
         </pre-upgrade>
       
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
       </component>
 
       <component name="RANGER_USERSYNC">

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml
index 5c91764..90e7f62 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/upgrade-2.4.xml
@@ -459,11 +459,23 @@
           <task xsi:type="configure" 
id="hdp_2_3_0_0_update_ranger_admin_hdfs_audit"/>
 
           <task xsi:type="configure" 
id="hdp_2_3_0_0_update_ranger_admin_db_audit"/>
+
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
         </pre-upgrade>
       
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
       </component>
 
       <component name="RANGER_USERSYNC">

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
index 4b5b8d5..50dc3d7 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
@@ -169,7 +169,10 @@
 
       <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup 
Ranger Database">
         <task xsi:type="manual">
-          <message>Before continuing, please backup the Ranger Admin database 
and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+          <message>Before continuing, please backup the Ranger Admin database 
and Ranger Audit database on the following host(s): {{hosts.all}}. If audit 
database size is too large (greater than 3GB) then follow the below 
instructions:
+            1. Backup the audit table from audit database.
+            2. Truncate audit table.
+            3. Follow upgrade process and once completed then restore audit 
data to audit table.</message>
         </task>
       </execute-stage>
 
@@ -666,9 +669,37 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
+
+        <post-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-downgrade>
       </component>
 
       <component name="RANGER_USERSYNC">
@@ -680,6 +711,20 @@
 
     <service name="RANGER_KMS">
       <component name="RANGER_KMS_SERVER">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml
index 50a9848..d0fc13c 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.4.xml
@@ -169,7 +169,10 @@
 
       <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup 
Ranger Database">
         <task xsi:type="manual">
-          <message>Before continuing, please backup the Ranger Admin database 
and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+          <message>Before continuing, please backup the Ranger Admin database 
and Ranger Audit database on the following host(s): {{hosts.all}}. If audit 
database size is too large (greater than 3GB) then follow the below 
instructions:
+            1. Backup the audit table from audit database.
+            2. Truncate audit table.
+            3. Follow upgrade process and once completed then restore audit 
data to audit table.</message>
         </task>
       </execute-stage>
 
@@ -695,9 +698,37 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
+
+        <post-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-downgrade>
       </component>
 
       <component name="RANGER_USERSYNC">
@@ -709,6 +740,20 @@
 
     <service name="RANGER_KMS">
       <component name="RANGER_KMS_SERVER">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
index 8003ee0..ad9edc9 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.3.xml
@@ -451,9 +451,37 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
+
+        <post-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-downgrade>
       </component>
 
       <component name="RANGER_USERSYNC">
@@ -465,6 +493,20 @@
 
     <service name="RANGER_KMS">
       <component name="RANGER_KMS_SERVER">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml
index f775314..5bf3532 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.4.xml
@@ -101,6 +101,12 @@
                 3. Follow upgrade process and once completed then restore 
audit data to audit table.</message>
         </task>
       </execute-stage>
+
+      <execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" 
title="Pre Upgrade Ranger KMS Backup">
+        <task xsi:type="manual">
+          <message>Before continuing, please backup Ranger KMS database on the 
following host(s): {{hosts.all}}.</message>
+        </task>
+      </execute-stage>
     </group>
 
     <group name="ZOOKEEPER" title="ZooKeeper">
@@ -118,6 +124,14 @@
       </service>
     </group>
 
+    <group name="RANGER_KMS" title="Ranger_KMS">
+      <skippable>true</skippable>
+      <supports-auto-skip-failure>false</supports-auto-skip-failure>
+      <service name="RANGER_KMS">
+        <component>RANGER_KMS_SERVER</component>
+      </service>
+    </group>
+
     <group name="CORE_MASTER" title="Core Masters">
       <service-check>false</service-check>
       <service name="HDFS">
@@ -418,11 +432,37 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
-        <pre-downgrade /> <!--  no-op to prevent config changes on downgrade 
-->
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-downgrade>
 
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
+
+        <post-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-downgrade>
       </component>
 
       <component name="RANGER_USERSYNC">
@@ -432,6 +472,28 @@
       </component>
     </service>
 
+    <service name="RANGER_KMS">
+      <component name="RANGER_KMS_SERVER">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-downgrade>
+
+        <upgrade>
+          <task xsi:type="restart-task" />
+        </upgrade>
+      </component>
+    </service>
+
     <service name="HDFS">
       <component name="NAMENODE">
         <pre-downgrade /> <!--  no-op to prevent config changes on downgrade 
-->

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml
 
b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml
index b09c84a..85e0208 100644
--- 
a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml
+++ 
b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/nonrolling-upgrade-2.4.xml
@@ -170,7 +170,10 @@
 
       <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup 
Ranger Database">
         <task xsi:type="manual">
-          <message>Before continuing, please backup the Ranger Admin database 
and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
+          <message>Before continuing, please backup the Ranger Admin database 
and Ranger Audit database on the following host(s): {{hosts.all}}. If audit 
database size is too large (greater than 3GB) then follow the below 
instructions:
+            1. Backup the audit table from audit database.
+            2. Truncate audit table.
+            3. Follow upgrade process and once completed then restore audit 
data to audit table.</message>
         </task>
       </execute-stage>
 
@@ -661,9 +664,37 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
+
+        <post-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-downgrade>
       </component>
 
       <component name="RANGER_USERSYNC">
@@ -675,6 +706,20 @@
 
     <service name="RANGER_KMS">
       <component name="RANGER_KMS_SERVER">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>

http://git-wip-us.apache.org/repos/asf/ambari/blob/0f40f37c/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml
----------------------------------------------------------------------
diff --git 
a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml 
b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml
index 5bc360e..1d606bc 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.4.xml
@@ -449,9 +449,37 @@
 
     <service name="RANGER">
       <component name="RANGER_ADMIN">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger database schema">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>
+
+        <post-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-upgrade>
+
+        <post-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Applying Ranger java patches">
+            <script>scripts/ranger_admin.py</script>
+            <function>setup_ranger_java_patches</function>
+          </task>
+        </post-downgrade>
       </component>
 
       <component name="RANGER_USERSYNC">
@@ -463,6 +491,20 @@
 
     <service name="RANGER_KMS">
       <component name="RANGER_KMS_SERVER">
+        <pre-upgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Upgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-upgrade>
+
+        <pre-downgrade>
+          <task xsi:type="execute" hosts="any" sequential="true" 
summary="Downgrading Ranger KMS database schema">
+            <script>scripts/kms_server.py</script>
+            <function>setup_ranger_kms_database</function>
+          </task>
+        </pre-downgrade>
+
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>

Reply via email to