You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by nc...@apache.org on 2015/05/05 16:25:49 UTC

[2/2] ambari git commit: AMBARI-10899. Agents Changes For Supporting HDP 2.3 conf-select On Upgrade (ncole)

AMBARI-10899. Agents Changes For Supporting HDP 2.3 conf-select On Upgrade (ncole)


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

Branch: refs/heads/trunk
Commit: a6b9e95596de4e16f773cf0c361e2a7dbd65f94e
Parents: 0ab1d36
Author: Nate Cole <nc...@hortonworks.com>
Authored: Mon May 4 11:46:00 2015 -0400
Committer: Nate Cole <nc...@hortonworks.com>
Committed: Tue May 5 10:08:55 2015 -0400

----------------------------------------------------------------------
 .../libraries/functions/conf_select.py          | 68 +++++++++++++++++++
 .../0.5.0.2.1/package/scripts/falcon_client.py  |  2 +
 .../0.5.0.2.1/package/scripts/falcon_server.py  |  2 +
 .../0.96.0.2.0/package/scripts/hbase_client.py  |  5 +-
 .../HBASE/0.96.0.2.0/package/scripts/upgrade.py |  2 +
 .../HDFS/2.1.0.2.0/package/scripts/datanode.py  |  2 +
 .../2.1.0.2.0/package/scripts/hdfs_client.py    |  2 +
 .../2.1.0.2.0/package/scripts/journalnode.py    |  2 +
 .../HDFS/2.1.0.2.0/package/scripts/namenode.py  |  2 +
 .../0.12.0.2.0/package/scripts/hive_client.py   |  2 +
 .../package/scripts/hive_metastore.py           |  2 +
 .../0.12.0.2.0/package/scripts/hive_server.py   |  2 +
 .../package/scripts/webhcat_server.py           |  3 +
 .../KAFKA/0.8.1.2.2/package/scripts/upgrade.py  |  2 +
 .../0.5.0.2.2/package/scripts/knox_gateway.py   |  3 +
 .../1.0.0.2.3/package/scripts/mahout_client.py  |  2 +
 .../4.0.0.2.0/package/scripts/oozie_client.py   |  2 +
 .../4.0.0.2.0/package/scripts/oozie_server.py   |  2 +
 .../0.12.0.2.0/package/scripts/pig_client.py    |  2 +
 .../RANGER/0.4.0/package/scripts/upgrade.py     |  4 +-
 .../0.60.0.2.2/package/scripts/slider_client.py |  3 +
 .../package/scripts/job_history_server.py       |  2 +
 .../1.2.0.2.2/package/scripts/spark_client.py   |  2 +
 .../1.4.4.2.0/package/scripts/sqoop_client.py   |  3 +
 .../0.9.1.2.1/package/scripts/drpc_server.py    |  3 +-
 .../STORM/0.9.1.2.1/package/scripts/nimbus.py   |  2 +
 .../0.9.1.2.1/package/scripts/nimbus_prod.py    |  3 +-
 .../STORM/0.9.1.2.1/package/scripts/rest_api.py |  2 +
 .../0.9.1.2.1/package/scripts/supervisor.py     |  2 +
 .../package/scripts/supervisor_prod.py          |  2 +
 .../0.9.1.2.1/package/scripts/ui_server.py      |  2 +
 .../TEZ/0.4.0.2.1/package/scripts/tez_client.py |  2 +
 .../scripts/application_timeline_server.py      |  2 +
 .../2.1.0.2.0/package/scripts/historyserver.py  |  2 +
 .../package/scripts/mapreduce2_client.py        |  2 +
 .../2.1.0.2.0/package/scripts/nodemanager.py    |  2 +
 .../package/scripts/resourcemanager.py          |  2 +
 .../2.1.0.2.0/package/scripts/yarn_client.py    |  2 +
 .../3.4.5.2.0/package/scripts/zookeeper.py      |  4 +-
 .../package/scripts/zookeeper_client.py         |  2 +
 .../package/scripts/zookeeper_server.py         |  2 +
 .../stacks/2.0.6/HBASE/test_hbase_client.py     | 51 ++++++++++++++-
 .../stacks/2.0.6/HBASE/test_hbase_master.py     | 44 ++++++++++++-
 .../2.0.6/HBASE/test_hbase_regionserver.py      | 31 +++++++++
 .../python/stacks/2.0.6/HDFS/test_datanode.py   | 30 +++++++++
 .../stacks/2.0.6/HDFS/test_hdfs_client.py       | 31 ++++++++-
 .../stacks/2.0.6/HDFS/test_journalnode.py       | 33 +++++++++-
 .../python/stacks/2.0.6/HDFS/test_namenode.py   | 28 ++++++++
 .../stacks/2.0.6/HIVE/test_hive_client.py       | 30 +++++++++
 .../stacks/2.0.6/HIVE/test_hive_server.py       | 30 +++++++++
 .../stacks/2.0.6/HIVE/test_webhcat_server.py    | 32 ++++++++-
 .../stacks/2.0.6/OOZIE/test_oozie_client.py     | 33 +++++++++-
 .../stacks/2.0.6/OOZIE/test_oozie_server.py     | 69 ++++++++++++++++++++
 .../python/stacks/2.0.6/PIG/test_pig_client.py  | 31 ++++++++-
 .../python/stacks/2.0.6/SQOOP/test_sqoop.py     | 26 ++++++++
 .../stacks/2.0.6/YARN/test_historyserver.py     | 29 ++++++++
 .../stacks/2.0.6/YARN/test_mapreduce2_client.py | 31 ++++++++-
 .../stacks/2.0.6/YARN/test_nodemanager.py       | 31 ++++++++-
 .../stacks/2.0.6/YARN/test_resourcemanager.py   | 31 ++++++++-
 .../stacks/2.0.6/YARN/test_yarn_client.py       | 31 ++++++++-
 .../2.0.6/ZOOKEEPER/test_zookeeper_client.py    | 33 ++++++++++
 .../2.0.6/ZOOKEEPER/test_zookeeper_server.py    | 35 +++++++++-
 .../stacks/2.1/FALCON/test_falcon_client.py     | 32 ++++++++-
 .../stacks/2.1/FALCON/test_falcon_server.py     | 35 +++++++++-
 .../stacks/2.1/HIVE/test_hive_metastore.py      | 33 +++++++++-
 .../stacks/2.1/STORM/test_storm_drpc_server.py  | 30 ++++++++-
 .../stacks/2.1/STORM/test_storm_nimbus.py       | 27 ++++++++
 .../stacks/2.1/STORM/test_storm_nimbus_prod.py  | 28 ++++++++
 .../2.1/STORM/test_storm_rest_api_service.py    | 27 ++++++++
 .../stacks/2.1/STORM/test_storm_supervisor.py   | 28 ++++++++
 .../2.1/STORM/test_storm_supervisor_prod.py     | 28 ++++++++
 .../stacks/2.1/STORM/test_storm_ui_server.py    | 29 ++++++++
 .../python/stacks/2.1/TEZ/test_tez_client.py    | 44 +++++++++++++
 .../stacks/2.1/YARN/test_apptimelineserver.py   | 33 +++++++++-
 .../stacks/2.2/KAFKA/test_kafka_broker.py       | 32 ++++++++-
 .../python/stacks/2.2/KNOX/test_knox_gateway.py | 33 ++++++++++
 .../stacks/2.2/RANGER/test_ranger_admin.py      | 28 ++++++++
 .../stacks/2.2/RANGER/test_ranger_usersync.py   | 31 +++++++++
 .../stacks/2.2/SLIDER/test_slider_client.py     | 38 ++++++++++-
 .../stacks/2.2/SPARK/test_job_history_server.py | 29 ++++++++
 .../stacks/2.2/SPARK/test_spark_client.py       | 29 ++++++++
 .../stacks/2.3/MAHOUT/test_mahout_client.py     | 33 +++++++++-
 82 files changed, 1475 insertions(+), 33 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py
