You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jo...@apache.org on 2016/05/16 23:45:21 UTC

[1/3] ambari git commit: AMBARI-16687 - Configuration Tasks Are Being Skipped During Upgrade (jonathanhurley)

Repository: ambari
Updated Branches:
  refs/heads/trunk b2ece8c2b -> 1c60f6350


http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
index 45e2f94..1287d57 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/config-upgrade.xml
@@ -53,6 +53,18 @@
                      replace-with="" />
 
           </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hbase_audit_db">
+            <type>ranger-hbase-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+
         </changes>
       </component>
     </service>
@@ -68,6 +80,10 @@
             <type>tez-site</type>
             <set key="tez.lib.uris" value="/hdp/apps/${hdp.version}/tez/tez.tar.gz"/>
           </definition>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_tez_client_adjust_tez_lib_uris_property">
+            <type>tez-site</type>
+            <set key="tez.lib.uris" value="/hdp/apps/${hdp.version}/tez/tez.tar.gz"/>
+          </definition>
         </changes>
       </component>
     </service>
@@ -158,6 +174,43 @@
             <transfer operation="delete" delete-key="hive.server2.authentication.kerberos.principal" if-key="hive.server2.authentication" if-type="hive-site" if-value="custom"/>
           </definition>
 
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hive_audit_db">
+            <type>ranger-hive-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_hive_server_set_transport_mode">
+            <condition type="hive-site" key="hive.server2.transport.mode" value="binary">
+              <type>hive-site</type>
+              <key>hive.server2.thrift.port</key>
+              <value>10010</value>
+            </condition>
+            <condition type="hive-site" key="hive.server2.transport.mode" value="http">
+              <type>hive-site</type>
+              <key>hive.server2.http.port</key>
+              <value>10011</value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_hive_server_restore_transport_mode_on_downgrade">
+            <condition type="hive-site" key="hive.server2.transport.mode" value="binary">
+              <type>hive-site</type>
+              <key>hive.server2.thrift.port</key>
+              <value>10000</value>
+            </condition>
+            <condition type="hive-site" key="hive.server2.transport.mode" value="http">
+              <type>hive-site</type>
+              <key>hive.server2.http.port</key>
+              <value>10001</value>
+            </condition>
+          </definition>
+
         </changes>
       </component>
       <component name="WEBHCAT_SERVER">
@@ -170,72 +223,203 @@
             <replace key="templeton.hcat" find="/usr/hdp/current/hive-client" replace-with="/usr/hdp/${hdp.version}/hive"/>
             <set key="templeton.hive.extra.files" value="/usr/hdp/${hdp.version}/tez/conf/tez-site.xml,/usr/hdp/${hdp.version}/tez,/usr/hdp/${hdp.version}/tez/lib"/>
           </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_webhcat_server_update_configuration_paths" summary="Updating Configuration Paths">
+            <type>webhcat-site</type>
+            <replace key="templeton.jar" find="/usr/hdp/current/hive-webhcat" replace-with="/usr/hdp/${hdp.version}/hive"/>
+            <replace key="templeton.libjars" find="/usr/hdp/current/zookeeper-client" replace-with="/usr/hdp/${hdp.version}/zookeeper,/usr/hdp/${hdp.version}/hive/lib/hive-common.jar"/>
+            <replace key="templeton.hadoop" find="/usr/hdp/current/hadoop-client" replace-with="/usr/hdp/${hdp.version}/hadoop"/>
+            <replace key="templeton.hcat" find="/usr/hdp/current/hive-client" replace-with="/usr/hdp/${hdp.version}/hive"/>
+            <set key="templeton.hive.extra.files" value="/usr/hdp/${hdp.version}/tez/conf/tez-site.xml,/usr/hdp/${hdp.version}/tez,/usr/hdp/${hdp.version}/tez/lib"/>
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="RANGER">
+      <component name="RANGER_ADMIN">
+        <changes>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_flag">
+            <type>ranger-env</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_admin_properties">
+            <type>admin-properties</type>
+            <transfer operation="delete" delete-key="audit_db_name" />
+            <transfer operation="delete" delete-key="audit_db_user" />
+            <transfer operation="delete" delete-key="audit_db_password" />
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_ranger_admin_site">
+            <type>ranger-admin-site</type>
+            <set key="ranger.audit.source.type" value="solr"/>
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.driver" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.url" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.user" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.password" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.credential.alias" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.dialect" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="RANGER_KMS">
+      <component name="RANGER_KMS_SERVER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kms_audit_db">
+            <type>ranger-kms-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="HDFS">
+      <component name="NAMENODE">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_4_0_0_namenode_ha_adjustments">
+            <type>hdfs-site</type>
+            <transfer operation="delete" delete-key="dfs.namenode.rpc-address" if-type="hdfs-site" if-key="dfs.nameservices" if-key-state="present"/>
+            <transfer operation="delete" delete-key="dfs.namenode.http-address" if-type="hdfs-site" if-key="dfs.nameservices" if-key-state="present"/>
+            <transfer operation="delete" delete-key="dfs.namenode.https-address" if-type="hdfs-site" if-key="dfs.nameservices" if-key-state="present"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db">
+            <type>ranger-hdfs-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="SPARK">
+      <component name="SPARK_JOBHISTORYSERVER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_4_0_0_spark_jobhistoryserver">
+            <type>spark-defaults</type>
+            <transfer operation="delete" delete-key="spark.yarn.services" />
+            <set key="spark.history.provider" value="org.apache.spark.deploy.history.FsHistoryProvider"/>
+          </definition>
+        </changes>
+      </component>
+      <component name="SPARK_THRIFTSERVER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_4_0_0_spark_thriftserver">
+            <type>spark-thrift-sparkconf</type>
+            <transfer operation="delete" delete-key="spark.yarn.executor.memoryOverhead" />
+            <transfer operation="delete" delete-key="spark.yarn.driver.memoryOverhead" />
+            <transfer operation="delete" delete-key="spark.yarn.scheduler.heartbeat.interval-ms" />
+            <transfer operation="delete" delete-key="spark.yarn.max.executor.failures" />
+            <transfer operation="delete" delete-key="spark.yarn.containerLauncherMaxThreads" />
+            <transfer operation="delete" delete-key="spark.yarn.submit.file.replication" />
+            <transfer operation="delete" delete-key="spark.yarn.preserve.staging.files" />
+            <transfer operation="delete" delete-key="spark.yarn.max.executor.failures" />
+          </definition>
         </changes>
       </component>
     </service>
-  </services>
 
-  <service name="HDFS">
-    <component name="NAMENODE">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_4_0_0_namenode_ha_adjustments">
-          <type>hdfs-site</type>
-          <transfer operation="delete" delete-key="dfs.namenode.rpc-address" if-type="hdfs-site" if-key="dfs.nameservices" if-key-state="present"/>
-          <transfer operation="delete" delete-key="dfs.namenode.http-address" if-type="hdfs-site" if-key="dfs.nameservices" if-key-state="present"/>
-          <transfer operation="delete" delete-key="dfs.namenode.https-address" if-type="hdfs-site" if-key="dfs.nameservices" if-key-state="present"/>
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="SPARK">
-    <component name="SPARK_JOBHISTORYSERVER">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_4_0_0_spark_jobhistoryserver">
-          <type>spark-defaults</type>
-          <transfer operation="delete" delete-key="spark.yarn.services" />
-          <set key="spark.history.provider" value="org.apache.spark.deploy.history.FsHistoryProvider"/>
-        </definition>
-      </changes>
-    </component>
-    <component name="SPARK_THRIFTSERVER">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_4_0_0_spark_thriftserver">
-          <type>spark-thrift-sparkconf</type>
-          <transfer operation="delete" delete-key="spark.yarn.executor.memoryOverhead" />
-          <transfer operation="delete" delete-key="spark.yarn.driver.memoryOverhead" />
-          <transfer operation="delete" delete-key="spark.yarn.scheduler.heartbeat.interval-ms" />
-          <transfer operation="delete" delete-key="spark.yarn.max.executor.failures" />
-          <transfer operation="delete" delete-key="spark.yarn.containerLauncherMaxThreads" />
-          <transfer operation="delete" delete-key="spark.yarn.submit.file.replication" />
-          <transfer operation="delete" delete-key="spark.yarn.preserve.staging.files" />
-          <transfer operation="delete" delete-key="spark.yarn.max.executor.failures" />
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="OOZIE">
-    <component name="OOZIE_SERVER">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_4_0_0_oozie_remove_service_classes" summary="Updating Oozie Service classes">
-          <type>oozie-site</type>
-          <replace key="oozie.services" find="org.apache.oozie.service.CoordinatorStoreService," replace-with="" />
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="KAFKA">
-    <component name="KAFKA_BROKER">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_4_0_0_kafka_broker_deprecate_port">
-          <type>kafka-broker</type>
-          <!-- Deprecate "port" property since "listeners" will be added. -->
-          <transfer operation="delete" delete-key="port"/>
-        </definition>
-      </changes>
-    </component>
-  </service>
+    <service name="OOZIE">
+      <component name="OOZIE_SERVER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_4_0_0_oozie_remove_service_classes" summary="Updating Oozie Service classes">
+            <type>oozie-site</type>
+            <replace key="oozie.services" find="org.apache.oozie.service.CoordinatorStoreService," replace-with="" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="KAFKA">
+      <component name="KAFKA_BROKER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_4_0_0_kafka_broker_deprecate_port">
+            <type>kafka-broker</type>
+            <!-- Deprecate "port" property since "listeners" will be added. -->
+            <transfer operation="delete" delete-key="port"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kafka_audit_db">
+            <type>ranger-kafka-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+
+        </changes>
+      </component>
+    </service>
+
+    <service name="YARN">
+      <component name="RESOURCEMANAGER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_yarn_audit_db">
+            <type>ranger-yarn-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="STORM">
+      <component name="NIMBUS">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_storm_audit_db">
+            <type>ranger-storm-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="KNOX">
+      <component name="KNOX_GATEWAY">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_knox_audit_db">
+            <type>ranger-knox-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+  </services>
 
 </upgrade-config-changes>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml
index 7873853..56cd6d0 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml
@@ -34,7 +34,6 @@
 
   <!-- Instructs the upgrade pack how to build the configuration pack -->
   <upgrade-path>
-    <intermediate-stack version="2.3"/>
     <intermediate-stack version="2.4"/>
   </upgrade-path>
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml
index 1cd2ffa..1e040e6 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/upgrade-2.5.xml
@@ -51,7 +51,6 @@
 
   <!-- Instructs the upgrade pack how to build the configuration pack -->
   <upgrade-path>
-    <intermediate-stack version="2.3"/>
     <intermediate-stack version="2.4"/>
   </upgrade-path>
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
index f71ef1a..dd0e456 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/config-upgrade.xml
@@ -27,6 +27,12 @@
             <type>tez-site</type>
             <set key="tez.lib.uris" value="/hdp/apps/${hdp.version}/tez/tez.tar.gz"/>
           </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_tez_client_adjust_tez_lib_uris_property">
+            <type>tez-site</type>
+            <set key="tez.lib.uris" value="/hdp/apps/${hdp.version}/tez/tez.tar.gz"/>
+          </definition>
+
         </changes>
       </component>
     </service>
@@ -60,8 +66,20 @@
             </condition>
           </definition>
 
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hive_audit_db">
+            <type>ranger-hive-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+
         </changes>
       </component>
+
       <component name="WEBHCAT_SERVER">
         <changes>
           <definition xsi:type="configure" id="hdp_2_4_0_0_webhcat_server_update_configuration_paths" summary="Updating Configuration Paths">
@@ -76,6 +94,154 @@
       </component>
     </service>
 
+    <service name="RANGER">
+      <component name="RANGER_ADMIN">
+        <changes>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_flag">
+            <type>ranger-env</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_admin_properties">
+            <type>admin-properties</type>
+            <transfer operation="delete" delete-key="audit_db_name" />
+            <transfer operation="delete" delete-key="audit_db_user" />
+            <transfer operation="delete" delete-key="audit_db_password" />
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_ranger_admin_site">
+            <type>ranger-admin-site</type>
+            <set key="ranger.audit.source.type" value="solr"/>
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.driver" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.url" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.user" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.password" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.credential.alias" />
+            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.dialect" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="RANGER_KMS">
+      <component name="RANGER_KMS_SERVER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kms_audit_db">
+            <type>ranger-kms-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="HDFS">
+      <component name="NAMENODE">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db">
+            <type>ranger-hdfs-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="YARN">
+      <component name="RESOURCEMANAGER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_yarn_audit_db">
+            <type>ranger-yarn-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="KAFKA">
+      <component name="KAFKA_BROKER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kafka_audit_db">
+            <type>ranger-kafka-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="STORM">
+      <component name="NIMBUS">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_storm_audit_db">
+            <type>ranger-storm-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="HBASE">
+      <component name="HBASE_MASTER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hbase_audit_db">
+            <type>ranger-hbase-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="KNOX">
+      <component name="KNOX_GATEWAY">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_knox_audit_db">
+            <type>ranger-knox-audit</type>
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
+            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
+            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
+          </definition>
+        </changes>
+      </component>
+    </service>
 
   </services>
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml
index 9c6a02d..6e27da6 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.4/upgrades/upgrade-2.5.xml
@@ -509,7 +509,6 @@
         <pre-downgrade /> <!--  no-op to prevent config changes on downgrade -->
 
         <pre-upgrade>
-          <task xsi:type="configure" id="hdp_2_4_0_0_namenode_ha_adjustments"/>
           <task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db" />
         </pre-upgrade>
 
@@ -712,18 +711,12 @@
     <service name="SPARK">
       <component name="SPARK_JOBHISTORYSERVER">
         <pre-downgrade /> <!--  no-op to prevent config changes on downgrade -->
-        <pre-upgrade>
-          <task xsi:type="configure" id="hdp_2_4_0_0_spark_jobhistoryserver"/>
-        </pre-upgrade>
         <upgrade>
           <task xsi:type="restart-task" />
         </upgrade>
       </component>
       <component name="SPARK_THRIFTSERVER">
         <pre-downgrade /> <!--  no-op to prevent config changes on downgrade -->
-        <pre-upgrade>
-          <task xsi:type="configure" id="hdp_2_4_0_0_spark_thriftserver"/>
-        </pre-upgrade>
         <upgrade>
           <task xsi:type="restart-task"/>
         </upgrade>
@@ -738,8 +731,6 @@
     <service name="OOZIE">
       <component name="OOZIE_SERVER">
         <pre-upgrade>
-          <task xsi:type="configure" id="hdp_2_4_0_0_oozie_remove_service_classes" />
-
           <task xsi:type="server_action" summary="Adjusting Oozie properties" class="org.apache.ambari.server.serveraction.upgrades.OozieConfigCalculation"/>
 
           <task xsi:type="execute" hosts="all" sequential="true" summary="Shut down all Oozie servers">
@@ -796,7 +787,6 @@
     <service name="KAFKA">
       <component name="KAFKA_BROKER">
         <pre-upgrade>
-          <task xsi:type="configure" id ="hdp_2_4_0_0_kafka_broker_deprecate_port"/>
           <task xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kafka_audit_db" />
         </pre-upgrade>
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
index a7dbba3..5211276 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/config-upgrade.xml
@@ -19,18 +19,6 @@
 <upgrade-config-changes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
 
   <services>
-
-    <service name="TEZ">
-      <component name="TEZ_CLIENT">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_tez_client_adjust_tez_lib_uris_property">
-            <type>tez-site</type>
-            <set key="tez.lib.uris" value="/hdp/apps/${hdp.version}/tez/tez.tar.gz"/>
-          </definition>
-        </changes>
-      </component>
-    </service>
-
     <service name="HIVE">
       <component name="HIVE_SERVER">
         <changes>
@@ -59,183 +47,9 @@
               <value>10001</value>
             </condition>
           </definition>
-
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hive_audit_db">
-            <type>ranger-hive-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-
-        </changes>
-      </component>
-      <component name="WEBHCAT_SERVER">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_webhcat_server_update_configuration_paths" summary="Updating Configuration Paths">
-            <type>webhcat-site</type>
-            <replace key="templeton.jar" find="/usr/hdp/current/hive-webhcat" replace-with="/usr/hdp/${hdp.version}/hive"/>
-            <replace key="templeton.libjars" find="/usr/hdp/current/zookeeper-client" replace-with="/usr/hdp/${hdp.version}/zookeeper,/usr/hdp/${hdp.version}/hive/lib/hive-common.jar"/>
-            <replace key="templeton.hadoop" find="/usr/hdp/current/hadoop-client" replace-with="/usr/hdp/${hdp.version}/hadoop"/>
-            <replace key="templeton.hcat" find="/usr/hdp/current/hive-client" replace-with="/usr/hdp/${hdp.version}/hive"/>
-            <set key="templeton.hive.extra.files" value="/usr/hdp/${hdp.version}/tez/conf/tez-site.xml,/usr/hdp/${hdp.version}/tez,/usr/hdp/${hdp.version}/tez/lib"/>
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="RANGER">
-      <component name="RANGER_ADMIN">
-        <changes>
-
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_flag">
-            <type>ranger-env</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db"/>
-          </definition>
-
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_admin_properties">
-            <type>admin-properties</type>
-            <transfer operation="delete" delete-key="audit_db_name" />
-            <transfer operation="delete" delete-key="audit_db_user" />
-            <transfer operation="delete" delete-key="audit_db_password" />
-          </definition>
-
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_audit_db_ranger_admin_site">
-            <type>ranger-admin-site</type>
-            <set key="ranger.audit.source.type" value="solr"/>
-            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.driver" />
-            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.url" />
-            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.user" />
-            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.password" />
-            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.credential.alias" />
-            <transfer operation="delete" delete-key="ranger.jpa.audit.jdbc.dialect" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="HDFS">
-      <component name="NAMENODE">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hdfs_audit_db">
-            <type>ranger-hdfs-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="HBASE">
-      <component name="HBASE_MASTER">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_hbase_audit_db">
-            <type>ranger-hbase-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="KNOX">
-      <component name="KNOX_GATEWAY">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_knox_audit_db">
-            <type>ranger-knox-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="STORM">
-      <component name="NIMBUS">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_storm_audit_db">
-            <type>ranger-storm-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="YARN">
-      <component name="RESOURCEMANAGER">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_yarn_audit_db">
-            <type>ranger-yarn-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
         </changes>
       </component>
     </service>
-
-    <service name="KAFKA">
-      <component name="KAFKA_BROKER">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kafka_audit_db">
-            <type>ranger-kafka-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
-    <service name="RANGER_KMS">
-      <component name="RANGER_KMS_SERVER">
-        <changes>
-          <definition xsi:type="configure" id="hdp_2_5_0_0_remove_ranger_kms_audit_db">
-            <type>ranger-kms-audit</type>
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.url" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.user" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.password" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.jdbc.driver" />
-            <transfer operation="delete" delete-key="xasecure.audit.credential.provider.file" />
-            <transfer operation="delete" delete-key="xasecure.audit.destination.db.batch.filespool.dir" />
-          </definition>
-        </changes>
-      </component>
-    </service>
-
   </services>
 
 </upgrade-config-changes>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
index 2e5c002..5616cb4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml
@@ -283,10 +283,6 @@
         <task xsi:type="server_action" summary="Verifying LZO codec path for Tez" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath"/>
       </execute-stage>
 
-      <execute-stage service="TEZ" component="TEZ_CLIENT" title="Apply config changes for Tez">
-        <task xsi:type="configure" id="hdp_2_5_0_0_tez_client_adjust_tez_lib_uris_property"/>
-      </execute-stage>
-
       <!--OOZIE-->
       <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Apply config changes for Oozie Server">
         <task xsi:type="server_action" summary="Adjusting Oozie properties" class="org.apache.ambari.server.serveraction.upgrades.OozieConfigCalculation"/>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
index 1745de8..d755516 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.5/upgrades/upgrade-2.5.xml
@@ -643,8 +643,6 @@
     <service name="TEZ">
       <component name="TEZ_CLIENT">
         <pre-upgrade>
-          <task xsi:type="configure" id="hdp_2_5_0_0_tez_client_adjust_tez_lib_uris_property"/>
-
           <task xsi:type="server_action" summary="Verifying LZO codec path for Tez" class="org.apache.ambari.server.serveraction.upgrades.FixLzoCodecPath"/>
         </pre-upgrade>
         <upgrade>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
index 92043f0..8f53f6a 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/internal/UpgradeResourceProviderTest.java
@@ -304,7 +304,8 @@ public class UpgradeResourceProviderTest {
     assertEquals("This is a manual task with a placeholder of placeholder-rendered-properly",
         parseSingleMessage(zookeeperUpgradeItems.get(0).getText()));
     assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(1).getText());
-    assertEquals("Skipping Configuration Task 2.2.0", zookeeperUpgradeItems.get(2).getText());
+    assertEquals("Updating configuration zookeeper-newconfig",
+        zookeeperUpgradeItems.get(2).getText());
     assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(3).getText());
     assertEquals("Verifying Skipped Failures", zookeeperUpgradeItems.get(4).getText());
 
@@ -352,7 +353,8 @@ public class UpgradeResourceProviderTest {
     List<UpgradeItemEntity> zookeeperUpgradeItems = zookeeperGroup.getItems();
     assertEquals(3, zookeeperUpgradeItems.size());
     assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(0).getText());
-    assertEquals("Skipping Configuration Task 2.2.0", zookeeperUpgradeItems.get(1).getText());
+    assertEquals("Updating configuration zookeeper-newconfig",
+        zookeeperUpgradeItems.get(1).getText());
     assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(2).getText());
 
     UpgradeGroupEntity postClusterGroup = upgradeGroups.get(1);