----------------------------------------------------------------------
diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py b/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py
new file mode 100644
index 0000000..f137a19
--- /dev/null
+++ b/ambari-common/src/main/python/resource_management/libraries/functions/conf_select.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+"""
+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.
+
+"""
+
+__all__ = ["select", "create"]
+
+import version
+from resource_management.core import shell
+
+TEMPLATE = "conf-select {0} --package {1} --stack-version {2} --conf-version 0"
+
+def _valid(stack_name, package, ver):
+  if stack_name != "HDP":
+    return False
+
+  if version.compare_versions(version.format_hdp_stack_version(ver), "2.3.0.0") < 0:
+    return False
+
+  return True
+
+def create(stack_name, package, version):
+  """
+  Creates a config version for the specified package
+  :stack_name: the name of the stack
+  :package: the name of the package, as-used by conf-select
+  :version: the version number to create
+  """
+
+  if not _valid(stack_name, package, version):
+    return
+
+  shell.call(TEMPLATE.format("create-conf-dir", package, version))
+
+
+def select(stack_name, package, version, try_create=True):
+  """
+  Selects a config version for the specified package.  Currently only works if the version is
+  for HDP-2.3 or higher
+  :stack_name: the name of the stack
+  :package: the name of the package, as-used by conf-select
+  :version: the version number to create
+  :try_create: optional argument to attempt to create the directory before setting it
+  """
+
+  if not _valid(stack_name, package, version):
+    return
+
+  if try_create:
+    create(stack_name, package, version)
+
+  shell.call(TEMPLATE.format("set-conf-dir", package, version), logoutput=True)
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_client.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_client.py
index cf95692..b6ac9b9 100644
--- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_client.py
+++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_client.py
@@ -18,6 +18,7 @@ limitations under the License.
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from falcon import falcon
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
@@ -50,6 +51,7 @@ class FalconClientLinux(FalconClient):
       return
 
     Logger.info("Executing Falcon Client Rolling Upgrade pre-restart")