@@ -397,7 +399,8 @@ public class UpgradeResourceProviderTest {
     assertEquals(4, zookeeperUpgradeItems.size());
 
     assertEquals("Restarting ZooKeeper Server on h1", zookeeperUpgradeItems.get(0).getText());
-    assertEquals("Skipping Configuration Task 2.2.0", zookeeperUpgradeItems.get(1).getText());
+    assertEquals("Updating configuration zookeeper-newconfig",
+        zookeeperUpgradeItems.get(1).getText());
     assertEquals("Service Check ZooKeeper", zookeeperUpgradeItems.get(2).getText());
     assertEquals("Verifying Skipped Failures", zookeeperUpgradeItems.get(3).getText());
 
@@ -1236,7 +1239,7 @@ public class UpgradeResourceProviderTest {
         group.getItems().get(0).getText().contains("placeholder of placeholder-rendered-properly"));
 
     assertTrue(group.getItems().get(1).getText().contains("Restarting"));
-    assertTrue(group.getItems().get(2).getText().contains("Skipping"));
+    assertTrue(group.getItems().get(2).getText().contains("Updating"));
     assertTrue(group.getItems().get(3).getText().contains("Service Check"));
 
     ActionManager am = injector.getInstance(ActionManager.class);

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java b/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
index 771f830..1ca486e 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/orm/InMemoryDefaultTestModule.java
@@ -25,7 +25,6 @@ import java.util.Set;
 import java.util.concurrent.atomic.AtomicReference;
 
 import org.apache.ambari.server.audit.AuditLogger;
-import org.apache.ambari.server.audit.AuditLoggerDefaultImpl;
 import org.apache.ambari.server.configuration.Configuration;
 import org.apache.ambari.server.controller.ControllerModule;
 import org.easymock.EasyMock;
@@ -35,6 +34,8 @@ import com.google.inject.AbstractModule;
 
 public class InMemoryDefaultTestModule extends AbstractModule {
 
+  Properties properties = new Properties();
+
   /**
    * Saves all {@link ControllerModule} logic, but changes bean discovery mechanism.
    * In this implementation scan for {@link org.apache.ambari.server.EagerSingleton}
@@ -59,8 +60,6 @@ public class InMemoryDefaultTestModule extends AbstractModule {
     }
   }
 
-  Properties properties = new Properties();
-
   @Override
   protected void configure() {
     String stacks = "src/test/resources/stacks";
@@ -72,11 +71,25 @@ public class InMemoryDefaultTestModule extends AbstractModule {
       sharedResourcesDir = ClassLoader.getSystemClassLoader().getResource("").getPath();
     }
 
-    properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY, "in-memory");
-    properties.setProperty(Configuration.METADATA_DIR_PATH, stacks);
-    properties.setProperty(Configuration.SERVER_VERSION_FILE, version);
-    properties.setProperty(Configuration.OS_VERSION_KEY, "centos5");
-    properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY, sharedResourcesDir);
+    if (!properties.containsKey(Configuration.SERVER_PERSISTENCE_TYPE_KEY)) {
+      properties.setProperty(Configuration.SERVER_PERSISTENCE_TYPE_KEY, "in-memory");
+    }
+
+    if (!properties.containsKey(Configuration.METADATA_DIR_PATH)) {
+      properties.setProperty(Configuration.METADATA_DIR_PATH, stacks);
+    }
+
+    if (!properties.containsKey(Configuration.SERVER_VERSION_FILE)) {
+      properties.setProperty(Configuration.SERVER_VERSION_FILE, version);
+    }
+
+    if (!properties.containsKey(Configuration.OS_VERSION_KEY)) {
+      properties.setProperty(Configuration.OS_VERSION_KEY, "centos5");
+    }
+
+    if (!properties.containsKey(Configuration.SHARED_RESOURCES_DIR_KEY)) {
+      properties.setProperty(Configuration.SHARED_RESOURCES_DIR_KEY, sharedResourcesDir);
+    }
 
     try {
       install(new BeanDefinitionsCachingTestControllerModule(properties));
@@ -88,6 +101,14 @@ public class InMemoryDefaultTestModule extends AbstractModule {
     }
   }
 
+  /**
+   * Gets the properties that will be used to initialize the system. If a
+   * property is placed here which {@link #configure()} also sets, then
+   * {@link #configure()} will not set it, and instead take the property that
+   * the test has set.
+   *
+   * @return
+   */
   public Properties getProperties() {
     return properties;
   }

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
new file mode 100644
index 0000000..0c45347
--- /dev/null
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/ConfigUpgradeValidityTest.java
@@ -0,0 +1,192 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.ambari.server.state.stack;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.ambari.server.api.services.AmbariMetaInfo;
+import org.apache.ambari.server.configuration.Configuration;
+import org.apache.ambari.server.controller.internal.UpgradeResourceProvider.ConfigurationPackBuilder;
+import org.apache.ambari.server.orm.GuiceJpaInitializer;
+import org.apache.ambari.server.orm.InMemoryDefaultTestModule;
+import org.apache.ambari.server.state.StackId;
+import org.apache.ambari.server.state.StackInfo;
+import org.apache.ambari.server.state.stack.UpgradePack.ProcessingComponent;
+import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping;
+import org.apache.ambari.server.state.stack.upgrade.ClusterGrouping.ExecuteStage;
+import org.apache.ambari.server.state.stack.upgrade.ConfigureTask;
+import org.apache.ambari.server.state.stack.upgrade.Direction;
+import org.apache.ambari.server.state.stack.upgrade.Grouping;
+import org.apache.ambari.server.state.stack.upgrade.Task;
+import org.apache.ambari.server.state.stack.upgrade.Task.Type;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.google.inject.Guice;
+import com.google.inject.Injector;
+import com.google.inject.persist.PersistService;
+
+import junit.framework.Assert;
+
+/**
+ * Tests that for every upgrade pack found, that all referenced configuration
+ * IDs exist in the {@code config-upgrade.xml} which will be used/created.
+ */
+public class ConfigUpgradeValidityTest {
+
+  private static final Logger LOG = LoggerFactory.getLogger(ConfigUpgradeValidityTest.class);
+
+  private Injector injector;
+  private AmbariMetaInfo ambariMetaInfo;
+
+  private int validatedConfigCount = 0;
+
+  @Before
+  public void before() throws Exception {
+    validatedConfigCount = 0;
+
+    // ensure that we use the real stacks
+    InMemoryDefaultTestModule testModule = new InMemoryDefaultTestModule();
+    testModule.getProperties().put(Configuration.METADATA_DIR_PATH, "src/main/resources/stacks");
+
+    injector = Guice.createInjector(testModule);
+    injector.getInstance(GuiceJpaInitializer.class);
+
+    ambariMetaInfo = injector.getInstance(AmbariMetaInfo.class);
+  }
+
+  @After
+  public void teardown() {
+    injector.getInstance(PersistService.class).stop();
+  }
+
+  /**
+   * Tests that every ID specified in an upgrade pack actually exists in the
+   * created {@link ConfigUpgradePack}.
+   *
+   * @throws Exception
+   */
+  @Test
+  public void testConfigurationDefinitionsExist() throws Exception {
+    Collection<StackInfo> stacks = ambariMetaInfo.getStacks();
+    Assert.assertFalse(stacks.isEmpty());
+
+    for( StackInfo stack : stacks ){
+      if (!stack.isActive()) {
+        LOG.info("Skipping configuration validity test for {}", new StackId(stack));
+        continue;
+      }
+
+      Map<String, UpgradePack> upgradePacks = ambariMetaInfo.getUpgradePacks(stack.getName(), stack.getVersion());
+      for (String key : upgradePacks.keySet()) {
+        UpgradePack upgradePack = upgradePacks.get(key);
+        StackId sourceStack = new StackId(stack);
+
+        ConfigUpgradePack configUpgradePack = ConfigurationPackBuilder.build(upgradePack,
+            sourceStack);
+
+        // do configure tasks in the group section
+        List<Grouping> groups = upgradePack.getGroups(Direction.UPGRADE);
+        for( Grouping group : groups ){
+          if( group instanceof ClusterGrouping ){
+            ClusterGrouping clusterGrouping = (ClusterGrouping)group;
+            if( null != clusterGrouping.executionStages ){
+              for( ExecuteStage executionStage : clusterGrouping.executionStages ){
+                if( executionStage.task.getType() == Type.CONFIGURE ){
+                  ConfigureTask configureTask = (ConfigureTask) executionStage.task;
+                  assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
+                      sourceStack);
+                }
+              }
+            }
+          }
+        }
+
+        // do tasks in the "processing" section
+        Map<String, Map<String, ProcessingComponent>> tasks = upgradePack.getTasks();
+        for( Map<String,ProcessingComponent> value : tasks.values() ){
+          for( ProcessingComponent processingComponent : value.values() ){
+            if (null != processingComponent.preTasks) {
+              for (Task preTask : processingComponent.preTasks) {
+                if (preTask.getType() == Type.CONFIGURE) {
+                  ConfigureTask configureTask = (ConfigureTask) preTask;
+                  assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
+                      sourceStack);
+                }
+              }
+
+              if (null != processingComponent.tasks) {
+                for (Task task : processingComponent.tasks) {
+                  if (task.getType() == Type.CONFIGURE) {
+                    ConfigureTask configureTask = (ConfigureTask) task;
+                    assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
+                        sourceStack);
+                  }
+                }
+              }
+
+              if (null != processingComponent.postTasks) {
+                for (Task postTask : processingComponent.postTasks) {
+                  if (postTask.getType() == Type.CONFIGURE) {
+                    ConfigureTask configureTask = (ConfigureTask) postTask;
+                    assertIdDefinitionExists(configureTask.id, configUpgradePack, upgradePack,
+                        sourceStack);
+                  }
+                }
+              }
+            }
+          }
+        }
+      }
+    }
+
+    // make sure we actually checked a bunch of configs :)
+    Assert.assertTrue(validatedConfigCount > 100);
+  }
+
+  /**
+   * Asserts that an ID exists in a {@link ConfigUpgradePack}, throwing an
+   * informative message if it does not.
+   *
+   * @param id
+   * @param configUpgradePack
+   * @param upgradePack
+   * @param sourceStackId
+   */
+  private void assertIdDefinitionExists(String id, ConfigUpgradePack configUpgradePack,
+      UpgradePack upgradePack, StackId sourceStackId) {
+    Assert.assertNotNull(id);
+
+    if (configUpgradePack.enumerateConfigChangesByID().containsKey(id)) {
+      validatedConfigCount++;
+
+      LOG.info("Validated {} from upgrade pack {} for {}", id, upgradePack.getTargetStack(),
+          sourceStackId);
+
+      return;
+    }
+
+    Assert.fail(String.format("Missing %s in upgrade from %s to %s (%s)", id, sourceStackId,
+        upgradePack.getTargetStack(), upgradePack.getType()));
+  }
+}

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/config-upgrade.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/config-upgrade.xml
index cb034d0..44f9e02 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/config-upgrade.xml
+++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/config-upgrade.xml
@@ -40,6 +40,12 @@
             <type>hdfs-site</type>
             <set key="myproperty" value="mynewvalue"/>
           </definition>
+
+          <definition xsi:type="configure" id="hdp_2_2_0_nn_pre_upgrade">
+            <type>hdfs-site</type>
+            <set key="myproperty" value="mynewvalue"/>
+          </definition>
+
           <definition xsi:type="configure" id="hdp_2_1_1_nn_test">
             <type>hdfs-site</type>
             <key>myproperty</key>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml
index 623b45c..6dc143a 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml
+++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test.xml
@@ -146,7 +146,7 @@
           <task xsi:type="restart-task" />
         </upgrade>
         <post-upgrade>
-          <task xsi:type="configure" id="2.2.0" />
+          <task xsi:type="configure" id="hdp_2_1_1_zookeeper_new_config_type" />
         </post-upgrade>
       </component>
     </service>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml
index 4932e92..23e8bbc 100644
--- a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml
+++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_test_partial.xml
@@ -159,7 +159,7 @@
           <task xsi:type="restart-task" />
         </upgrade>
         <post-upgrade>
-          <task xsi:type="configure" id="2.2.0" />
+          <task xsi:type="configure" id="hdp_2_1_1_zookeeper_new_config_type" />
         </post-upgrade>
       </component>
     </service>


[3/3] ambari git commit: AMBARI-16687 - Configuration Tasks Are Being Skipped During Upgrade (jonathanhurley)

Posted by jo...@apache.org.
AMBARI-16687 - Configuration Tasks Are Being Skipped During Upgrade (jonathanhurley)


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

Branch: refs/heads/trunk
Commit: 1c60f63504be0f72878a8395ccefb0165d0c996e
Parents: b2ece8c
Author: Jonathan Hurley <jh...@hortonworks.com>
Authored: Mon May 16 14:48:10 2016 -0400
Committer: Jonathan Hurley <jh...@hortonworks.com>
Committed: Mon May 16 19:44:54 2016 -0400

----------------------------------------------------------------------
 .../internal/UpgradeResourceProvider.java       |   89 +-
 .../server/stack/StackDefinitionDirectory.java  |    2 +-
 .../HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml |    1 -
 .../stacks/HDP/2.2/upgrades/config-upgrade.xml  | 1284 +++++++++---------
 .../HDP/2.2/upgrades/nonrolling-upgrade-2.4.xml |    1 -
 .../stacks/HDP/2.2/upgrades/upgrade-2.4.xml     |    1 -
 .../stacks/HDP/2.3/upgrades/config-upgrade.xml  |  310 ++++-
 .../HDP/2.3/upgrades/nonrolling-upgrade-2.5.xml |    1 -
 .../stacks/HDP/2.3/upgrades/upgrade-2.5.xml     |    1 -
 .../stacks/HDP/2.4/upgrades/config-upgrade.xml  |  166 +++
 .../stacks/HDP/2.4/upgrades/upgrade-2.5.xml     |   10 -
 .../stacks/HDP/2.5/upgrades/config-upgrade.xml  |  186 ---
 .../HDP/2.5/upgrades/nonrolling-upgrade-2.5.xml |    4 -
 .../stacks/HDP/2.5/upgrades/upgrade-2.5.xml     |    2 -
 .../internal/UpgradeResourceProviderTest.java   |   11 +-
 .../server/orm/InMemoryDefaultTestModule.java   |   37 +-
 .../state/stack/ConfigUpgradeValidityTest.java  |  192 +++
 .../HDP/2.1.1/upgrades/config-upgrade.xml       |    6 +
 .../stacks/HDP/2.1.1/upgrades/upgrade_test.xml  |    2 +-
 .../HDP/2.1.1/upgrades/upgrade_test_partial.xml |    2 +-
 20 files changed, 1358 insertions(+), 950 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
index b069862..fb3ae69 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/controller/internal/UpgradeResourceProvider.java
@@ -815,7 +815,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
     if (pack.getType() == UpgradeType.NON_ROLLING) {
       boolean foundGroupWithNameUPDATE_DESIRED_STACK_ID = false;
       for (UpgradeGroupHolder group : groups) {
-        if (group.name.equalsIgnoreCase(this.CONST_UPGRADE_GROUP_NAME)) {
+        if (group.name.equalsIgnoreCase(CONST_UPGRADE_GROUP_NAME)) {
           foundGroupWithNameUPDATE_DESIRED_STACK_ID = true;
           break;
         }
@@ -823,7 +823,7 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
 
       if (foundGroupWithNameUPDATE_DESIRED_STACK_ID == false) {
         throw new AmbariException(String.format("NonRolling Upgrade Pack %s requires a Group with name %s",
-            pack.getName(), this.CONST_UPGRADE_GROUP_NAME));
+            pack.getName(), CONST_UPGRADE_GROUP_NAME));
       }
     }
 
@@ -846,27 +846,12 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
       applyStackAndProcessConfigurations(targetStackId.getStackName(), cluster, version, direction, pack, userName);
     }
 
-    // Resolve or build a proper config upgrade pack
-    List<UpgradePack.IntermediateStack> intermediateStacks = pack.getIntermediateStacks();
-    ConfigUpgradePack configUpgradePack;
-
-    // No intermediate stacks
-    if (intermediateStacks == null || intermediateStacks.isEmpty()) {
-      configUpgradePack = s_metaProvider.get().getConfigUpgradePack(
-              targetStackId.getStackName(), targetStackId.getStackVersion());
-    } else {
-      // For cross-stack upgrade, follow all major stacks and merge a new config upgrade pack from all
-      // target stacks involved into upgrade
-      ArrayList<ConfigUpgradePack> intermediateConfigUpgradePacks = new ArrayList<>();
-      // Config change definitions are taken from all stacks up to (but excluding) target stack
-      intermediateStacks = intermediateStacks.subList(0, intermediateStacks.size() - 1);
-      for (UpgradePack.IntermediateStack intermediateStack : intermediateStacks) {
-        ConfigUpgradePack intermediateConfigUpgradePack = s_metaProvider.get().getConfigUpgradePack(
-                targetStackId.getStackName(), intermediateStack.version);
-        intermediateConfigUpgradePacks.add(intermediateConfigUpgradePack);
-      }
-      configUpgradePack = ConfigUpgradePack.merge(intermediateConfigUpgradePacks);
-    }
+    // resolve or build a proper config upgrade pack - always start out with the config pack
+    // for the current stack and merge into that
+    //
+    // HDP 2.2 to 2.3 should start with the config-upgrade.xml from HDP 2.2
+    // HDP 2.2 to 2.4 should start with HDP 2.2 and merge in HDP 2.3's config-upgrade.xml
+    ConfigUpgradePack configUpgradePack = ConfigurationPackBuilder.build(pack, sourceStackId);
 
     // TODO: for now, all service components are transitioned to upgrading state
     // TODO: When performing patch upgrade, we should only target supported services/components
@@ -1718,4 +1703,62 @@ public class UpgradeResourceProvider extends AbstractControllerResourceProvider
       }
     }
   }
+
+  /**
+   * Builds the correct {@link ConfigUpgradePack} based on the upgrade and
+   * source stack.
+   * <ul>
+   * <li>HDP 2.2 to HDP 2.2
+   * <ul>
+   * <li>Uses {@code config-upgrade.xml} from HDP 2.2
+   * </ul>
+   * <li>HDP 2.2 to HDP 2.3
+   * <ul>
+   * <li>Uses {@code config-upgrade.xml} from HDP 2.2
+   * </ul>
+   * <li>HDP 2.2 to HDP 2.4
+   * <ul>
+   * <li>Uses {@code config-upgrade.xml} from HDP 2.2 merged with the one from
+   * HDP 2.3
+   * </ul>
+   * <ul>
+   */
+  public static final class ConfigurationPackBuilder {
+
+    /**
+     * Builds the configurations to use for the specified upgrade and source
+     * stack.
+     *
+     * @param upgradePack
+     *          the upgrade pack (not {@code null}).
+     * @param sourceStackId
+     *          the source stack (not {@code null}).
+     * @return the {@link ConfigUpgradePack} which contains all of the necessary
+     *         configuration definitions for the upgrade.
+     */
+    public static ConfigUpgradePack build(UpgradePack upgradePack, StackId sourceStackId) {
+      List<UpgradePack.IntermediateStack> intermediateStacks = upgradePack.getIntermediateStacks();
+      ConfigUpgradePack configUpgradePack = s_metaProvider.get().getConfigUpgradePack(
+          sourceStackId.getStackName(), sourceStackId.getStackVersion());
+
+      // merge in any intermediate stacks
+      if (null != intermediateStacks) {
+
+        // start out with the source stack's config pack
+        ArrayList<ConfigUpgradePack> configPacksToMerge = Lists.newArrayList(configUpgradePack);
+
+        for (UpgradePack.IntermediateStack intermediateStack : intermediateStacks) {
+          ConfigUpgradePack intermediateConfigUpgradePack = s_metaProvider.get().getConfigUpgradePack(
+              sourceStackId.getStackName(), intermediateStack.version);
+
+          configPacksToMerge.add(intermediateConfigUpgradePack);
+        }
+
+        // merge all together
+        configUpgradePack = ConfigUpgradePack.merge(configPacksToMerge);
+      }
+
+      return configUpgradePack;
+    }
+  }
 }

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDefinitionDirectory.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDefinitionDirectory.java b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDefinitionDirectory.java
index f2e00fe..a385a3d 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDefinitionDirectory.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/stack/StackDefinitionDirectory.java
@@ -37,7 +37,7 @@ public abstract class StackDefinitionDirectory {
     }
   };
 