+    conf_select.select(params.stack_name, "falcon", params.version)
     Execute(format("hdp-select set falcon-client {version}"))
 
   def security_status(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_server.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_server.py
index 04d14ee..722f437 100644
--- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_server.py
+++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/falcon_server.py
@@ -20,6 +20,7 @@ limitations under the License.
 import falcon_server_upgrade
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import *
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
@@ -73,6 +74,7 @@ class FalconServerLinux(FalconServer):
       return
 
     Logger.info("Executing Falcon Server Rolling Upgrade pre-restart")
+    conf_select.select(params.stack_name, "falcon", params.version)
     Execute(format("hdp-select set falcon-server {version}"))
     falcon_server_upgrade.pre_start_restore()
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_client.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_client.py
index 3955b66..a331755 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_client.py
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_client.py
@@ -20,6 +20,7 @@ limitations under the License.
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from hbase import hbase
 from ambari_commons import OSCheck, OSConst
 from ambari_commons.os_family_impl import OsFamilyImpl
@@ -54,11 +55,13 @@ class HbaseClientDefault(HbaseClient):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hbase", params.version)
       Execute(format("hdp-select set hbase-client {version}"))
 
-      # set all of the hadoop clientss since hbase client is upgraded as part
+      # set all of the hadoop clients since hbase client is upgraded as part
       # of the final "CLIENTS" group and we need to ensure that hadoop-client
       # is also set
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/upgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/upgrade.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/upgrade.py
index 5a8caf8..e4d4653 100644
--- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/upgrade.py
+++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/upgrade.py
@@ -21,6 +21,7 @@ limitations under the License.
 from resource_management import *
 from resource_management.core.resources.system import Execute
 from resource_management.core import shell
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.decorator import retry
 
@@ -28,6 +29,7 @@ def prestart(env, hdp_component):
   import params
 
   if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+    conf_select.select(params.stack_name, "hbase", params.version)
     Execute("hdp-select set {0} {1}".format(hdp_component, params.version))
 
 def post_regionserver(env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/datanode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/datanode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/datanode.py
index 1963658..ad94b3b 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/datanode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/datanode.py
@@ -19,6 +19,7 @@ limitations under the License.
 import datanode_upgrade
 from hdfs_datanode import datanode
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, FILE_TYPE_XML
@@ -71,6 +72,7 @@ class DataNodeDefault(DataNode):
     import params
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-hdfs-datanode {version}"))
 
   def post_rolling_restart(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py
index fe487ef..0a67ef2 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/hdfs_client.py
@@ -18,6 +18,7 @@ limitations under the License.
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
   FILE_TYPE_XML
@@ -59,6 +60,7 @@ class HdfsClientDefault(HdfsClient):
     import params
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
   def security_status(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
index 8ec1fe9..0158644 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/journalnode.py
@@ -18,6 +18,7 @@ limitations under the License.
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, \
   format_hdp_stack_version
 from resource_management.libraries.functions.format import format
@@ -49,6 +50,7 @@ class JournalNodeDefault(JournalNode):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-hdfs-journalnode {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py
index dd439d7..9e6079a 100644
--- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py
+++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode.py
@@ -22,6 +22,7 @@ import os
 import json
 import  tempfile
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
   FILE_TYPE_XML
@@ -109,6 +110,7 @@ class NameNodeDefault(NameNode):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-hdfs-namenode {version}"))
 
   def post_rolling_restart(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_client.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_client.py
index b390483..2514ccf 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_client.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_client.py
@@ -19,6 +19,7 @@ limitations under the License.
 """
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from hive import hive
 from ambari_commons.os_family_impl import OsFamilyImpl
 from ambari_commons import OSConst
@@ -53,6 +54,7 @@ class HiveClientDefault(HiveClient):
     import params
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
index feb00eb..c1d145c 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_metastore.py
@@ -20,6 +20,7 @@ limitations under the License.
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
   FILE_TYPE_XML
@@ -76,6 +77,7 @@ class HiveMetastoreDefault(HiveMetastore):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hive", params.version)
       Execute(format("hdp-select set hive-metastore {version}"))
 
   def security_status(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server.py
index ac32db1..d86de3d 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/hive_server.py
@@ -22,6 +22,7 @@ import hive_server_upgrade
 from resource_management import *
 from hive import hive
 from hive_service import hive_service
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.dynamic_variable_interpretation import copy_tarballs_to_hdfs
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
@@ -99,6 +100,7 @@ class HiveServerDefault(HiveServer):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hive", params.version)
       Execute(format("hdp-select set hive-server2 {version}"))
       copy_tarballs_to_hdfs('mapreduce', 'hive-server2', params.tez_user, params.hdfs_user, params.user_group)
       copy_tarballs_to_hdfs('tez', 'hive-server2', params.tez_user, params.hdfs_user, params.user_group)

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_server.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_server.py
index 0373a0d..44df132 100644
--- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_server.py
+++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/webhcat_server.py
@@ -19,6 +19,7 @@ Ambari Agent
 
 """
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
   FILE_TYPE_XML
@@ -74,6 +75,8 @@ class WebHCatServerDefault(WebHCatServer):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      # webhcat has no conf, but uses hadoop home, so verify that regular hadoop conf is set
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hive-webhcat {version}"))
 
   def security_status(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/upgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/upgrade.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/upgrade.py
index c031fa6..ecdb798 100644
--- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/upgrade.py
+++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/upgrade.py
@@ -20,10 +20,12 @@ limitations under the License.
 """
 from resource_management import *
 from resource_management.core.resources.system import Execute
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 
 def prestart(env, hdp_component):
   import params
 
   if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+    conf_select.select(params.stack_name, "kafka", params.version)
     Execute("hdp-select set {0} {1}".format(hdp_component, params.version))

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
index 27a302f..bc254c5 100644
--- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
+++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/knox_gateway.py
@@ -18,6 +18,8 @@ limitations under the License.
 """
 
 from resource_management import *
+
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, validate_security_config_properties, get_params_from_filesystem, \
   FILE_TYPE_XML
@@ -71,6 +73,7 @@ class KnoxGateway(Script):
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
       upgrade.backup_data()
+      conf_select.select(params.stack_name, "knox", params.version)
       Execute(format("hdp-select set knox-server {version}"))
 
   @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/package/scripts/mahout_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/package/scripts/mahout_client.py b/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/package/scripts/mahout_client.py
index c262575..f371e1b 100644
--- a/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/package/scripts/mahout_client.py
+++ b/ambari-server/src/main/resources/common-services/MAHOUT/1.0.0.2.3/package/scripts/mahout_client.py
@@ -21,6 +21,7 @@ Ambari Agent
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from mahout import mahout
 
 
@@ -33,6 +34,7 @@ class MahoutClient(Script):
     import params
     env.set_params(params)
 
+    conf_select.select(params.stack_name, "mahout", params.version)
     Execute(('hdp-select', 'set', 'mahout-client', params.version),
             sudo = True)
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_client.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_client.py
index d0e6dad..b72fc46 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_client.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_client.py
@@ -20,6 +20,7 @@ limitations under the License.
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 
 from oozie import oozie
 from oozie_service import oozie_service
@@ -55,6 +56,7 @@ class OozieClient(Script):
       return
 
     Logger.info("Executing Oozie Client Rolling Upgrade pre-restart")
+    conf_select.select(params.stack_name, "oozie", params.version)
     Execute(format("hdp-select set oozie-client {version}"))
 
   # We substitute some configs (oozie.authentication.kerberos.principal) before generation (see oozie.py and params.py).

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server.py
index 0bf084e..dddebc9 100644
--- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server.py
+++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/oozie_server.py
@@ -25,6 +25,7 @@ from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions import format
 from resource_management.libraries.script import Script
 from resource_management.libraries.functions import compare_versions
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format_hdp_stack_version
 from resource_management.libraries.functions.security_commons import build_expectations
 from resource_management.libraries.functions.security_commons import cached_kinit_executor
@@ -159,6 +160,7 @@ class OozieServerDefault(OozieServer):
 
     oozie_server_upgrade.backup_configuration()
 
+    conf_select.select(params.stack_name, "oozie", params.version)
     Execute(format("hdp-select set oozie-server {version}"))
 
     oozie_server_upgrade.restore_configuration()

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/pig_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/pig_client.py b/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/pig_client.py
index 5b81b1f..4b6cb88 100644
--- a/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/pig_client.py
+++ b/ambari-server/src/main/resources/common-services/PIG/0.12.0.2.0/package/scripts/pig_client.py
@@ -22,6 +22,7 @@ Ambari Agent
 import sys
 import os
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from pig import pig
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
@@ -45,6 +46,7 @@ class PigClientLinux(PigClient):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
   def install(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/upgrade.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/upgrade.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/upgrade.py
index 99b6edc..43a0787 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/upgrade.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/upgrade.py
@@ -19,10 +19,12 @@ limitations under the License.
 
 """
 from resource_management.core.resources.system import Execute
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.format import format
 
 def prestart(env, hdp_component):
   import params
 
   if params.version and params.stack_is_hdp22_or_further:
-    Execute("hdp-select set {0} {1}".format(hdp_component, params.version))
\ No newline at end of file
+    conf_select.select(params.stack_name, hdp_component, params.version)
+    Execute("hdp-select set {0} {1}".format(hdp_component, params.version))

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/slider_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/slider_client.py b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/slider_client.py
index b4ecf20..eb83e98 100644
--- a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/slider_client.py
+++ b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/slider_client.py
@@ -19,6 +19,7 @@ limitations under the License.
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from slider import slider
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
@@ -35,11 +36,13 @@ class SliderClient(Script):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "slider", params.version)      
       Execute(format("hdp-select set slider-client {version}"))
 
       # also set all of the hadoop clients since slider client is upgraded as
       # part of the final "CLIENTS" group and we need to ensure that
       # hadoop-client is also set
+      conf_select.select(params.stack_name, "hadoop", params.version)      
       Execute(format("hdp-select set hadoop-client {version}"))
 
   @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/job_history_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/job_history_server.py b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/job_history_server.py
index 353a1da..0206415 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/job_history_server.py
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/job_history_server.py
@@ -20,6 +20,7 @@ limitations under the License.
 
 import sys
 import os
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.dynamic_variable_interpretation import copy_tarballs_to_hdfs
 from resource_management.libraries.functions.format import format
@@ -74,6 +75,7 @@ class JobHistoryServer(Script):
 
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "spark", params.version)
       Execute(format("hdp-select set spark-historyserver {version}"))
       copy_tarballs_to_hdfs('tez', 'spark-historyserver', params.spark_user, params.hdfs_user, params.user_group)
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_client.py b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_client.py
index 9f9e3dc..cc977d1 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_client.py
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_client.py
@@ -20,6 +20,7 @@ limitations under the License.
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.core.exceptions import ComponentIsNotRunning
 from resource_management.core.logger import Logger
@@ -49,6 +50,7 @@ class SparkClient(Script):
 
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "spark", params.version)
       Execute(format("hdp-select set spark-client {version}"))
 
 if __name__ == "__main__":

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py
index dad0514..ca26d10 100644
--- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py
+++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/sqoop_client.py
@@ -21,6 +21,8 @@ limitations under the License.
 from resource_management.core.exceptions import ClientComponentHasNoStatus
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.script.script import Script
+from resource_management.libraries.functions import conf_select
+from resource_management.libraries.functions.format import format
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from sqoop import sqoop
 from ambari_commons.os_family_impl import OsFamilyImpl
@@ -49,6 +51,7 @@ class SqoopClientDefault(SqoopClient):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "sqoop", params.version)
       Execute(format("hdp-select set sqoop-client {version}"))
 
 @OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py
index 60a5988..74cfc59 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/drpc_server.py
@@ -21,6 +21,7 @@ limitations under the License.
 import sys
 from resource_management.libraries.functions import check_process_status
 from resource_management.libraries.script import Script
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
@@ -31,7 +32,6 @@ from resource_management.libraries.functions.security_commons import build_expec
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
   FILE_TYPE_JAAS_CONF
 
-
 class DrpcServer(Script):
 
   def get_stack_to_component(self):
@@ -52,6 +52,7 @@ class DrpcServer(Script):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-client {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py
index 8e3c6b4..f6af281 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus.py
@@ -22,6 +22,7 @@ import sys
 from resource_management.libraries.functions import check_process_status
 from resource_management.libraries.script import Script
 from resource_management.libraries.functions import format
+from resource_management.libraries.functions import conf_select
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from storm import storm
@@ -54,6 +55,7 @@ class NimbusDefault(Nimbus):
     import params
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-nimbus {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py
index 4865774..310fec9 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/nimbus_prod.py
@@ -22,11 +22,11 @@ import sys
 from resource_management.libraries.script import Script
 from storm import storm
 from supervisord_service import supervisord_service, supervisord_check_status
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 
-
 class Nimbus(Script):
 
   def get_stack_to_component(self):
@@ -47,6 +47,7 @@ class Nimbus(Script):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-nimbus {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py
index 9ae82aa..6768dd4 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/rest_api.py
@@ -21,6 +21,7 @@ limitations under the License.
 import sys
 from resource_management.libraries.functions import check_process_status
 from resource_management.libraries.script import Script
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
@@ -50,6 +51,7 @@ class StormRestApi(Script):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-client {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py
index cee42d4..36e3ca8 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor.py
@@ -21,6 +21,7 @@ limitations under the License.
 import sys
 from resource_management.libraries.functions import check_process_status
 from resource_management.libraries.script import Script
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
@@ -72,6 +73,7 @@ class SupervisorDefault(Supervisor):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-supervisor {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor_prod.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor_prod.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor_prod.py
index 833e8b3..7ce4764 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor_prod.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/supervisor_prod.py
@@ -23,6 +23,7 @@ from storm import storm
 from service import service
 from supervisord_service import supervisord_service, supervisord_check_status
 from resource_management.libraries.script import Script
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
@@ -47,6 +48,7 @@ class Supervisor(Script):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-supervisor {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
index 0814282..4ab37c5 100644
--- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
+++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/ui_server.py
@@ -24,6 +24,7 @@ from service import service
 from service_check import ServiceCheck
 from resource_management.libraries.functions import check_process_status
 from resource_management.libraries.script import Script
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions import format
 from resource_management.core.resources.system import Execute
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
@@ -75,6 +76,7 @@ class UiServerDefault(UiServer):
     import params
     env.set_params(params)
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "storm", params.version)
       Execute(format("hdp-select set storm-client {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/tez_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/tez_client.py b/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/tez_client.py
index 9746d13..7394e68 100644
--- a/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/tez_client.py
+++ b/ambari-server/src/main/resources/common-services/TEZ/0.4.0.2.1/package/scripts/tez_client.py
@@ -21,6 +21,7 @@ Ambari Agent
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from tez import tez
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyImpl
@@ -45,6 +46,7 @@ class TezClientLinux(TezClient):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
   def install(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/application_timeline_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/application_timeline_server.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/application_timeline_server.py
index 8cb5a39..9cd555d 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/application_timeline_server.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/application_timeline_server.py
@@ -20,6 +20,7 @@ Ambari Agent
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties,\
@@ -69,6 +70,7 @@ class ApplicationTimelineServerDefault(ApplicationTimelineServer):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-yarn-timelineserver {version}"))
 
   def status(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/historyserver.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/historyserver.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/historyserver.py
index b531de9..f4dceb5 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/historyserver.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/historyserver.py
@@ -20,6 +20,7 @@ Ambari Agent
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.dynamic_variable_interpretation import copy_tarballs_to_hdfs
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.format import format
@@ -70,6 +71,7 @@ class HistoryServerDefault(HistoryServer):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-mapreduce-historyserver {version}"))
       copy_tarballs_to_hdfs('mapreduce', 'hadoop-mapreduce-historyserver', params.mapred_user, params.hdfs_user, params.user_group)
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/mapreduce2_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/mapreduce2_client.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/mapreduce2_client.py
index 6e8e0a8..38775b6 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/mapreduce2_client.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/mapreduce2_client.py
@@ -21,6 +21,7 @@ Ambari Agent
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from yarn import yarn
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyImpl
@@ -55,6 +56,7 @@ class MapReduce2ClientDefault(MapReduce2Client):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/nodemanager.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/nodemanager.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/nodemanager.py
index bd613ed..f756c36 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/nodemanager.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/nodemanager.py
@@ -22,6 +22,7 @@ Ambari Agent
 import nodemanager_upgrade
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.format import format
 from resource_management.libraries.functions.security_commons import build_expectations, \
@@ -71,6 +72,7 @@ class NodemanagerDefault(Nodemanager):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-yarn-nodemanager {version}"))
 
   def post_rolling_restart(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/resourcemanager.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/resourcemanager.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/resourcemanager.py
index a5d494f..9fa2aae 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/resourcemanager.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/resourcemanager.py
@@ -20,6 +20,7 @@ Ambari Agent
 """
 
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.dynamic_variable_interpretation import copy_tarballs_to_hdfs
 from resource_management.libraries.functions.security_commons import build_expectations, \
@@ -93,6 +94,7 @@ class ResourcemanagerDefault(Resourcemanager):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-yarn-resourcemanager {version}"))
 
   def start(self, env, rolling_restart=False):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn_client.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn_client.py
index 6e99e41..89e3a50 100644
--- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn_client.py
+++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/yarn_client.py
@@ -21,6 +21,7 @@ Ambari Agent
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from yarn import yarn
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyImpl
@@ -55,6 +56,7 @@ class YarnClientDefault(YarnClient):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "hadoop", params.version)
       Execute(format("hdp-select set hadoop-client {version}"))
 
 

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
index 6ea9047..f1cd7fd 100644
--- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
+++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper.py
@@ -19,9 +19,10 @@ Ambari Agent
 
 """
 import os
+import sys
 
 from resource_management import *
-import sys
+from resource_management.libraries.functions import conf_select
 from ambari_commons import OSConst
 from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 
@@ -73,6 +74,7 @@ def zookeeper(type = None, rolling_restart = False):
     )
     # This path may be missing after Ambari upgrade. We need to create it.
     if (not rolling_restart) and (not os.path.exists("/usr/hdp/current/zookeeper-server")) and params.current_version:
+      conf_select(params.stack_name, "zookeeper", params.current_version)
       Execute(format("hdp-select set zookeeper-server {current_version}"))
 
   if (params.log4j_props != None):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_client.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_client.py
index 92264ab..179c978 100644
--- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_client.py
+++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_client.py
@@ -21,6 +21,7 @@ Ambari Agent
 
 import sys
 from resource_management import *
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.format import format
 from ambari_commons import OSConst
@@ -64,6 +65,7 @@ class ZookeeperClientLinux(ZookeeperClient):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "zookeeper", params.version)
       Execute(format("hdp-select set zookeeper-client {version}"))
 
 @OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py
index 1b81ff1..2e19100 100644
--- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py
+++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/zookeeper_server.py
@@ -23,6 +23,7 @@ import sys
 
 from resource_management.libraries.script.script import Script
 from resource_management.libraries.functions import get_unique_id_and_date
+from resource_management.libraries.functions import conf_select
 from resource_management.libraries.functions.version import compare_versions, format_hdp_stack_version
 from resource_management.libraries.functions.security_commons import build_expectations, \
   cached_kinit_executor, get_params_from_filesystem, validate_security_config_properties, \
@@ -74,6 +75,7 @@ class ZookeeperServerLinux(ZookeeperServer):
     env.set_params(params)
 
     if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+      conf_select.select(params.stack_name, "zookeeper", params.version)
       Execute(format("hdp-select set zookeeper-server {version}"))
 
   def post_rolling_restart(self, env):

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
index 58c661b..5b57393 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_client.py
@@ -17,6 +17,8 @@ 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.
 '''
+import json
+
 from mock.mock import MagicMock, call, patch
 from stacks.utils.RMFTestCase import *
 
@@ -206,15 +208,58 @@ class TestHBaseClient(RMFTestCase):
     self.assertNoMoreResources()
 
 
-  def test_upgrade(self):
+  @patch("resource_management.core.shell.call")
+  def test_upgrade(self, call_mock):
+    call_mock.side_effects = []
+
+    mocks_dict = {}
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hbase_client.py",
                    classname = "HbaseClient",
                    command = "restart",
                    config_file="client-upgrade.json",
                    hdp_stack_version = self.STACK_VERSION,
-                   target = RMFTestCase.TARGET_COMMON_SERVICES)
+                   target = RMFTestCase.TARGET_COMMON_SERVICES,
+                   mocks_dict = mocks_dict)
 
     self.assertResourceCalled("Execute", "hdp-select set hbase-client 2.2.1.0-2067")
     self.assertResourceCalled("Execute", "hdp-select set hadoop-client 2.2.1.0-2067")
+    self.assertEquals(1, mocks_dict['call'].call_count)
+
+
+  @patch("resource_management.core.shell.call")
+  def test_upgrade_23(self, call_mock):
+    call_mock.side_effects = [(0, None), (0, None)]
+
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/client-upgrade.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hbase_client.py",
+                       classname = "HbaseClient",
+                       command = "restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None), (0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+
+    self.assertResourceCalled('Execute', 'hdp-select set hbase-client %s' % version)
+    self.assertResourceCalled('Execute', 'hdp-select set hadoop-client %s' % version)
+
+    self.assertEquals(5, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hbase --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hbase --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])
+    self.assertEquals(
+      "conf-select create-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[2][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[3][0][0])
 
-    # for now, it's enough that hdp-select is confirmed

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
index 2a89a40..6f73dbe 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_master.py
@@ -677,18 +677,56 @@ class TestHBaseMaster(RMFTestCase):
   
     self.assertNoMoreResources()
 
-  def test_pre_rolling_restart(self):
+  @patch("resource_management.core.shell.call")
+  def test_pre_rolling_restart(self, call_mock):
+    call_mock.side_effects = [(0, None), (0, None)]
+
     config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
     with open(config_file, "r") as f:
       json_content = json.load(f)
     version = '2.2.1.0-3242'
     json_content['commandParams']['version'] = version
+    
+    mocks_dict = {}
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hbase_master.py",
                        classname = "HbaseMaster",
                        command = "pre_rolling_restart",
                        config_dict = json_content,
                        hdp_stack_version = self.STACK_VERSION,
-                       target = RMFTestCase.TARGET_COMMON_SERVICES)
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       mocks_dict = mocks_dict)
     self.assertResourceCalled('Execute',
                               'hdp-select set hbase-master %s' % version,)
-    self.assertNoMoreResources()
\ No newline at end of file
+    self.assertFalse(call_mock.called)
+    self.assertNoMoreResources()
+
+  @patch("resource_management.core.shell.call")
+  def test_upgrade_23(self, call_mock):
+    call_mock.side_effects = [(0, None), (0, None)]
+
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hbase_master.py",
+                       classname = "HbaseMaster",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None), (0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+
+    self.assertResourceCalled('Execute', 'hdp-select set hbase-master %s' % version)
+
+    self.assertEquals(2, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hbase --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hbase --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
index 99e6033..0ab5fb7 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HBASE/test_hbase_regionserver.py
@@ -627,3 +627,34 @@ class TestHbaseRegionServer(RMFTestCase):
                        mocks_dict = mocks_dict)
     self.assertTrue(mocks_dict['call'].called)
     self.assertNoMoreResources()
+
+  @patch("resource_management.core.shell.call")
+  def test_upgrade_23(self, call_mock):
+    call_mock.side_effects = [(0, None), (0, None)]
+
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hbase_regionserver.py",
+                       classname = "HbaseRegionServer",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None), (0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+
+    self.assertResourceCalled('Execute', 'hdp-select set hbase-regionserver %s' % version)
+
+    self.assertEquals(2, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hbase --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hbase --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])
+

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
index 8a90ec8..fc96b93 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_datanode.py
@@ -458,6 +458,36 @@ class TestDatanode(RMFTestCase):
     self.assertNoMoreResources()
 
 
+  @patch("resource_management.core.shell.call")
+  def test_pre_rolling_restart_23(self, call_mock):
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/datanode.py",
+                       classname = "DataNode",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+    self.assertResourceCalled('Execute', 'hdp-select set hadoop-hdfs-datanode %s' % version,)
+
+    self.assertNoMoreResources()
+
+    self.assertEquals(2, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])
+
+
   @patch('time.sleep')
   def test_post_rolling_restart(self, time_mock):
     shell_call_output = """

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py
index 492c8bc..0f5b956 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_hdfs_client.py
@@ -181,6 +181,35 @@ class Test(RMFTestCase):
     put_structured_out_mock.assert_called_with({"securityState": "UNSECURED"})
 
 
+  @patch("resource_management.core.shell.call")
+  def test_pre_rolling_restart_23(self, call_mock):
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hdfs_client.py",
+                       classname = "HdfsClient",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+
+    self.assertResourceCalled('Execute', 'hdp-select set hadoop-client %s' % version,)
+    self.assertNoMoreResources()
+
+    self.assertEquals(2, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])
+
   def test_pre_rolling_restart(self):
     config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
     with open(config_file, "r") as f:
@@ -194,4 +223,4 @@ class Test(RMFTestCase):
                        hdp_stack_version = self.STACK_VERSION,
                        target = RMFTestCase.TARGET_COMMON_SERVICES)
     self.assertResourceCalled('Execute', 'hdp-select set hadoop-client %s' % version,)
-    self.assertNoMoreResources()
\ No newline at end of file
+    self.assertNoMoreResources()

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
index 8b2694f..9975b36 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_journalnode.py
@@ -452,6 +452,33 @@ class TestJournalnode(RMFTestCase):
                        config_dict = json_content,
                        hdp_stack_version = self.STACK_VERSION,
                        target = RMFTestCase.TARGET_COMMON_SERVICES)
-    self.assertResourceCalled('Execute',
-                              'hdp-select set hadoop-hdfs-journalnode %s' % version,)
-    self.assertNoMoreResources()
\ No newline at end of file
+    self.assertResourceCalled('Execute', 'hdp-select set hadoop-hdfs-journalnode %s' % version,)
+    self.assertNoMoreResources()
+
+  @patch("resource_management.core.shell.call")
+  def test_pre_rolling_restart_23(self, call_mock):
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/journalnode.py",
+                       classname = "JournalNode",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+
+    self.assertResourceCalled('Execute', 'hdp-select set hadoop-hdfs-journalnode %s' % version,)
+    self.assertNoMoreResources()
+
+    self.assertEquals(
+      "conf-select create-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
index 78254ae..2e7af32 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py
@@ -1079,6 +1079,33 @@ class TestNamenode(RMFTestCase):
                               'hdp-select set hadoop-hdfs-namenode %s' % version)
     self.assertNoMoreResources()
 
+  @patch("resource_management.core.shell.call")
+  def test_pre_rolling_restart_23(self, call_mock):
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/namenode.py",
+                       classname = "NameNode",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+    self.assertResourceCalled('Execute', 'hdp-select set hadoop-hdfs-namenode %s' % version)
+    self.assertNoMoreResources()
+
+    self.assertEquals(2, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])
 
   def test_post_rolling_restart(self):
     config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
@@ -1118,6 +1145,7 @@ class TestNamenode(RMFTestCase):
                               user = 'hdfs',
                               )
     self.assertNoMoreResources()
+  
 
 
   @patch.object(shell, "call")

http://git-wip-us.apache.org/repos/asf/ambari/blob/a6b9e955/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py b/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py
index 97dde86..11e1d16 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/HIVE/test_hive_client.py
@@ -188,3 +188,33 @@ class TestHiveClient(RMFTestCase):
     self.assertResourceCalled('Execute',
                               'hdp-select set hadoop-client %s' % version,)
     self.assertNoMoreResources()
+
+  @patch("resource_management.core.shell.call")
+  def test_pre_rolling_restart_23(self, call_mock):
+    config_file = self.get_src_folder()+"/test/python/stacks/2.0.6/configs/default.json"
+    with open(config_file, "r") as f:
+      json_content = json.load(f)
+    version = '2.3.0.0-1234'
+    json_content['commandParams']['version'] = version
+
+    mocks_dict = {}
+    self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/hive_client.py",
+                       classname = "HiveClient",
+                       command = "pre_rolling_restart",
+                       config_dict = json_content,
+                       hdp_stack_version = self.STACK_VERSION,
+                       target = RMFTestCase.TARGET_COMMON_SERVICES,
+                       call_mocks = [(0, None), (0, None)],
+                       mocks_dict = mocks_dict)
+
+    self.assertResourceCalled('Execute',
+                              'hdp-select set hadoop-client %s' % version,)
+    self.assertNoMoreResources()
+
+    self.assertEquals(2, mocks_dict['call'].call_count)
+    self.assertEquals(
+      "conf-select create-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[0][0][0])
+    self.assertEquals(
+      "conf-select set-conf-dir --package hadoop --stack-version 2.3.0.0-1234 --conf-version 0",
+       mocks_dict['call'].call_args_list[1][0][0])