-  protected static final String CONFIG_UPGRADE_XML_FILENAME_PREFIX = "config-upgrade.xml";
+  public static final String CONFIG_UPGRADE_XML_FILENAME_PREFIX = "config-upgrade.xml";
 
   /**
    * underlying directory

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
index 564b5bd..4c44afe 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml
@@ -37,7 +37,6 @@
   <!-- Instructs the upgrade pack how to build the configuration pack -->
   <upgrade-path>
     <intermediate-stack version="2.2"/>
-    <intermediate-stack version="2.3"/>
   </upgrade-path>
 
   <order>


[2/3] ambari git commit: AMBARI-16687 - Configuration Tasks Are Being Skipped During Upgrade (jonathanhurley)

Posted by jo...@apache.org.
http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/config-upgrade.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/config-upgrade.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/config-upgrade.xml
index 257893f..c537c77 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/config-upgrade.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/config-upgrade.xml
@@ -529,657 +529,657 @@
         </changes>
       </component>
     </service>
-  </services>
 
-  <service name="STORM">
-    <component name="NIMBUS">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_2_0_0_nimbus_no_ranger" summary="Nimbus properties without Ranger">
-          <!-- In HDP 2.1, RANGER was not present, so this property must not be added even though it is new in the
-           HDP 2.2 stack. The property is only valid in HDP 2.2 and higher if RANGER is present. -->
-          <type>storm-site</type>
-          <transfer operation="delete" delete-key="nimbus.authorizer"/>
-        </definition>
-        <definition id="hdp_2_3_0_0_update_storm_env">
-          <type>storm-env</type>
-          <set key="storm_logs_supported" value="true"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_monitor_freq_adjustment">
-          <condition type="storm-site" key="nimbus.monitor.freq.secs" value="10">
+    <service name="STORM">
+      <component name="NIMBUS">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_2_0_0_nimbus_no_ranger" summary="Nimbus properties without Ranger">
+            <!-- In HDP 2.1, RANGER was not present, so this property must not be added even though it is new in the
+             HDP 2.2 stack. The property is only valid in HDP 2.2 and higher if RANGER is present. -->
+            <type>storm-site</type>
+            <transfer operation="delete" delete-key="nimbus.authorizer"/>
+          </definition>
+          <definition id="hdp_2_3_0_0_update_storm_env">
+            <type>storm-env</type>
+            <set key="storm_logs_supported" value="true"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_monitor_freq_adjustment">
+            <condition type="storm-site" key="nimbus.monitor.freq.secs" value="10">
+              <type>storm-site</type>
+              <key>nimbus.monitor.freq.secs</key>
+              <value>120</value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_convert_nimbus_host_to_seeds"
+                      summary="Converting nimbus.host into nimbus.seeds">
             <type>storm-site</type>
-            <key>nimbus.monitor.freq.secs</key>
-            <value>120</value>
-          </condition>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_convert_nimbus_host_to_seeds"
-                    summary="Converting nimbus.host into nimbus.seeds">
-          <type>storm-site</type>
-          <transfer operation="copy" from-key="nimbus.host" to-key="nimbus.seeds" coerce-to="yaml-array"/>
-          <transfer operation="delete" delete-key="nimbus.host"/>
-          <replace key="nimbus.authorizer" find="com.xasecure.authorization.storm.authorizer.XaSecureStormAuthorizer"
-                   replace-with="org.apache.ranger.authorization.storm.authorizer.RangerStormAuthorizer"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_update_env_vars"
-                    summary="Updating Storm home and configuration environment variables">
-          <type>storm-env</type>
-          <replace key="content" find="# export STORM_CONF_DIR=&quot;&quot;"
-                   replace-with="export STORM_CONF_DIR={{conf_dir}}"/>
-          <replace key="content" find="export STORM_HOME=/usr/hdp/current/storm-client"
-                   replace-with="export STORM_HOME={{storm_component_home_dir}}"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_configure_ranger_policy"
-                    summary="Configuring Ranger Storm Policy">
-          <type>ranger-storm-policymgr-ssl</type>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_KEYSTORE_FILE_PATH"
-                    to-key="xasecure.policymgr.clientssl.keystore"
-                    default-value="/usr/hdp/current/storm-client/conf/ranger-plugin-keystore.jks"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_KEYSTORE_PASSWORD"
-                    to-key="xasecure.policymgr.clientssl.keystore.password" default-value="myKeyFilePassword"
-                    mask="true"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_TRUSTSTORE_FILE_PATH"
-                    to-key="xasecure.policymgr.clientssl.truststore"
-                    default-value="/usr/hdp/current/storm-client/conf/ranger-plugin-truststore.jks"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_TRUSTSTORE_PASSWORD"
-                    to-key="xasecure.policymgr.clientssl.truststore.password" default-value="changeit" mask="true"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_configure_ranger_audit"
-                    summary="Configuring Ranger Storm Audit">
-          <type>ranger-storm-audit</type>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.DB.IS_ENABLED"
-                    to-key="xasecure.audit.destination.db" default-value="true"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties"
-                    from-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY" to-key="xasecure.audit.destination.hdfs.dir"
-                    default-value="hdfs://NAMENODE_HOSTNAME:8020/ranger/audit"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.HDFS.IS_ENABLED"
-                    to-key="xasecure.audit.destination.hdfs" default-value="true"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties"
-                    from-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"
-                    to-key="xasecure.audit.destination.hdfs.batch.filespool.dir"
-                    default-value="/var/log/storm/audit/hdfs/spool"/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.DB.USER_NAME"
-                    to-key="xasecure.audit.destination.db.user" default-value=""/>
-          <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.DB.PASSWORD"
-                    to-key="xasecure.audit.destination.db.password" default-value="" mask="true"/>
-          <set key="xasecure.audit.credential.provider.file" value="jceks://file{{credential_file}}"/>
-          <set key="xasecure.audit.destination.solr" value="false"/>
-          <set key="xasecure.audit.destination.solr.urls" value="{{ranger_audit_solr_urls}}"/>
-          <set key="xasecure.audit.destination.solr.zookeepers" value="none"/>
-          <set key="xasecure.audit.destination.solr.batch.filespool.dir" value="/var/log/storm/audit/solr/spool"/>
-          <set key="xasecure.audit.destination.db.jdbc.driver" value="{{jdbc_driver}}"/>
-          <set key="xasecure.audit.destination.db.jdbc.url" value="{{audit_jdbc_url}}"/>
-          <set key="xasecure.audit.provider.summary.enabled" value="false"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_remove_deprecated_ranger_properties"
-                    summary="Removing Deprecated Ranger Storm Plugin Configurations">
-          <type>ranger-storm-plugin-properties</type>
-          <transfer operation="delete" delete-key="SSL_KEYSTORE_FILE_PATH"/>
-          <transfer operation="delete" delete-key="SSL_KEYSTORE_PASSWORD"/>
-          <transfer operation="delete" delete-key="SSL_TRUSTSTORE_FILE_PATH"/>
-          <transfer operation="delete" delete-key="SSL_TRUSTSTORE_PASSWORD"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.IS_ENABLED"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.IS_ENABLED"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.USER_NAME"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.PASSWORD"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FILE"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FILE"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="SQL_CONNECTOR_JAR"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.FLAVOUR"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.DATABASE_NAME"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.HOSTNAME"/>
-          <transfer operation="delete" delete-key="REPOSITORY_NAME"/>
-          <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="RANGER">
-    <component name="RANGER_ADMIN">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_env">
-          <type>ranger-env</type>
-          <set key="xml_configurations_supported" value="true"/>
-          <set key="xasecure.audit.destination.solr" value="false"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin" summary="Updating Ranger Admin">
-          <type>ranger-admin-site</type>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_CLIENT_AUTH"
-                    to-key="ranger.service.https.attrib.clientAuth" default-value=""/>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_KEYSTORE_FILE"
-                    to-key="ranger.https.attrib.keystore.file" default-value=""/>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_KEYSTORE_PASS"
-                    to-key="ranger.service.https.attrib.keystore.pass" default-value="" mask="true"/>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_KEY_ALIAS"
-                    to-key="ranger.service.https.attrib.keystore.keyalias" default-value=""/>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_SERVICE_PORT"
-                    to-key="ranger.service.https.port" default-value=""/>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTP_ENABLED"
-                    to-key="ranger.service.http.enabled" default-value=""/>
-          <transfer operation="copy" from-type="ranger-site" from-key="HTTP_SERVICE_PORT"
-                    to-key="ranger.service.http.port" default-value=""/>
-
-          <transfer operation="copy" from-type="admin-properties" from-key="authServiceHostName"
-                    to-key="ranger.unixauth.service.hostname" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="authServicePort"
-                    to-key="ranger.unixauth.service.port" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="authentication_method"
-                    to-key="ranger.authentication.method" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="remoteLoginEnabled"
-                    to-key="ranger.unixauth.remote.login.enabled" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_url" to-key="ranger.ldap.url"
-                    default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_userDNpattern"
-                    to-key="ranger.ldap.user.dnpattern" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_groupSearchBase"
-                    to-key="ranger.ldap.group.searchbase" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_groupSearchFilter"
-                    to-key="ranger.ldap.group.searchfilter" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_groupRoleAttribute"
-                    to-key="ranger.ldap.group.roleattribute" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_ad_domain"
-                    to-key="ranger.ldap.ad.domain" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_ad_url" to-key="ranger.ldap.ad.url"
-                    default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="db_user" to-key="ranger.jpa.jdbc.user"
-                    default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="db_password"
-                    to-key="ranger.jpa.jdbc.password" default-value="" mask="true"/>
-          <transfer operation="copy" from-type="admin-properties" from-key="audit_db_user"
-                    to-key="ranger.jpa.audit.jdbc.user" default-value=""/>
-          <transfer operation="copy" from-type="admin-properties" from-key="audit_db_password"
-                    to-key="ranger.jpa.audit.jdbc.password" default-value="" mask="true"/>
-
-          <set key="ranger.externalurl" value="{{ranger_external_url}}"/>
-          <set key="ranger.audit.source.type" value="db"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_site">
-          <type>ranger-site</type>
-          <transfer operation="delete" delete-key="HTTPS_CLIENT_AUTH"/>
-          <transfer operation="delete" delete-key="HTTPS_KEYSTORE_FILE"/>
-          <transfer operation="delete" delete-key="HTTPS_KEYSTORE_PASS"/>
-          <transfer operation="delete" delete-key="HTTPS_KEY_ALIAS"/>
-          <transfer operation="delete" delete-key="HTTPS_SERVICE_PORT"/>
-          <transfer operation="delete" delete-key="HTTP_ENABLED"/>
-          <transfer operation="delete" delete-key="HTTP_SERVICE_PORT"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_delete_oracle_home">
-          <type>ranger-env</type>
-          <transfer operation="delete" delete-key="oracle_home"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin_hdfs_audit">
-          <condition type="ranger-env" key="xasecure.audit.destination.hdfs" value="false">
+            <transfer operation="copy" from-key="nimbus.host" to-key="nimbus.seeds" coerce-to="yaml-array"/>
+            <transfer operation="delete" delete-key="nimbus.host"/>
+            <replace key="nimbus.authorizer" find="com.xasecure.authorization.storm.authorizer.XaSecureStormAuthorizer"
+                     replace-with="org.apache.ranger.authorization.storm.authorizer.RangerStormAuthorizer"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_update_env_vars"
+                      summary="Updating Storm home and configuration environment variables">
+            <type>storm-env</type>
+            <replace key="content" find="# export STORM_CONF_DIR=&quot;&quot;"
+                     replace-with="export STORM_CONF_DIR={{conf_dir}}"/>
+            <replace key="content" find="export STORM_HOME=/usr/hdp/current/storm-client"
+                     replace-with="export STORM_HOME={{storm_component_home_dir}}"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_configure_ranger_policy"
+                      summary="Configuring Ranger Storm Policy">
+            <type>ranger-storm-policymgr-ssl</type>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_KEYSTORE_FILE_PATH"
+                      to-key="xasecure.policymgr.clientssl.keystore"
+                      default-value="/usr/hdp/current/storm-client/conf/ranger-plugin-keystore.jks"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_KEYSTORE_PASSWORD"
+                      to-key="xasecure.policymgr.clientssl.keystore.password" default-value="myKeyFilePassword"
+                      mask="true"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_TRUSTSTORE_FILE_PATH"
+                      to-key="xasecure.policymgr.clientssl.truststore"
+                      default-value="/usr/hdp/current/storm-client/conf/ranger-plugin-truststore.jks"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="SSL_TRUSTSTORE_PASSWORD"
+                      to-key="xasecure.policymgr.clientssl.truststore.password" default-value="changeit" mask="true"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_configure_ranger_audit"
+                      summary="Configuring Ranger Storm Audit">
+            <type>ranger-storm-audit</type>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.DB.IS_ENABLED"
+                      to-key="xasecure.audit.destination.db" default-value="true"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties"
+                      from-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY" to-key="xasecure.audit.destination.hdfs.dir"
+                      default-value="hdfs://NAMENODE_HOSTNAME:8020/ranger/audit"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.HDFS.IS_ENABLED"
+                      to-key="xasecure.audit.destination.hdfs" default-value="true"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties"
+                      from-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"
+                      to-key="xasecure.audit.destination.hdfs.batch.filespool.dir"
+                      default-value="/var/log/storm/audit/hdfs/spool"/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.DB.USER_NAME"
+                      to-key="xasecure.audit.destination.db.user" default-value=""/>
+            <transfer operation="copy" from-type="ranger-storm-plugin-properties" from-key="XAAUDIT.DB.PASSWORD"
+                      to-key="xasecure.audit.destination.db.password" default-value="" mask="true"/>
+            <set key="xasecure.audit.credential.provider.file" value="jceks://file{{credential_file}}"/>
+            <set key="xasecure.audit.destination.solr" value="false"/>
+            <set key="xasecure.audit.destination.solr.urls" value="{{ranger_audit_solr_urls}}"/>
+            <set key="xasecure.audit.destination.solr.zookeepers" value="none"/>
+            <set key="xasecure.audit.destination.solr.batch.filespool.dir" value="/var/log/storm/audit/solr/spool"/>
+            <set key="xasecure.audit.destination.db.jdbc.driver" value="{{jdbc_driver}}"/>
+            <set key="xasecure.audit.destination.db.jdbc.url" value="{{audit_jdbc_url}}"/>
+            <set key="xasecure.audit.provider.summary.enabled" value="false"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_nimbus_remove_deprecated_ranger_properties"
+                      summary="Removing Deprecated Ranger Storm Plugin Configurations">
+            <type>ranger-storm-plugin-properties</type>
+            <transfer operation="delete" delete-key="SSL_KEYSTORE_FILE_PATH"/>
+            <transfer operation="delete" delete-key="SSL_KEYSTORE_PASSWORD"/>
+            <transfer operation="delete" delete-key="SSL_TRUSTSTORE_FILE_PATH"/>
+            <transfer operation="delete" delete-key="SSL_TRUSTSTORE_PASSWORD"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.IS_ENABLED"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.IS_ENABLED"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.USER_NAME"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.PASSWORD"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FILE"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FILE"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="SQL_CONNECTOR_JAR"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.FLAVOUR"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.DATABASE_NAME"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.HOSTNAME"/>
+            <transfer operation="delete" delete-key="REPOSITORY_NAME"/>
+            <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="RANGER">
+      <component name="RANGER_ADMIN">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_env">
             <type>ranger-env</type>
-            <key>xasecure.audit.destination.hdfs</key>
-            <value>false</value>
-          </condition>
-        </definition>
+            <set key="xml_configurations_supported" value="true"/>
+            <set key="xasecure.audit.destination.solr" value="false"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin" summary="Updating Ranger Admin">
+            <type>ranger-admin-site</type>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_CLIENT_AUTH"
+                      to-key="ranger.service.https.attrib.clientAuth" default-value=""/>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_KEYSTORE_FILE"
+                      to-key="ranger.https.attrib.keystore.file" default-value=""/>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_KEYSTORE_PASS"
+                      to-key="ranger.service.https.attrib.keystore.pass" default-value="" mask="true"/>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_KEY_ALIAS"
+                      to-key="ranger.service.https.attrib.keystore.keyalias" default-value=""/>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTPS_SERVICE_PORT"
+                      to-key="ranger.service.https.port" default-value=""/>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTP_ENABLED"
+                      to-key="ranger.service.http.enabled" default-value=""/>
+            <transfer operation="copy" from-type="ranger-site" from-key="HTTP_SERVICE_PORT"
+                      to-key="ranger.service.http.port" default-value=""/>
+
+            <transfer operation="copy" from-type="admin-properties" from-key="authServiceHostName"
+                      to-key="ranger.unixauth.service.hostname" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="authServicePort"
+                      to-key="ranger.unixauth.service.port" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="authentication_method"
+                      to-key="ranger.authentication.method" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="remoteLoginEnabled"
+                      to-key="ranger.unixauth.remote.login.enabled" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_url" to-key="ranger.ldap.url"
+                      default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_userDNpattern"
+                      to-key="ranger.ldap.user.dnpattern" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_groupSearchBase"
+                      to-key="ranger.ldap.group.searchbase" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_groupSearchFilter"
+                      to-key="ranger.ldap.group.searchfilter" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_groupRoleAttribute"
+                      to-key="ranger.ldap.group.roleattribute" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_ad_domain"
+                      to-key="ranger.ldap.ad.domain" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="xa_ldap_ad_url" to-key="ranger.ldap.ad.url"
+                      default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="db_user" to-key="ranger.jpa.jdbc.user"
+                      default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="db_password"
+                      to-key="ranger.jpa.jdbc.password" default-value="" mask="true"/>
+            <transfer operation="copy" from-type="admin-properties" from-key="audit_db_user"
+                      to-key="ranger.jpa.audit.jdbc.user" default-value=""/>
+            <transfer operation="copy" from-type="admin-properties" from-key="audit_db_password"
+                      to-key="ranger.jpa.audit.jdbc.password" default-value="" mask="true"/>
+
+            <set key="ranger.externalurl" value="{{ranger_external_url}}"/>
+            <set key="ranger.audit.source.type" value="db"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_site">
+            <type>ranger-site</type>
+            <transfer operation="delete" delete-key="HTTPS_CLIENT_AUTH"/>
+            <transfer operation="delete" delete-key="HTTPS_KEYSTORE_FILE"/>
+            <transfer operation="delete" delete-key="HTTPS_KEYSTORE_PASS"/>
+            <transfer operation="delete" delete-key="HTTPS_KEY_ALIAS"/>
+            <transfer operation="delete" delete-key="HTTPS_SERVICE_PORT"/>
+            <transfer operation="delete" delete-key="HTTP_ENABLED"/>
+            <transfer operation="delete" delete-key="HTTP_SERVICE_PORT"/>
+          </definition>
 
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin_db_audit">
-          <condition type="ranger-env" key="xasecure.audit.destination.db" value="true">
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_delete_oracle_home">
             <type>ranger-env</type>
-            <key>xasecure.audit.destination.db</key>
-            <value>true</value>
-          </condition>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync" summary="Updating Ranger Usersync">
-          <type>ranger-ugsync-site</type>
-          <transfer operation="copy" from-type="usersync-properties" from-key="CRED_KEYSTORE_FILENAME"
-                    to-key="ranger.usersync.credstore.filename" default-value="/etc/ranger/usersync/ugsync.jceks"/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="MIN_UNIX_USER_ID_TO_SYNC"
-                    to-key="ranger.usersync.unix.minUserId" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_BIND_DN"
-                    to-key="ranger.usersync.ldap.binddn" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_BIND_PASSWORD"
-                    to-key="ranger.usersync.ldap.ldapbindpassword" default-value="" mask="true"/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_GROUPNAME_CASE_CONVERSION"
-                    to-key="ranger.usersync.ldap.groupname.caseconversion" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_URL"
-                    to-key="ranger.usersync.ldap.url" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USERNAME_CASE_CONVERSION"
-                    to-key="ranger.usersync.ldap.username.caseconversion" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE"
-                    to-key="ranger.usersync.ldap.user.groupnameattribute" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_NAME_ATTRIBUTE"
-                    to-key="ranger.usersync.ldap.user.nameattribute" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_OBJECT_CLASS"
-                    to-key="ranger.usersync.ldap.user.objectclass" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_SEARCH_BASE"
-                    to-key="ranger.usersync.ldap.user.searchbase" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_SEARCH_FILTER"
-                    to-key="ranger.usersync.ldap.user.searchfilter" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_SEARCH_SCOPE"
-                    to-key="ranger.usersync.ldap.user.searchscope" default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="logdir" to-key="ranger.usersync.logdir"
-                    default-value=""/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_SOURCE"
-                    to-key="ranger.usersync.sync.source" default-value="unix"/>
-          <transfer operation="copy" from-type="usersync-properties" from-key="POLICY_MGR_URL"
-                    to-key="ranger.usersync.policymanager.baseURL" default-value="{{ranger_external_url}}"/>
-
-          <set key="ranger.usersync.source.impl.class" value=""/>
-          <set key="ranger.usersync.ldap.searchBase" value=""/>
-          <set key="ranger.usersync.group.memberattributename" value=""/>
-          <set key="ranger.usersync.group.nameattribute" value=""/>
-          <set key="ranger.usersync.group.objectclass" value=""/>
-          <set key="ranger.usersync.group.searchbase" value=""/>
-          <set key="ranger.usersync.group.searchenabled" value=""/>
-          <set key="ranger.usersync.group.searchfilter" value=""/>
-          <set key="ranger.usersync.group.searchscope" value=""/>
-          <set key="ranger.usersync.group.usermapsyncenabled" value=""/>
-          <set key="ranger.usersync.sleeptimeinmillisbetweensynccycle" value="60000"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync_sync_source">
-          <condition type="usersync-properties" key="SYNC_SOURCE" value="unix">
-            <type>ranger-ugsync-site</type>
-            <key>ranger.usersync.source.impl.class</key>
-            <value>org.apache.ranger.unixusersync.process.UnixUserGroupBuilder</value>
-          </condition>
+            <transfer operation="delete" delete-key="oracle_home"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin_hdfs_audit">
+            <condition type="ranger-env" key="xasecure.audit.destination.hdfs" value="false">
+              <type>ranger-env</type>
+              <key>xasecure.audit.destination.hdfs</key>
+              <value>false</value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin_db_audit">
+            <condition type="ranger-env" key="xasecure.audit.destination.db" value="true">
+              <type>ranger-env</type>
+              <key>xasecure.audit.destination.db</key>
+              <value>true</value>
+            </condition>
+          </definition>
 
-          <condition type="usersync-properties" key="SYNC_SOURCE" value="ldap">
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync" summary="Updating Ranger Usersync">
             <type>ranger-ugsync-site</type>
-            <key>ranger.usersync.source.impl.class</key>
-            <value>org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder</value>
-          </condition>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync_properties">
-          <type>usersync-properties</type>
-          <transfer operation="delete" delete-key="CRED_KEYSTORE_FILENAME"/>
-          <transfer operation="delete" delete-key="MIN_UNIX_USER_ID_TO_SYNC"/>
-          <transfer operation="delete" delete-key="SYNC_INTERVAL"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_BIND_DN"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_BIND_PASSWORD"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_GROUPNAME_CASE_CONVERSION"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_URL"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USERNAME_CASE_CONVERSION"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USER_NAME_ATTRIBUTE"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USER_OBJECT_CLASS"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USER_SEARCH_BASE"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USER_SEARCH_FILTER"/>
-          <transfer operation="delete" delete-key="SYNC_LDAP_USER_SEARCH_SCOPE"/>
-          <transfer operation="delete" delete-key="logdir"/>
-          <transfer operation="delete" delete-key="SYNC_SOURCE"/>
-          <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="HBASE">
-    <component name="HBASE_MASTER">
-      <changes>
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_adjust_phoenix_scheduler_factory">
-          <condition type="hbase-env" key="phoenix_sql_enabled" value="true">
+            <transfer operation="copy" from-type="usersync-properties" from-key="CRED_KEYSTORE_FILENAME"
+                      to-key="ranger.usersync.credstore.filename" default-value="/etc/ranger/usersync/ugsync.jceks"/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="MIN_UNIX_USER_ID_TO_SYNC"
+                      to-key="ranger.usersync.unix.minUserId" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_BIND_DN"
+                      to-key="ranger.usersync.ldap.binddn" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_BIND_PASSWORD"
+                      to-key="ranger.usersync.ldap.ldapbindpassword" default-value="" mask="true"/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_GROUPNAME_CASE_CONVERSION"
+                      to-key="ranger.usersync.ldap.groupname.caseconversion" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_URL"
+                      to-key="ranger.usersync.ldap.url" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USERNAME_CASE_CONVERSION"
+                      to-key="ranger.usersync.ldap.username.caseconversion" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE"
+                      to-key="ranger.usersync.ldap.user.groupnameattribute" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_NAME_ATTRIBUTE"
+                      to-key="ranger.usersync.ldap.user.nameattribute" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_OBJECT_CLASS"
+                      to-key="ranger.usersync.ldap.user.objectclass" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_SEARCH_BASE"
+                      to-key="ranger.usersync.ldap.user.searchbase" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_SEARCH_FILTER"
+                      to-key="ranger.usersync.ldap.user.searchfilter" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_LDAP_USER_SEARCH_SCOPE"
+                      to-key="ranger.usersync.ldap.user.searchscope" default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="logdir" to-key="ranger.usersync.logdir"
+                      default-value=""/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="SYNC_SOURCE"
+                      to-key="ranger.usersync.sync.source" default-value="unix"/>
+            <transfer operation="copy" from-type="usersync-properties" from-key="POLICY_MGR_URL"
+                      to-key="ranger.usersync.policymanager.baseURL" default-value="{{ranger_external_url}}"/>
+
+            <set key="ranger.usersync.source.impl.class" value=""/>
+            <set key="ranger.usersync.ldap.searchBase" value=""/>
+            <set key="ranger.usersync.group.memberattributename" value=""/>
+            <set key="ranger.usersync.group.nameattribute" value=""/>
+            <set key="ranger.usersync.group.objectclass" value=""/>
+            <set key="ranger.usersync.group.searchbase" value=""/>
+            <set key="ranger.usersync.group.searchenabled" value=""/>
+            <set key="ranger.usersync.group.searchfilter" value=""/>
+            <set key="ranger.usersync.group.searchscope" value=""/>
+            <set key="ranger.usersync.group.usermapsyncenabled" value=""/>
+            <set key="ranger.usersync.sleeptimeinmillisbetweensynccycle" value="60000"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync_sync_source">
+            <condition type="usersync-properties" key="SYNC_SOURCE" value="unix">
+              <type>ranger-ugsync-site</type>
+              <key>ranger.usersync.source.impl.class</key>
+              <value>org.apache.ranger.unixusersync.process.UnixUserGroupBuilder</value>
+            </condition>
+
+            <condition type="usersync-properties" key="SYNC_SOURCE" value="ldap">
+              <type>ranger-ugsync-site</type>
+              <key>ranger.usersync.source.impl.class</key>
+              <value>org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder</value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_update_ranger_usersync_properties">
+            <type>usersync-properties</type>
+            <transfer operation="delete" delete-key="CRED_KEYSTORE_FILENAME"/>
+            <transfer operation="delete" delete-key="MIN_UNIX_USER_ID_TO_SYNC"/>
+            <transfer operation="delete" delete-key="SYNC_INTERVAL"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_BIND_DN"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_BIND_PASSWORD"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_GROUPNAME_CASE_CONVERSION"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_URL"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USERNAME_CASE_CONVERSION"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USER_GROUP_NAME_ATTRIBUTE"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USER_NAME_ATTRIBUTE"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USER_OBJECT_CLASS"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USER_SEARCH_BASE"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USER_SEARCH_FILTER"/>
+            <transfer operation="delete" delete-key="SYNC_LDAP_USER_SEARCH_SCOPE"/>
+            <transfer operation="delete" delete-key="logdir"/>
+            <transfer operation="delete" delete-key="SYNC_SOURCE"/>
+            <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="HBASE">
+      <component name="HBASE_MASTER">
+        <changes>
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_adjust_phoenix_scheduler_factory">
+            <condition type="hbase-env" key="phoenix_sql_enabled" value="true">
+              <type>hbase-site</type>
+              <key>hbase.region.server.rpc.scheduler.factory.class</key>
+              <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory
+              </value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_adjust_phoenix_rpc_controller_factory">
+            <condition type="hbase-env" key="phoenix_sql_enabled" value="true">
+              <type>hbase-site</type>
+              <key>hbase.rpc.controllerfactory.class</key>
+              <value>
+                org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory
+              </value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_set_global_memstore_size">
             <type>hbase-site</type>
-            <key>hbase.region.server.rpc.scheduler.factory.class</key>
-            <value>org.apache.hadoop.hbase.ipc.PhoenixRpcSchedulerFactory
-            </value>
-          </condition>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_adjust_phoenix_rpc_controller_factory">
-          <condition type="hbase-env" key="phoenix_sql_enabled" value="true">
+            <transfer operation="copy" from-type="hbase-site"
+                      from-key="hbase.regionserver.global.memstore.upperLimit"
+                      to-key="hbase.regionserver.global.memstore.size"
+                      default-value="0.4"/>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_adjust_phoenix_indexed_wal_edit_codec">
+            <condition type="hbase-env" key="phoenix_sql_enabled" value="true">
+              <type>hbase-site</type>
+              <key>hbase.regionserver.wal.codec</key>
+              <value>
+                org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
+              </value>
+            </condition>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_adjust_authorization_coprocessors"
+                      summary="Updating Authorization Coprocessors">
             <type>hbase-site</type>
-            <key>hbase.rpc.controllerfactory.class</key>
-            <value>
-              org.apache.hadoop.hbase.ipc.controller.ServerRpcControllerFactory
-            </value>
-          </condition>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_set_global_memstore_size">
-          <type>hbase-site</type>
-          <transfer operation="copy" from-type="hbase-site"
-                    from-key="hbase.regionserver.global.memstore.upperLimit"
-                    to-key="hbase.regionserver.global.memstore.size"
-                    default-value="0.4"/>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_adjust_phoenix_indexed_wal_edit_codec">
-          <condition type="hbase-env" key="phoenix_sql_enabled" value="true">
+            <replace key="hbase.coprocessor.master.classes"
+                     find="com.xasecure.authorization.hbase.XaSecureAuthorizationCoprocessor"
+                     replace-with="org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor"/>
+            <replace key="hbase.coprocessor.region.classes"
+                     find="com.xasecure.authorization.hbase.XaSecureAuthorizationCoprocessor"
+                     replace-with="org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor"/>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_transition_ranger_hbase_policy"
+                      summary="Transitioning Ranger HBase Policy">
+            <type>ranger-hbase-policymgr-ssl</type>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="SSL_KEYSTORE_FILE_PATH"
+                      to-key="xasecure.policymgr.clientssl.keystore"
+                      default-value="/usr/hdp/current/hbase-client/conf/ranger-plugin-keystore.jks"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="SSL_KEYSTORE_PASSWORD"
+                      to-key="xasecure.policymgr.clientssl.keystore.password"
+                      mask="true" default-value="myKeyFilePassword"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="SSL_TRUSTSTORE_FILE_PATH"
+                      to-key="xasecure.policymgr.clientssl.truststore"
+                      default-value="/usr/hdp/current/hbase-client/conf/ranger-plugin-truststore.jks"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="SSL_TRUSTSTORE_PASSWORD"
+                      to-key="xasecure.policymgr.clientssl.truststore.password"
+                      mask="true" default-value="changeit"/>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_transition_ranger_hbase_audit"
+                      summary="Transitioning Ranger HBase Audit">
+            <type>ranger-hbase-audit</type>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="XAAUDIT.DB.IS_ENABLED"
+                      to-key="xasecure.audit.destination.db"
+                      default-value="false"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"
+                      to-key="xasecure.audit.destination.hdfs.dir"
+                      default-value="hdfs://NAMENODE_HOSTNAME:8020/ranger/audit"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="XAAUDIT.HDFS.IS_ENABLED"
+                      to-key="xasecure.audit.destination.hdfs"
+                      default-value="true"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"
+                      to-key="xasecure.audit.destination.hdfs.batch.filespool.dir"
+                      default-value="/var/log/hbase/audit/hdfs/spool"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="XAAUDIT.DB.USER_NAME"
+                      to-key="xasecure.audit.destination.db.user"
+                      default-value=""/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="XAAUDIT.DB.PASSWORD"
+                      to-key="xasecure.audit.destination.db.password"
+                      mask="true" default-value=""/>
+            <set key="xasecure.audit.credential.provider.file"
+                 value="jceks://file{{credential_file}}"/>
+            <set key="xasecure.audit.destination.solr" value="false"/>
+            <set key="xasecure.audit.destination.solr.urls"
+                 value="{{ranger_audit_solr_urls}}"/>
+            <set key="xasecure.audit.destination.solr.zookeepers" value="none"/>
+            <set key="xasecure.audit.destination.solr.batch.filespool.dir"
+                 value="/var/log/hbase/audit/solr/spool"/>
+            <set key="xasecure.audit.destination.db.jdbc.driver"
+                 value="{{jdbc_driver}}"/>
+            <set key="xasecure.audit.destination.db.jdbc.url"
+                 value="{{audit_jdbc_url}}"/>
+            <set key="xasecure.audit.provider.summary.enabled" value="true"/>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_copy_ranger_policies">
+            <type>ranger-hbase-security</type>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="UPDATE_XAPOLICIES_ON_GRANT_REVOKE"
+                      to-key="xasecure.hbase.update.xapolicies.on.grant.revoke"
+                      default-value="true"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="POLICY_MGR_URL"
+                      to-key="ranger.plugin.hbase.policy.rest.url"
+                      default-value="{{policymgr_mgr_url}}"/>
+            <transfer operation="copy"
+                      from-type="ranger-hbase-plugin-properties"
+                      from-key="REPOSITORY_NAME"
+                      to-key="ranger.plugin.hbase.service.name"
+                      default-value="{{repo_name}}"/>
+          </definition>
+
+          <definition xsi:type="configure"
+                      id="hdp_2_3_0_0_hbase_master_delete_old_ranger_properties">
+            <type>ranger-hbase-plugin-properties</type>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.DESTINTATION_FILE"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FILE"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="SQL_CONNECTOR_JAR"/>
+            <transfer operation="delete" delete-key="REPOSITORY_NAME"/>
+            <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
+            <transfer operation="delete"
+                      delete-key="UPDATE_XAPOLICIES_ON_GRANT_REVOKE"/>
+            <transfer operation="delete" delete-key="SSL_KEYSTORE_FILE_PATH"/>
+            <transfer operation="delete" delete-key="SSL_KEYSTORE_PASSWORD"/>
+            <transfer operation="delete" delete-key="SSL_TRUSTSTORE_FILE_PATH"/>
+            <transfer operation="delete" delete-key="SSL_TRUSTSTORE_PASSWORD"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.IS_ENABLED"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.IS_ENABLED"/>
+            <transfer operation="delete"
+                      delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.USER_NAME"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.PASSWORD"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.FLAVOUR"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.DATABASE_NAME"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.HOSTNAME"/>
+          </definition>
+
+          <!-- These HBASE configs changed in HDP 2.3.4.0, so upgrades like HDP 2.2 to 2.3.4.0+ still need them. -->
+          <definition xsi:type="configure" id="hdp_2_3_4_0_hbase_remove_local_indexing">
             <type>hbase-site</type>
-            <key>hbase.regionserver.wal.codec</key>
-            <value>
-              org.apache.hadoop.hbase.regionserver.wal.IndexedWALEditCodec
-            </value>
-          </condition>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_adjust_authorization_coprocessors"
-                    summary="Updating Authorization Coprocessors">
-          <type>hbase-site</type>
-          <replace key="hbase.coprocessor.master.classes"
-                   find="com.xasecure.authorization.hbase.XaSecureAuthorizationCoprocessor"
-                   replace-with="org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor"/>
-          <replace key="hbase.coprocessor.region.classes"
-                   find="com.xasecure.authorization.hbase.XaSecureAuthorizationCoprocessor"
-                   replace-with="org.apache.ranger.authorization.hbase.RangerAuthorizationCoprocessor"/>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_transition_ranger_hbase_policy"
-                    summary="Transitioning Ranger HBase Policy">
-          <type>ranger-hbase-policymgr-ssl</type>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="SSL_KEYSTORE_FILE_PATH"
-                    to-key="xasecure.policymgr.clientssl.keystore"
-                    default-value="/usr/hdp/current/hbase-client/conf/ranger-plugin-keystore.jks"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="SSL_KEYSTORE_PASSWORD"
-                    to-key="xasecure.policymgr.clientssl.keystore.password"
-                    mask="true" default-value="myKeyFilePassword"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="SSL_TRUSTSTORE_FILE_PATH"
-                    to-key="xasecure.policymgr.clientssl.truststore"
-                    default-value="/usr/hdp/current/hbase-client/conf/ranger-plugin-truststore.jks"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="SSL_TRUSTSTORE_PASSWORD"
-                    to-key="xasecure.policymgr.clientssl.truststore.password"
-                    mask="true" default-value="changeit"/>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_transition_ranger_hbase_audit"
-                    summary="Transitioning Ranger HBase Audit">
-          <type>ranger-hbase-audit</type>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="XAAUDIT.DB.IS_ENABLED"
-                    to-key="xasecure.audit.destination.db"
-                    default-value="false"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"
-                    to-key="xasecure.audit.destination.hdfs.dir"
-                    default-value="hdfs://NAMENODE_HOSTNAME:8020/ranger/audit"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="XAAUDIT.HDFS.IS_ENABLED"
-                    to-key="xasecure.audit.destination.hdfs"
-                    default-value="true"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"
-                    to-key="xasecure.audit.destination.hdfs.batch.filespool.dir"
-                    default-value="/var/log/hbase/audit/hdfs/spool"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="XAAUDIT.DB.USER_NAME"
-                    to-key="xasecure.audit.destination.db.user"
-                    default-value=""/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="XAAUDIT.DB.PASSWORD"
-                    to-key="xasecure.audit.destination.db.password"
-                    mask="true" default-value=""/>
-          <set key="xasecure.audit.credential.provider.file"
-               value="jceks://file{{credential_file}}"/>
-          <set key="xasecure.audit.destination.solr" value="false"/>
-          <set key="xasecure.audit.destination.solr.urls"
-               value="{{ranger_audit_solr_urls}}"/>
-          <set key="xasecure.audit.destination.solr.zookeepers" value="none"/>
-          <set key="xasecure.audit.destination.solr.batch.filespool.dir"
-               value="/var/log/hbase/audit/solr/spool"/>
-          <set key="xasecure.audit.destination.db.jdbc.driver"
-               value="{{jdbc_driver}}"/>
-          <set key="xasecure.audit.destination.db.jdbc.url"
-               value="{{audit_jdbc_url}}"/>
-          <set key="xasecure.audit.provider.summary.enabled" value="true"/>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_copy_ranger_policies">
-          <type>ranger-hbase-security</type>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="UPDATE_XAPOLICIES_ON_GRANT_REVOKE"
-                    to-key="xasecure.hbase.update.xapolicies.on.grant.revoke"
-                    default-value="true"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="POLICY_MGR_URL"
-                    to-key="ranger.plugin.hbase.policy.rest.url"
-                    default-value="{{policymgr_mgr_url}}"/>
-          <transfer operation="copy"
-                    from-type="ranger-hbase-plugin-properties"
-                    from-key="REPOSITORY_NAME"
-                    to-key="ranger.plugin.hbase.service.name"
-                    default-value="{{repo_name}}"/>
-        </definition>
-
-        <definition xsi:type="configure"
-                    id="hdp_2_3_0_0_hbase_master_delete_old_ranger_properties">
-          <type>ranger-hbase-plugin-properties</type>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.DESTINTATION_FILE"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FILE"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="SQL_CONNECTOR_JAR"/>
-          <transfer operation="delete" delete-key="REPOSITORY_NAME"/>
-          <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
-          <transfer operation="delete"
-                    delete-key="UPDATE_XAPOLICIES_ON_GRANT_REVOKE"/>
-          <transfer operation="delete" delete-key="SSL_KEYSTORE_FILE_PATH"/>
-          <transfer operation="delete" delete-key="SSL_KEYSTORE_PASSWORD"/>
-          <transfer operation="delete" delete-key="SSL_TRUSTSTORE_FILE_PATH"/>
-          <transfer operation="delete" delete-key="SSL_TRUSTSTORE_PASSWORD"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.IS_ENABLED"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.IS_ENABLED"/>
-          <transfer operation="delete"
-                    delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.USER_NAME"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.PASSWORD"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.FLAVOUR"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.DATABASE_NAME"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.HOSTNAME"/>
-        </definition>
-
-        <!-- These HBASE configs changed in HDP 2.3.4.0, so upgrades like HDP 2.2 to 2.3.4.0+ still need them. -->
-        <definition xsi:type="configure" id="hdp_2_3_4_0_hbase_remove_local_indexing">
-          <type>hbase-site</type>
-          <set key="phoenix.functions.allowUserDefinedFunctions" value="true"/>
-          <transfer operation="delete" delete-key="hbase.master.loadbalancer.class"
-                    if-key="hbase.master.loadbalancer.class"
-                    if-type="hbase-site"
-                    if-value="org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer"/>
-          <replace key="hbase.coprocessor.master.classes"
-                   find="org.apache.phoenix.hbase.index.master.IndexMasterObserver"
-                   replace-with=""/>
-          <replace key="hbase.coprocessor.regionserver.classes"
-                   find="org.apache.hadoop.hbase.regionserver.LocalIndexMerger"
-                   replace-with=""/>
-
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="OOZIE">
-    <component name="OOZIE_SERVER">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_3_0_0_oozie_remove_redundant_configurations">
-          <summary>Updating oozie-site to remove redundant configurations</summary>
-          <type>oozie-site</type>
-          <transfer operation="delete" delete-key="*" preserve-edits="true">
-            <keep-key>oozie.base.url</keep-key>
-            <keep-key>oozie.services.ext</keep-key>
-            <keep-key>oozie.db.schema.name</keep-key>
-            <keep-key>oozie.service.JPAService.jdbc.username</keep-key>
-            <keep-key>oozie.service.JPAService.jdbc.password</keep-key>
-            <keep-key>oozie.service.JPAService.jdbc.driver</keep-key>
-            <keep-key>oozie.service.JPAService.jdbc.url</keep-key>
-            <keep-key>oozie.service.AuthorizationService.security.enabled</keep-key>
-            <keep-key>oozie.authentication.type</keep-key>
-            <keep-key>oozie.authentication.simple.anonymous.allowed</keep-key>
-            <keep-key>oozie.authentication.kerberos.name.rules</keep-key>
-            <keep-key>oozie.service.HadoopAccessorService.hadoop.configurations</keep-key>
-            <keep-key>oozie.service.HadoopAccessorService.kerberos.enabled</keep-key>
-            <keep-key>oozie.service.URIHandlerService.uri.handlers</keep-key>
-
-            <!-- required by Falcon and should be preserved -->
-            <keep-key>oozie.service.ELService.ext.functions.coord-job-submit-instances</keep-key>
-            <keep-key>oozie.service.ELService.ext.functions.coord-action-create-inst</keep-key>
-            <keep-key>oozie.service.ELService.ext.functions.coord-action-create</keep-key>
-            <keep-key>oozie.service.ELService.ext.functions.coord-job-submit-data</keep-key>
-            <keep-key>oozie.service.ELService.ext.functions.coord-action-start</keep-key>
-            <keep-key>oozie.service.ELService.ext.functions.coord-sla-submit</keep-key>
-            <keep-key>oozie.service.ELService.ext.functions.coord-sla-create</keep-key>
-          </transfer>
-          <set key="oozie.credentials.credentialclasses"
-               value="hcat=org.apache.oozie.action.hadoop.HCatCredentials,hive2=org.apache.oozie.action.hadoop.Hive2Credentials"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_4_0_0_oozie_remove_service_classes" summary="Updating Oozie Service classes">
-          <type>oozie-site</type>
-          <replace key="oozie.services" find="org.apache.oozie.service.CoordinatorStoreService," replace-with="" />
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="KAFKA">
-    <component name="KAFKA_BROKER">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_3_0_0_kafka_broker_deprecate_port">
-          <type>kafka-broker</type>
-          <!-- Deprecate "port" property since "listeners" will be added. -->
-          <transfer operation="delete" delete-key="port"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_4_0_0_kafka_broker_deprecate_port">
-          <type>kafka-broker</type>
-          <!-- Deprecate "port" property since "listeners" will be added. -->
-          <transfer operation="delete" delete-key="port"/>
-        </definition>
-      </changes>
-    </component>
-  </service>
-
-  <service name="KNOX">
-    <component name="KNOX_GATEWAY">
-      <changes>
-        <definition xsi:type="configure" id="hdp_2_3_0_0_knox_configure_ranger_policy"
-                    summary="Configuring Ranger Knox Policy">
-          <type>ranger-knox-policymgr-ssl</type>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_KEYSTORE_FILE_PATH"
-                    to-key="xasecure.policymgr.clientssl.keystore"
-                    default-value="/usr/hdp/current/knox-server/conf/ranger-plugin-keystore.jks"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_KEYSTORE_PASSWORD"
-                    to-key="xasecure.policymgr.clientssl.keystore.password" default-value="myKeyFilePassword"
-                    mask="true"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_TRUSTSTORE_FILE_PATH"
-                    to-key="xasecure.policymgr.clientssl.truststore"
-                    default-value="/usr/hdp/current/knox-server/conf/ranger-plugin-truststore.jks"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_TRUSTSTORE_PASSWORD"
-                    to-key="xasecure.policymgr.clientssl.truststore.password" default-value="changeit" mask="true"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_knox_configure_ranger_knox_audit"
-                    summary="Configuring Ranger Knox Audit">
-          <type>ranger-knox-audit</type>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.DB.IS_ENABLED"
-                    to-key="xasecure.audit.destination.db" default-value="true"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties"
-                    from-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY" to-key="xasecure.audit.destination.hdfs.dir"
-                    default-value="hdfs://NAMENODE_HOSTNAME:8020/ranger/audit"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.HDFS.IS_ENABLED"
-                    to-key="xasecure.audit.destination.hdfs" default-value="true"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties"
-                    from-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"
-                    to-key="xasecure.audit.destination.hdfs.batch.filespool.dir"
-                    default-value="/var/log/knox/audit/hdfs/spool"/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.DB.USER_NAME"
-                    to-key="xasecure.audit.destination.db.user" default-value=""/>
-          <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.DB.PASSWORD"
-                    to-key="xasecure.audit.destination.db.password" default-value="" mask="true"/>
-          <set key="xasecure.audit.credential.provider.file" value="jceks://file{{credential_file}}"/>
-          <set key="xasecure.audit.destination.solr" value="false"/>
-          <set key="xasecure.audit.destination.solr.urls" value="{{ranger_audit_solr_urls}}"/>
-          <set key="xasecure.audit.destination.solr.zookeepers" value="none"/>
-          <set key="xasecure.audit.destination.solr.batch.filespool.dir" value="/var/log/knox/audit/solr/spool"/>
-          <set key="xasecure.audit.destination.db.jdbc.driver" value="{{jdbc_driver}}"/>
-          <set key="xasecure.audit.destination.db.jdbc.url" value="{{audit_jdbc_url}}"/>
-          <set key="xasecure.audit.provider.summary.enabled" value="false"/>
-        </definition>
-
-        <definition xsi:type="configure" id="hdp_2_3_0_0_knox_remove_deprecated_ranger_properties"
-                    summary="Removing Deprecated Ranger Knox Plugin Configurations">
-          <type>ranger-knox-plugin-properties</type>
-          <transfer operation="delete" delete-key="SSL_KEYSTORE_FILE_PATH"/>
-          <transfer operation="delete" delete-key="SSL_KEYSTORE_PASSWORD"/>
-          <transfer operation="delete" delete-key="SSL_TRUSTSTORE_FILE_PATH"/>
-          <transfer operation="delete" delete-key="SSL_TRUSTSTORE_PASSWORD"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.IS_ENABLED"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.IS_ENABLED"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.USER_NAME"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.PASSWORD"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FILE"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FILE"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS"/>
-          <transfer operation="delete" delete-key="SQL_CONNECTOR_JAR"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.FLAVOUR"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.DATABASE_NAME"/>
-          <transfer operation="delete" delete-key="XAAUDIT.DB.HOSTNAME"/>
-          <transfer operation="delete" delete-key="REPOSITORY_NAME"/>
-          <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
-        </definition>
-      </changes>
-    </component>
-  </service>
+            <set key="phoenix.functions.allowUserDefinedFunctions" value="true"/>
+            <transfer operation="delete" delete-key="hbase.master.loadbalancer.class"
+                      if-key="hbase.master.loadbalancer.class"
+                      if-type="hbase-site"
+                      if-value="org.apache.phoenix.hbase.index.balancer.IndexLoadBalancer"/>
+            <replace key="hbase.coprocessor.master.classes"
+                     find="org.apache.phoenix.hbase.index.master.IndexMasterObserver"
+                     replace-with=""/>
+            <replace key="hbase.coprocessor.regionserver.classes"
+                     find="org.apache.hadoop.hbase.regionserver.LocalIndexMerger"
+                     replace-with=""/>
+
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="OOZIE">
+      <component name="OOZIE_SERVER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_3_0_0_oozie_remove_redundant_configurations">
+            <summary>Updating oozie-site to remove redundant configurations</summary>
+            <type>oozie-site</type>
+            <transfer operation="delete" delete-key="*" preserve-edits="true">
+              <keep-key>oozie.base.url</keep-key>
+              <keep-key>oozie.services.ext</keep-key>
+              <keep-key>oozie.db.schema.name</keep-key>
+              <keep-key>oozie.service.JPAService.jdbc.username</keep-key>
+              <keep-key>oozie.service.JPAService.jdbc.password</keep-key>
+              <keep-key>oozie.service.JPAService.jdbc.driver</keep-key>
+              <keep-key>oozie.service.JPAService.jdbc.url</keep-key>
+              <keep-key>oozie.service.AuthorizationService.security.enabled</keep-key>
+              <keep-key>oozie.authentication.type</keep-key>
+              <keep-key>oozie.authentication.simple.anonymous.allowed</keep-key>
+              <keep-key>oozie.authentication.kerberos.name.rules</keep-key>
+              <keep-key>oozie.service.HadoopAccessorService.hadoop.configurations</keep-key>
+              <keep-key>oozie.service.HadoopAccessorService.kerberos.enabled</keep-key>
+              <keep-key>oozie.service.URIHandlerService.uri.handlers</keep-key>
+
+              <!-- required by Falcon and should be preserved -->
+              <keep-key>oozie.service.ELService.ext.functions.coord-job-submit-instances</keep-key>
+              <keep-key>oozie.service.ELService.ext.functions.coord-action-create-inst</keep-key>
+              <keep-key>oozie.service.ELService.ext.functions.coord-action-create</keep-key>
+              <keep-key>oozie.service.ELService.ext.functions.coord-job-submit-data</keep-key>
+              <keep-key>oozie.service.ELService.ext.functions.coord-action-start</keep-key>
+              <keep-key>oozie.service.ELService.ext.functions.coord-sla-submit</keep-key>
+              <keep-key>oozie.service.ELService.ext.functions.coord-sla-create</keep-key>
+            </transfer>
+            <set key="oozie.credentials.credentialclasses"
+                 value="hcat=org.apache.oozie.action.hadoop.HCatCredentials,hive2=org.apache.oozie.action.hadoop.Hive2Credentials"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_4_0_0_oozie_remove_service_classes" summary="Updating Oozie Service classes">
+            <type>oozie-site</type>
+            <replace key="oozie.services" find="org.apache.oozie.service.CoordinatorStoreService," replace-with="" />
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="KAFKA">
+      <component name="KAFKA_BROKER">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_3_0_0_kafka_broker_deprecate_port">
+            <type>kafka-broker</type>
+            <!-- Deprecate "port" property since "listeners" will be added. -->
+            <transfer operation="delete" delete-key="port"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_4_0_0_kafka_broker_deprecate_port">
+            <type>kafka-broker</type>
+            <!-- Deprecate "port" property since "listeners" will be added. -->
+            <transfer operation="delete" delete-key="port"/>
+          </definition>
+        </changes>
+      </component>
+    </service>
+
+    <service name="KNOX">
+      <component name="KNOX_GATEWAY">
+        <changes>
+          <definition xsi:type="configure" id="hdp_2_3_0_0_knox_configure_ranger_policy"
+                      summary="Configuring Ranger Knox Policy">
+            <type>ranger-knox-policymgr-ssl</type>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_KEYSTORE_FILE_PATH"
+                      to-key="xasecure.policymgr.clientssl.keystore"
+                      default-value="/usr/hdp/current/knox-server/conf/ranger-plugin-keystore.jks"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_KEYSTORE_PASSWORD"
+                      to-key="xasecure.policymgr.clientssl.keystore.password" default-value="myKeyFilePassword"
+                      mask="true"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_TRUSTSTORE_FILE_PATH"
+                      to-key="xasecure.policymgr.clientssl.truststore"
+                      default-value="/usr/hdp/current/knox-server/conf/ranger-plugin-truststore.jks"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="SSL_TRUSTSTORE_PASSWORD"
+                      to-key="xasecure.policymgr.clientssl.truststore.password" default-value="changeit" mask="true"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_knox_configure_ranger_knox_audit"
+                      summary="Configuring Ranger Knox Audit">
+            <type>ranger-knox-audit</type>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.DB.IS_ENABLED"
+                      to-key="xasecure.audit.destination.db" default-value="true"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties"
+                      from-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY" to-key="xasecure.audit.destination.hdfs.dir"
+                      default-value="hdfs://NAMENODE_HOSTNAME:8020/ranger/audit"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.HDFS.IS_ENABLED"
+                      to-key="xasecure.audit.destination.hdfs" default-value="true"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties"
+                      from-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"
+                      to-key="xasecure.audit.destination.hdfs.batch.filespool.dir"
+                      default-value="/var/log/knox/audit/hdfs/spool"/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.DB.USER_NAME"
+                      to-key="xasecure.audit.destination.db.user" default-value=""/>
+            <transfer operation="copy" from-type="ranger-knox-plugin-properties" from-key="XAAUDIT.DB.PASSWORD"
+                      to-key="xasecure.audit.destination.db.password" default-value="" mask="true"/>
+            <set key="xasecure.audit.credential.provider.file" value="jceks://file{{credential_file}}"/>
+            <set key="xasecure.audit.destination.solr" value="false"/>
+            <set key="xasecure.audit.destination.solr.urls" value="{{ranger_audit_solr_urls}}"/>
+            <set key="xasecure.audit.destination.solr.zookeepers" value="none"/>
+            <set key="xasecure.audit.destination.solr.batch.filespool.dir" value="/var/log/knox/audit/solr/spool"/>
+            <set key="xasecure.audit.destination.db.jdbc.driver" value="{{jdbc_driver}}"/>
+            <set key="xasecure.audit.destination.db.jdbc.url" value="{{audit_jdbc_url}}"/>
+            <set key="xasecure.audit.provider.summary.enabled" value="false"/>
+          </definition>
+
+          <definition xsi:type="configure" id="hdp_2_3_0_0_knox_remove_deprecated_ranger_properties"
+                      summary="Removing Deprecated Ranger Knox Plugin Configurations">
+            <type>ranger-knox-plugin-properties</type>
+            <transfer operation="delete" delete-key="SSL_KEYSTORE_FILE_PATH"/>
+            <transfer operation="delete" delete-key="SSL_KEYSTORE_PASSWORD"/>
+            <transfer operation="delete" delete-key="SSL_TRUSTSTORE_FILE_PATH"/>
+            <transfer operation="delete" delete-key="SSL_TRUSTSTORE_PASSWORD"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.IS_ENABLED"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINATION_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.IS_ENABLED"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.USER_NAME"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.PASSWORD"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FILE"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_FLUSH_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_OPEN_RETRY_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.DESTINTATION_ROLLOVER_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_ARCHIVE_MAX_FILE_COUNT"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_DIRECTORY"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FILE"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_FLUSH_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="XAAUDIT.HDFS.LOCAL_BUFFER_ROLLOVER_INTERVAL_SECONDS"/>
+            <transfer operation="delete" delete-key="SQL_CONNECTOR_JAR"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.FLAVOUR"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.DATABASE_NAME"/>
+            <transfer operation="delete" delete-key="XAAUDIT.DB.HOSTNAME"/>
+            <transfer operation="delete" delete-key="REPOSITORY_NAME"/>
+            <transfer operation="delete" delete-key="POLICY_MGR_URL"/>
+          </definition>
+        </changes>
+      </component>
+    </service>
+  </services>
 
 </upgrade-config-changes>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/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 1fa4d00..fab12c8 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
@@ -36,7 +36,6 @@
   <!-- Instructs the upgrade pack how to build the configuration pack -->
   <upgrade-path>
     <intermediate-stack version="2.3"/>
-    <intermediate-stack version="2.4"/>
   </upgrade-path>
 
   <order>

http://git-wip-us.apache.org/repos/asf/ambari/blob/1c60f635/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 bf041de..0b72254 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
@@ -47,7 +47,6 @@
   <!-- Instructs the upgrade pack how to build the configuration pack -->
   <upgrade-path>
     <intermediate-stack version="2.3"/>
-    <intermediate-stack version="2.4"/>
   </upgrade-path>
 
   <skip-failures>false</skip-failures>