You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ambari.apache.org by jl...@apache.org on 2015/10/28 20:39:30 UTC
ambari git commit: AMBARI-13583: Express Upgrade: Handle Flume, Spark,
Ranger, Slider in all upgrade paths and downgrades (jluniya)
Repository: ambari
Updated Branches:
refs/heads/trunk 11db1a425 -> bb5b77c5f
AMBARI-13583: Express Upgrade: Handle Flume, Spark, Ranger, Slider in all upgrade paths and downgrades (jluniya)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo
Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/bb5b77c5
Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/bb5b77c5
Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/bb5b77c5
Branch: refs/heads/trunk
Commit: bb5b77c5fffa9f8ac5d49bf2768fcfc6a88ff1da
Parents: 11db1a4
Author: Jayush Luniya <jl...@hortonworks.com>
Authored: Wed Oct 28 12:39:22 2015 -0700
Committer: Jayush Luniya <jl...@hortonworks.com>
Committed: Wed Oct 28 12:39:22 2015 -0700
----------------------------------------------------------------------
.../state/stack/upgrade/ClusterGrouping.java | 76 ++++++--------------
.../1.4.0.2.0/package/scripts/flume_handler.py | 74 +++++++++----------
.../FLUME/1.4.0.2.0/package/scripts/params.py | 2 +-
.../0.4.0/package/scripts/ranger_admin.py | 18 ++---
.../0.4.0/package/scripts/ranger_usersync.py | 8 +--
.../0.4.0/package/scripts/service_check.py | 2 +-
.../0.4.0/package/scripts/setup_ranger_xml.py | 32 ++++-----
.../0.5.0.2.3/package/scripts/kms_server.py | 6 +-
.../SLIDER/0.60.0.2.2/package/scripts/params.py | 2 +-
.../0.60.0.2.2/package/scripts/slider_client.py | 27 ++++---
.../package/scripts/job_history_server.py | 7 +-
.../SPARK/1.2.0.2.2/package/scripts/params.py | 2 +-
.../1.2.0.2.2/package/scripts/spark_client.py | 3 +-
.../package/scripts/spark_thrift_server.py | 7 +-
.../HDP/2.1/upgrades/nonrolling-upgrade-2.3.xml | 10 +--
.../HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml | 16 ++---
.../HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml | 44 +++++++++---
.../HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml | 35 ++++++---
.../AmbariManagementControllerTest.java | 2 +-
.../ambari/server/state/UpgradeHelperTest.java | 34 +++++++++
.../stack/upgrade/ClusterGroupingTest.java | 75 -------------------
.../python/stacks/2.0.6/FLUME/test_flume.py | 4 +-
.../stacks/2.2/RANGER/test_ranger_admin.py | 4 +-
.../stacks/2.2/SLIDER/test_slider_client.py | 8 +--
.../stacks/2.2/SPARK/test_job_history_server.py | 4 +-
.../stacks/2.2/SPARK/test_spark_client.py | 4 +-
.../2.3/SPARK/test_spark_thrift_server.py | 4 +-
.../upgrades/upgrade_server_action_test.xml | 52 ++++++++++++++
28 files changed, 287 insertions(+), 275 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
index df416f2..d3af7ac 100644
--- a/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
+++ b/ambari-server/src/main/java/org/apache/ambari/server/state/stack/upgrade/ClusterGrouping.java
@@ -138,27 +138,9 @@ public class ClusterGrouping extends Grouping {
switch (task.getType()) {
case MANUAL:
- wrapper = getManualStageWrapper(upgradeContext, execution);
- break;
-
case SERVER_ACTION:
- wrapper = new StageWrapper(
- StageWrapper.Type.SERVER_SIDE_ACTION,
- execution.title,
- new TaskWrapper(null, null, Collections.<String>emptySet(), task));
- break;
-
case CONFIGURE:
- Set<String> matchingHosts = getHostsForExecuteStage(upgradeContext, execution);
- if (matchingHosts == null || matchingHosts.isEmpty()) { // No target services, don't create stage
- wrapper = null;
- } else {
- // We don't care about real host list
- wrapper = new StageWrapper(
- StageWrapper.Type.SERVER_SIDE_ACTION,
- execution.title,
- new TaskWrapper(null, null, Collections.<String>emptySet(), execution.task));
- }
+ wrapper = getServerActionStageWrapper(upgradeContext, execution);
break;
case EXECUTE:
@@ -180,20 +162,19 @@ public class ClusterGrouping extends Grouping {
}
/**
- * Return a Stage Wrapper for a manual task that runs on the server.
+ * Return a Stage Wrapper for a server side action that runs on the server.
* @param ctx Upgrade Context
* @param execution Execution Stage
* @return Returns a Stage Wrapper
*/
- private StageWrapper getManualStageWrapper(UpgradeContext ctx, ExecuteStage execution) {
+ private StageWrapper getServerActionStageWrapper(UpgradeContext ctx, ExecuteStage execution) {
String service = execution.service;
String component = execution.component;
String id = execution.id;
Task task = execution.task;
- if (null != id && id.equals("unhealthy-hosts")) {
-
+ if ( Task.Type.MANUAL == task.getType() && null != id && id.equals("unhealthy-hosts")) {
// !!! this specific task is used ONLY when there are unhealthy
if (ctx.getUnhealthy().isEmpty()) {
return null;
@@ -203,44 +184,31 @@ public class ClusterGrouping extends Grouping {
fillHostDetails(mt, ctx.getUnhealthy());
}
- Set<String> realHosts = getHostsForExecuteStage(ctx, execution);
-
- if (realHosts == null) { // No target services, don't create stage
- return null;
- } else {
- return new StageWrapper(
- StageWrapper.Type.SERVER_SIDE_ACTION,
- execution.title,
- new TaskWrapper(service, component, realHosts, task));
- }
- }
-
- /**
- * Looks for real hosts that match service/component restrictions of
- * an Execution Stage
- * @param ctx Upgrade Context
- * @param execution Execution Stage
- * @return <ul>
- * <li> empty Set if Execution Stage has no restrictions;
- * <li> set of real hosts that match restrictions if Execution Stage has
- * restrictions and some hosts match
- * <li> null if Execution Stage has restrictions, but no any host matches
- */
- static Set<String> getHostsForExecuteStage(UpgradeContext ctx, ExecuteStage execution) {
- String service = execution.service;
- String component = execution.component;
-
Set<String> realHosts = Collections.emptySet();
+
if (null != service && !service.isEmpty() &&
null != component && !component.isEmpty()) {
+
HostsType hosts = ctx.getResolver().getMasterAndHosts(service, component);
- if (null == hosts) {
- realHosts = null;
+
+ if (null == hosts || hosts.hosts.isEmpty()) {
+ return null;
} else {
- realHosts = new LinkedHashSet<>(hosts.hosts);
+ realHosts = new LinkedHashSet<String>(hosts.hosts);
}
}
- return realHosts;
+
+ if (Task.Type.MANUAL == task.getType()) {
+ return new StageWrapper(
+ StageWrapper.Type.SERVER_SIDE_ACTION,
+ execution.title,
+ new TaskWrapper(service, component, realHosts, task));
+ } else {
+ return new StageWrapper(
+ StageWrapper.Type.SERVER_SIDE_ACTION,
+ execution.title,
+ new TaskWrapper(null, null, Collections.<String>emptySet(), task));
+ }
}
/**
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume_handler.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume_handler.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume_handler.py
index e1fe577..937547c 100644
--- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume_handler.py
+++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/flume_handler.py
@@ -33,57 +33,36 @@ from ambari_commons import OSConst
from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
class FlumeHandler(Script):
+ def configure(self, env):
+ import params
+ env.set_params(params)
+ flume(action='config')
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
+@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT)
+class FlumeHandlerLinux(FlumeHandler):
def get_stack_to_component(self):
return {"HDP": "flume-server"}
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
def install(self, env):
import params
self.install_packages(env)
env.set_params(params)
- @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
- def install(self, env):
- if not check_windows_service_exists(service_mapping.flume_win_service_name):
- self.install_packages(env)
- self.configure(env)
-
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
- def start(self, env, rolling_restart=False):
+ def start(self, env, upgrade_type=None):
import params
env.set_params(params)
self.configure(env)
flume(action='start')
- @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
- def start(self, env):
- import params
- env.set_params(params)
- self.configure(env)
- Service(service_mapping.flume_win_service_name, action="start")
-
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
- def stop(self, env, rolling_restart=False):
+ def stop(self, env, upgrade_type=None):
import params
env.set_params(params)
flume(action='stop')
# only backup data on upgrade
- if rolling_restart and params.upgrade_direction == Direction.UPGRADE:
+ if upgrade_type is not None and params.upgrade_direction == Direction.UPGRADE:
flume_upgrade.post_stop_backup()
- @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
- def stop(self, env):
- Service(service_mapping.flume_win_service_name, action="stop")
-
- def configure(self, env):
- import params
- env.set_params(params)
- flume(action='config')
-
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
def status(self, env):
import params
env.set_params(params)
@@ -94,8 +73,8 @@ class FlumeHandler(Script):
json['processes'] = processes
self.put_structured_out(json)
- # only throw an exception if there are agents defined and there is a
- # problem with the processes; if there are no agents defined, then
+ # only throw an exception if there are agents defined and there is a
+ # problem with the processes; if there are no agents defined, then
# the service should report STARTED (green) ONLY if the desired state is started. otherwise, INSTALLED (red)
if len(expected_agents) > 0:
for proc in processes:
@@ -104,14 +83,7 @@ class FlumeHandler(Script):
elif len(expected_agents) == 0 and 'INSTALLED' == get_desired_state():
raise ComponentIsNotRunning()
-
- @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
- def status(self, env):
- import params
- check_windows_service_status(service_mapping.flume_win_service_name)
-
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
@@ -120,7 +92,7 @@ class FlumeHandler(Script):
if not params.version or Script.is_hdp_stack_less_than("2.2"):
return
- Logger.info("Executing Flume Rolling Upgrade pre-restart")
+ Logger.info("Executing Flume Stack Upgrade pre-restart")
conf_select.select(params.stack_name, "flume", params.version)
hdp_select.select("flume-server", params.version)
@@ -128,5 +100,25 @@ class FlumeHandler(Script):
if params.upgrade_direction == Direction.UPGRADE:
flume_upgrade.pre_start_restore()
+@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)
+class FlumeHandlerWindows(FlumeHandler):
+ def install(self, env):
+ if not check_windows_service_exists(service_mapping.flume_win_service_name):
+ self.install_packages(env)
+ self.configure(env)
+
+ def start(self, env, upgrade_type=None):
+ import params
+ env.set_params(params)
+ self.configure(env)
+ Service(service_mapping.flume_win_service_name, action="start")
+
+ def stop(self, env, upgrade_type=None):
+ Service(service_mapping.flume_win_service_name, action="stop")
+
+ def status(self, env):
+ import params
+ check_windows_service_status(service_mapping.flume_win_service_name)
+
if __name__ == "__main__":
FlumeHandler().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
index 9a6d5b6..d2f2d02 100644
--- a/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/FLUME/1.4.0.2.0/package/scripts/params.py
@@ -33,7 +33,7 @@ config = Script.get_config()
stack_name = default("/hostLevelParams/stack_name", None)
host_sys_prepped = default("/hostLevelParams/host_sys_prepped", False)
-# New Cluster Stack Version that is defined during the RESTART of a Rolling Upgrade
+# New Cluster Stack Version that is defined during the RESTART of a Stack Upgrade
version = default("/commandParams/version", None)
user_group = config['configurations']['cluster-env']['user_group']
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
index 23648e1..a0007b3 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_admin.py
@@ -48,14 +48,14 @@ class RangerAdmin(Script):
from setup_ranger_xml import setup_java_patch
setup_java_patch()
- def stop(self, env, rolling_restart=False):
+ def stop(self, env, upgrade_type=None):
import params
env.set_params(params)
Execute(format('{params.ranger_stop}'), environment={'JAVA_HOME': params.java_home}, user=params.unix_user)
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
@@ -63,17 +63,17 @@ class RangerAdmin(Script):
if params.xml_configurations_supported:
from setup_ranger_xml import ranger, setup_ranger_db, setup_java_patch
- ranger('ranger_admin', rolling_upgrade=True)
- setup_ranger_db(rolling_upgrade=True)
- setup_java_patch(rolling_upgrade=True)
+ ranger('ranger_admin', upgrade_type=upgrade_type)
+ setup_ranger_db(upgrade_type=upgrade_type)
+ setup_java_patch(upgrade_type=upgrade_type)
self.set_ru_rangeradmin_in_progress()
- def post_rolling_restart(self,env):
+ def post_upgrade_restart(self,env, upgrade_type=None):
if os.path.isfile(RangerAdmin.upgrade_marker_file):
os.remove(RangerAdmin.upgrade_marker_file)
- def start(self, env, rolling_restart=False):
+ def start(self, env, upgrade_type=None):
import params
env.set_params(params)
self.configure(env)
@@ -86,7 +86,7 @@ class RangerAdmin(Script):
if code != 0:
if self.is_ru_rangeradmin_in_progress():
- Logger.info('Ranger admin process not running - skipping as rolling upgrade is in progress')
+ Logger.info('Ranger admin process not running - skipping as stack upgrade is in progress')
else:
Logger.debug('Ranger admin process not running')
raise ComponentIsNotRunning()
@@ -105,7 +105,7 @@ class RangerAdmin(Script):
def set_ru_rangeradmin_in_progress(self):
config_dir = os.path.dirname(RangerAdmin.upgrade_marker_file)
try:
- msg = "Starting RU"
+ msg = "Starting Upgrade"
if (not os.path.exists(config_dir)):
os.makedirs(config_dir)
ofp = open(RangerAdmin.upgrade_marker_file, 'w')
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
index 6a2d4a1..72133bc 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/ranger_usersync.py
@@ -43,14 +43,14 @@ class RangerUsersync(Script):
ranger('ranger_usersync')
- def start(self, env, rolling_restart=False):
+ def start(self, env, upgrade_type=None):
import params
env.set_params(params)
self.configure(env)
ranger_service('ranger_usersync')
- def stop(self, env, rolling_restart=False):
+ def stop(self, env, upgrade_type=None):
import params
env.set_params(params)
@@ -65,14 +65,14 @@ class RangerUsersync(Script):
raise ComponentIsNotRunning()
pass
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
upgrade.prestart(env, "ranger-usersync")
if params.xml_configurations_supported:
from setup_ranger_xml import ranger
- ranger('ranger_usersync', rolling_upgrade=True)
+ ranger('ranger_usersync', upgrade_type=upgrade_type)
def get_stack_to_component(self):
return {"HDP": "ranger-usersync"}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/service_check.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/service_check.py
index c7a89fa..699e3c4 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/service_check.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/service_check.py
@@ -37,7 +37,7 @@ class RangerServiceCheck(Script):
def check_ranger_admin_service(self, ranger_external_url):
if (self.is_ru_rangeradmin_in_progress()):
- Logger.info('Ranger admin process not running - skipping as rolling upgrade is in progress')
+ Logger.info('Ranger admin process not running - skipping as stack upgrade is in progress')
else:
Execute(format("curl -s -o /dev/null -w'%{{http_code}}' --negotiate -u: -k {ranger_external_url}/login.jsp | grep 200"),
tries = 10,
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
index d4b9a86..a4fe047 100644
--- a/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
+++ b/ambari-server/src/main/resources/common-services/RANGER/0.4.0/package/scripts/setup_ranger_xml.py
@@ -33,17 +33,17 @@ from resource_management.core.shell import as_sudo
# This file contains functions used for setup/configure of Ranger Admin and Ranger Usersync.
# The design is to mimic what is done by the setup.sh script bundled by Ranger component currently.
-def ranger(name=None, rolling_upgrade=False):
+def ranger(name=None, upgrade_type=None):
"""
parameter name: name of ranger service component
"""
if name == 'ranger_admin':
- setup_ranger_admin(rolling_upgrade=rolling_upgrade)
+ setup_ranger_admin(upgrade_type=upgrade_type)
if name == 'ranger_usersync':
- setup_usersync(rolling_upgrade=rolling_upgrade)
+ setup_usersync(upgrade_type=upgrade_type)
-def setup_ranger_admin(rolling_upgrade=False):
+def setup_ranger_admin(upgrade_type=None):
import params
ranger_home = params.ranger_home
@@ -55,7 +55,7 @@ def setup_ranger_admin(rolling_upgrade=False):
recursive = True
)
- if rolling_upgrade:
+ if upgrade_type is not None:
ranger_home = format("/usr/hdp/{version}/ranger-admin")
ranger_conf = format("/usr/hdp/{version}/ranger-admin/conf")
@@ -85,7 +85,7 @@ def setup_ranger_admin(rolling_upgrade=False):
only_if=format("ls {ranger_home}/ews/webapp/WEB-INF/classes/conf"),
sudo=True)
- if rolling_upgrade:
+ if upgrade_type is not None:
src_file = format('{ranger_home}/ews/webapp/WEB-INF/classes/conf.dist/ranger-admin-default-site.xml')
dst_file = format('{ranger_home}/conf/ranger-admin-default-site.xml')
Execute(('cp', '-f', src_file, dst_file), sudo=True)
@@ -127,10 +127,10 @@ def setup_ranger_admin(rolling_upgrade=False):
group=params.unix_group,
)
- do_keystore_setup(rolling_upgrade=rolling_upgrade)
+ do_keystore_setup(upgrade_type=upgrade_type)
-def setup_ranger_db(rolling_upgrade=False):
+def setup_ranger_db(upgrade_type=None):
import params
File(params.downloaded_custom_connector,
@@ -152,7 +152,7 @@ def setup_ranger_db(rolling_upgrade=False):
File(params.driver_curl_target, mode=0644)
ranger_home = params.ranger_home
- if rolling_upgrade:
+ if upgrade_type is not None:
ranger_home = format("/usr/hdp/{version}/ranger-admin")
if params.db_flavor.lower() == 'sqla':
@@ -210,11 +210,11 @@ def setup_ranger_db(rolling_upgrade=False):
)
-def setup_java_patch(rolling_upgrade=False):
+def setup_java_patch(upgrade_type=None):
import params
ranger_home = params.ranger_home
- if rolling_upgrade:
+ if upgrade_type is not None:
ranger_home = format("/usr/hdp/{version}/ranger-admin")
env_dict = {'RANGER_ADMIN_HOME':ranger_home, 'JAVA_HOME':params.java_home}
@@ -229,14 +229,14 @@ def setup_java_patch(rolling_upgrade=False):
)
-def do_keystore_setup(rolling_upgrade=False):
+def do_keystore_setup(upgrade_type=None):
import params
ranger_home = params.ranger_home
cred_lib_path = params.cred_lib_path
cred_setup_prefix = params.cred_setup_prefix
- if rolling_upgrade:
+ if upgrade_type is not None:
ranger_home = format("/usr/hdp/{version}/ranger-admin")
cred_lib_path = os.path.join(ranger_home,"cred","lib","*")
cred_setup_prefix = (format('{ranger_home}/ranger_credential_helper.py'), '-l', cred_lib_path)
@@ -280,7 +280,7 @@ def password_validation(password):
else:
Logger.info("password validated")
-def setup_usersync(rolling_upgrade=False):
+def setup_usersync(upgrade_type=None):
import params
usersync_home = params.usersync_home
@@ -289,7 +289,7 @@ def setup_usersync(rolling_upgrade=False):
if not is_empty(params.ranger_usersync_ldap_ldapbindpassword) and params.ug_sync_source == 'org.apache.ranger.ldapusersync.process.LdapUserGroupBuilder':
password_validation(params.ranger_usersync_ldap_ldapbindpassword)
- if rolling_upgrade:
+ if upgrade_type is not None:
usersync_home = format("/usr/hdp/{version}/ranger-usersync")
ranger_ugsync_conf = format("/usr/hdp/{version}/ranger-usersync/conf")
@@ -308,7 +308,7 @@ def setup_usersync(rolling_upgrade=False):
owner = params.unix_user
)
- if rolling_upgrade:
+ if upgrade_type is not None:
src_file = format('{usersync_home}/conf.dist/ranger-ugsync-default.xml')
dst_file = format('{usersync_home}/conf/ranger-ugsync-default.xml')
Execute(('cp', '-f', src_file, dst_file), sudo=True)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
index 18d1ba1..4ffc8eb 100755
--- a/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
+++ b/ambari-server/src/main/resources/common-services/RANGER_KMS/0.5.0.2.3/package/scripts/kms_server.py
@@ -41,13 +41,13 @@ class KmsServer(Script):
self.configure(env)
setup_java_patch()
- def stop(self, env, rolling_restart=False):
+ def stop(self, env, upgrade_type=None):
import params
env.set_params(params)
kms_service(action = 'stop')
- def start(self, env, rolling_restart=False):
+ def start(self, env, upgrade_type=None):
import params
env.set_params(params)
@@ -69,7 +69,7 @@ class KmsServer(Script):
env.set_params(params)
kms()
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params.py b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params.py
index 61033c0..7b6a490 100644
--- a/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/SLIDER/0.60.0.2.2/package/scripts/params.py
@@ -37,7 +37,7 @@ config = Script.get_config()
stack_name = default("/hostLevelParams/stack_name", None)
-# New Cluster Stack Version that is defined during the RESTART of a Rolling Upgrade
+# New Cluster Stack Version that is defined during the RESTART of a Stack Upgrade
version = default("/commandParams/version", None)
stack_version_unformatted = str(config['hostLevelParams']['stack_version'])
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/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 e0ec7d4..5865048 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
@@ -26,13 +26,15 @@ from ambari_commons import OSConst
from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
class SliderClient(Script):
+ def status(self, env):
+ raise ClientComponentHasNoStatus()
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
+@OsFamilyImpl(os_family=OsFamilyImpl.DEFAULT)
+class SliderClientLinux(SliderClient):
def get_stack_to_component(self):
return {"HDP": "slider-client"}
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
@@ -46,27 +48,22 @@ class SliderClient(Script):
conf_select.select(params.stack_name, "hadoop", params.version)
hdp_select.select("hadoop-client", params.version)
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
def install(self, env):
self.install_packages(env)
self.configure(env)
- @OsFamilyFuncImpl(os_family=OSConst.WINSRV_FAMILY)
- def install(self, env):
- import params
- if params.slider_home is None:
- self.install_packages(env)
- self.configure(env)
-
- @OsFamilyFuncImpl(os_family=OsFamilyImpl.DEFAULT)
def configure(self, env):
import params
env.set_params(params)
slider()
- def status(self, env):
- raise ClientComponentHasNoStatus()
-
+@OsFamilyImpl(os_family=OSConst.WINSRV_FAMILY)
+class SliderClientWindows(SliderClient):
+ def install(self, env):
+ import params
+ if params.slider_home is None:
+ self.install_packages(env)
+ self.configure(env)
if __name__ == "__main__":
SliderClient().execute()
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/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 4923383..943664a 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
@@ -47,14 +47,14 @@ class JobHistoryServer(Script):
setup_spark(env, 'server', action = 'config')
- def start(self, env, rolling_restart=False):
+ def start(self, env, upgrade_type=None):
import params
env.set_params(params)
self.configure(env)
spark_service('jobhistoryserver', action='start')
- def stop(self, env, rolling_restart=False):
+ def stop(self, env, upgrade_type=None):
import params
env.set_params(params)
@@ -70,11 +70,12 @@ class JobHistoryServer(Script):
def get_stack_to_component(self):
return {"HDP": "spark-historyserver"}
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+ Logger.info("Executing Spark Job History Server Stack Upgrade pre-restart")
conf_select.select(params.stack_name, "spark", params.version)
hdp_select.select("spark-historyserver", params.version)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/params.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/params.py b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/params.py
index c0cffbc..e5b2fb8 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/params.py
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/params.py
@@ -51,7 +51,7 @@ stack_version_unformatted = str(config['hostLevelParams']['stack_version'])
hdp_stack_version = format_hdp_stack_version(stack_version_unformatted)
host_sys_prepped = default("/hostLevelParams/host_sys_prepped", False)
-# New Cluster Stack Version that is defined during the RESTART of a Rolling Upgrade
+# New Cluster Stack Version that is defined during the RESTART of a Stack Upgrade
version = default("/commandParams/version", None)
# TODO! FIXME! Version check is not working as of today :
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/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 ce4cdcc..d4b8f85 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
@@ -46,11 +46,12 @@ class SparkClient(Script):
def get_stack_to_component(self):
return {"HDP": "spark-client"}
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
if params.version and compare_versions(format_hdp_stack_version(params.version), '2.2.0.0') >= 0:
+ Logger.info("Executing Spark Client Stack Upgrade pre-restart")
conf_select.select(params.stack_name, "spark", params.version)
hdp_select.select("spark-client", params.version)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_thrift_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_thrift_server.py b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_thrift_server.py
index 170fbca..d2145e2 100644
--- a/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_thrift_server.py
+++ b/ambari-server/src/main/resources/common-services/SPARK/1.2.0.2.2/package/scripts/spark_thrift_server.py
@@ -46,14 +46,14 @@ class SparkThriftServer(Script):
env.set_params(params)
setup_spark(env, 'server', action = 'config')
- def start(self, env, rolling_restart=False):
+ def start(self, env, upgrade_type=None):
import params
env.set_params(params)
self.configure(env)
spark_service('sparkthriftserver',action='start')
- def stop(self, env, rolling_restart=False):
+ def stop(self, env, upgrade_type=None):
import params
env.set_params(params)
spark_service('sparkthriftserver',action='stop')
@@ -66,11 +66,12 @@ class SparkThriftServer(Script):
def get_stack_to_component(self):
return {"HDP": "spark-thriftserver"}
- def pre_rolling_restart(self, env):
+ def pre_upgrade_restart(self, env, upgrade_type=None):
import params
env.set_params(params)
if params.version and compare_versions(format_hdp_stack_version(params.version), '2.3.2.0') >= 0:
+ Logger.info("Executing Spark Thrift Server Stack Upgrade pre-restart")
conf_select.select(params.stack_name, "spark", params.version)
hdp_select.select("spark-thriftserver", params.version)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/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 25fd6ab..415f6db 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
@@ -118,7 +118,7 @@
</execute-stage>
</group>
- <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services (HDFS, HBase, ZooKeeper and Ranger)">
+ <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services">
<direction>UPGRADE</direction>
<skippable>true</skippable>
<service-check>false</service-check>
@@ -149,26 +149,26 @@
<!-- If the user attempts a downgrade after this point, they will need to restore backups
before starting any of the services. -->
- <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Restore Oozie Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Oozie Server database on {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Restore Hive Metastore">
<task xsi:type="manual">
<message>Before continuing, please restore the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Restore HBASE Snapshot">
<task xsi:type="execute" hosts="master">
<script>scripts/hbase_upgrade.py</script>
<function>restore_snapshot</function>
</task>
</execute-stage>
- <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <execute-stage service="HDFS" component="NAMENODE" title="Restore HDFS Snapshot">
<task xsi:type="execute" hosts="master">
<script>scripts/namenode.py</script>
<function>restore_snapshot</function>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
index 63f9f8d..5f00011 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.2.xml
@@ -135,14 +135,14 @@
</task>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please backup the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
</group>
- <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services (HDFS, HBase, ZooKeeper and Ranger)">
+ <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services">
<direction>UPGRADE</direction>
<skippable>true</skippable>
<service-check>false</service-check>
@@ -178,39 +178,39 @@
<!-- If the user attempts a downgrade after this point, they will need to restore backups
before starting any of the services. -->
- <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Restore Oozie Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Oozie Server database on {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Restore Hive Metastore">
<task xsi:type="manual">
<message>Before continuing, please restore the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Restore Knox Data">
<task xsi:type="manual">
<message>Before continuing, please restore the Knox data. E.g., "cp -RL ~/knox_backup/* /etc/knox/data/security/" on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Restore HBASE Snapshot">
<task xsi:type="execute" hosts="master">
<script>scripts/hbase_upgrade.py</script>
<function>restore_snapshot</function> <!-- TODO, this function name is new. -->
</task>
</execute-stage>
- <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <execute-stage service="HDFS" component="NAMENODE" title="Restore HDFS Snapshot">
<task xsi:type="execute" hosts="master"> <!-- TODO, this can be any NameNode, not just the active. -->
<script>scripts/namenode.py</script>
<function>restore_snapshot</function> <!-- TODO, this function doesn't exist yet. -->
</task>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Restore Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
</task>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
index 44413d3..2e0dff4 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.2/upgrades/nonrolling-upgrade-2.3.xml
@@ -158,7 +158,7 @@
</task>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please backup the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
</task>
@@ -167,7 +167,7 @@
<!--TODO: Ranger KMS seems to be absent at 2.2 stack, not backing it up-->
</group>
- <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services (HDFS, HBase, ZooKeeper and Ranger)">
+ <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services">
<direction>UPGRADE</direction>
<skippable>true</skippable>
<service-check>false</service-check>
@@ -203,39 +203,39 @@
<!-- If the user attempts a downgrade after this point, they will need to restore backups
before starting any of the services. -->
- <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Restore Oozie Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Oozie Server database on {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Restore Hive Metastore">
<task xsi:type="manual">
<message>Before continuing, please restore the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Restore Knox Data">
<task xsi:type="manual">
<message>Before continuing, please restore the Knox data. E.g., "cp -RL ~/knox_backup/* /etc/knox/data/security/" on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Restore HBASE Snapshot">
<task xsi:type="execute" hosts="master">
<script>scripts/hbase_upgrade.py</script>
<function>restore_snapshot</function>
</task>
</execute-stage>
- <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <execute-stage service="HDFS" component="NAMENODE" title="Restore HDFS Snapshot">
<task xsi:type="execute" hosts="master">
<script>scripts/namenode.py</script>
<function>restore_snapshot</function>
</task>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Restore Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
</task>
@@ -256,7 +256,7 @@
<task xsi:type="configure" id="hdp_2_3_0_0_update_ranger_admin"/>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Apply config changes for Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Calculating Ranger Properties">
<task xsi:type="server_action" summary="Calculating Ranger Properties" class="org.apache.ambari.server.serveraction.upgrades.RangerConfigCalculation" />
</execute-stage>
@@ -500,6 +500,13 @@
<service name="RANGER">
<component>RANGER_ADMIN</component>
<component>RANGER_USERSYNC</component>
+ </service>
+ </group>
+
+ <group xsi:type="restart" name="RANGER_KMS" title="Ranger KMS">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="RANGER_KMS">
<component>RANGER_KMS_SERVER</component>
</service>
</group>
@@ -517,7 +524,7 @@
</service>
</group>
- <group xsi:type="cluster" name="HDFS_LEAFE_SAFEMODE" title="HDFS - Wait to leave Safemode">
+ <group xsi:type="cluster" name="HDFS_LEAVE_SAFEMODE" title="HDFS - Wait to leave Safemode">
<service-check>false</service-check>
<skippable>true</skippable>
<direction>UPGRADE</direction>
@@ -595,6 +602,15 @@
</service>
</group>
+ <group xsi:type="restart" name="SPARK" title="Spark">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="SPARK">
+ <component>SPARK_JOBHISTORYSERVER</component>
+ <component>SPARK_CLIENT</component> <!-- TODO, parallelize -->
+ </service>
+ </group>
+
<!-- Upgrade Oozie DB only on Upgrade direction, and always create a new ShareLib. -->
<group name="Upgrade Oozie" title="Upgrade Oozie Database">
<direction>UPGRADE</direction>
@@ -671,6 +687,14 @@
</execute-stage>
</group>
+ <group xsi:type="restart" name="SLIDER" title="Slider">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="SLIDER">
+ <component>SLIDER</component>
+ </service>
+ </group>
+
<group xsi:type="restart" name="FLUME" title="Flume">
<service-check>false</service-check>
<skippable>true</skippable>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
index 407b22b..e6dea75 100644
--- a/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
+++ b/ambari-server/src/main/resources/stacks/HDP/2.3/upgrades/nonrolling-upgrade-2.3.xml
@@ -136,20 +136,20 @@
</task>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please backup the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Pre Upgrade Ranger KMS">
+ <execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Backup Ranger KMS Database">
<task xsi:type="manual">
<message>Before continuing, please backup Ranger KMS database</message>
</task>
</execute-stage>
</group>
- <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services (HDFS, HBase, ZooKeeper and Ranger)">
+ <group xsi:type="stop" name="STOP_LOW_LEVEL_SERVICE_COMPONENTS" title="Stop Components for Core Services">
<direction>UPGRADE</direction>
<skippable>true</skippable>
<service-check>false</service-check>
@@ -172,6 +172,9 @@
<service name="RANGER">
<component>RANGER_USERSYNC</component>
<component>RANGER_ADMIN</component>
+ </service>
+
+ <service name="RANGER_KMS">
<component>RANGER_KMS_SERVER</component>
</service>
@@ -187,43 +190,50 @@
<!-- If the user attempts a downgrade after this point, they will need to restore backups
before starting any of the services. -->
- <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Backup Oozie Database">
+ <execute-stage service="OOZIE" component="OOZIE_SERVER" title="Restore Oozie Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Oozie Server database on {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HIVE" component="HIVE_METASTORE" title="Backup Hive Metastore">
+ <execute-stage service="HIVE" component="HIVE_METASTORE" title="Restore Hive Metastore">
<task xsi:type="manual">
<message>Before continuing, please restore the Hive Metastore database located on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Backup Knox Data">
+ <execute-stage service="KNOX" component="KNOX_GATEWAY" title="Restore Knox Data">
<task xsi:type="manual">
<message>Before continuing, please restore the Knox data. E.g., "cp -RL ~/knox_backup/* /etc/knox/data/security/" on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
- <execute-stage service="HBASE" component="HBASE_MASTER" title="Snapshot HBASE">
+ <execute-stage service="HBASE" component="HBASE_MASTER" title="Restore HBASE Snapshot">
<task xsi:type="execute" hosts="master">
<script>scripts/hbase_upgrade.py</script>
<function>restore_snapshot</function> <!-- TODO (Alejandro), this function name is new. -->
</task>
</execute-stage>
- <execute-stage service="HDFS" component="NAMENODE" title="Snapshot HDFS">
+ <execute-stage service="HDFS" component="NAMENODE" title="Restore HDFS Snapshot">
<task xsi:type="execute" hosts="master"> <!-- TODO (Alejandro), this can be any NameNode, not just the active. -->
<script>scripts/namenode.py</script>
<function>restore_snapshot</function> <!-- TODO (Alejandro), this function doesn't exist yet. -->
</task>
</execute-stage>
- <execute-stage service="RANGER" component="RANGER_ADMIN" title="Backup Ranger">
+ <execute-stage service="RANGER" component="RANGER_ADMIN" title="Restore Ranger Database">
<task xsi:type="manual">
<message>Before continuing, please restore the Ranger Admin database and Ranger Audit database on the following host(s): {{hosts.all}}.</message>
</task>
</execute-stage>
+
+ <execute-stage service="RANGER_KMS" component="RANGER_KMS_SERVER" title="Restore Ranger KMS Database">
+ <task xsi:type="manual">
+ <message>Before continuing, please restore Ranger KMS database</message>
+ </task>
+ </execute-stage>
+
</group>
<!-- After processing this group, will change the effective Stack of the UpgradeContext object. -->
@@ -262,6 +272,13 @@
<service name="RANGER">
<component>RANGER_ADMIN</component>
<component>RANGER_USERSYNC</component>
+ </service>
+ </group>
+
+ <group name="RANGER_KMS" title="Ranger KMS">
+ <service-check>false</service-check>
+ <skippable>true</skippable>
+ <service name="RANGER_KMS">
<component>RANGER_KMS_SERVER</component>
</service>
</group>
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
index 5de7737..8d43349 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/controller/AmbariManagementControllerTest.java
@@ -7216,7 +7216,7 @@ public class AmbariManagementControllerTest {
Assert.assertEquals(1, responsesWithParams.size());
StackVersionResponse resp = responsesWithParams.iterator().next();
assertNotNull(resp.getUpgradePacks());
- assertEquals(6, resp.getUpgradePacks().size());
+ assertEquals(7, resp.getUpgradePacks().size());
assertTrue(resp.getUpgradePacks().contains("upgrade_test"));
}
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
index 2dab9e3..0c38802 100644
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
+++ b/ambari-server/src/test/java/org/apache/ambari/server/state/UpgradeHelperTest.java
@@ -242,6 +242,40 @@ public class UpgradeHelperTest {
assertEquals(8, groups.get(3).items.size());
}
+ @Test
+ public void testUpgradeServerActionOrchestration() throws Exception {
+ Map<String, UpgradePack> upgrades = ambariMetaInfo.getUpgradePacks("HDP", "2.1.1");
+
+ ServiceInfo si = ambariMetaInfo.getService("HDP", "2.1.1", "ZOOKEEPER");
+ si.setDisplayName("Zk");
+ ComponentInfo ci = si.getComponentByName("ZOOKEEPER_SERVER");
+ ci.setDisplayName("ZooKeeper1 Server2");
+
+ assertTrue(upgrades.containsKey("upgrade_server_action_test"));
+ UpgradePack upgrade = upgrades.get("upgrade_server_action_test");
+ assertNotNull(upgrade);
+
+ makeCluster();
+
+ UpgradeContext context = new UpgradeContext(m_masterHostResolver, HDP_21,
+ HDP_21, UPGRADE_VERSION, Direction.UPGRADE, UpgradeType.ROLLING);
+
+ List<UpgradeGroupHolder> groups = m_upgradeHelper.createSequence(upgrade, context);
+
+ assertEquals(1, groups.size());
+ UpgradeGroupHolder group = groups.get(0);
+ assertEquals("CLUSTER_SERVER_ACTIONS", group.name);
+ List<StageWrapper> stageWrappers = group.items;
+ assertEquals(6, stageWrappers.size());
+ assertEquals("Pre Upgrade", stageWrappers.get(0).getText());
+ assertEquals("Pre Upgrade Zookeeper", stageWrappers.get(1).getText());
+ assertEquals("Configuring", stageWrappers.get(2).getText());
+ assertEquals("Configuring HDFS", stageWrappers.get(3).getText());
+ assertEquals("Calculating Properties", stageWrappers.get(4).getText());
+ assertEquals("Calculating HDFS Properties", stageWrappers.get(5).getText());
+
+ }
+
/**
* Tests that hosts in MM are not included in the upgrade.
*
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/ClusterGroupingTest.java
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/ClusterGroupingTest.java b/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/ClusterGroupingTest.java
deleted file mode 100644
index 0729e2a..0000000
--- a/ambari-server/src/test/java/org/apache/ambari/server/state/stack/upgrade/ClusterGroupingTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/**
- * 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.upgrade;
-
-import org.apache.ambari.server.stack.HostsType;
-import org.apache.ambari.server.stack.MasterHostResolver;
-import org.apache.ambari.server.state.UpgradeContext;
-import org.junit.Test;
-
-import java.util.LinkedHashSet;
-import java.util.Set;
-
-import static org.easymock.EasyMock.*;
-import static org.junit.Assert.*;
-
-public class ClusterGroupingTest {
-
- @Test
- public void testGetHostsForExecuteStage() throws Exception {
- UpgradeContext ctx = createNiceMock(UpgradeContext.class);
- ClusterGrouping.ExecuteStage execution = new ClusterGrouping.ExecuteStage();
- MasterHostResolver resolverMock = createMock(MasterHostResolver.class);
- expect(ctx.getResolver()).andReturn(resolverMock).anyTimes();
- replay(ctx);
-
- // Check case when execution stage defines no service/component requirements
- replay(resolverMock);
- Set<String> realHosts = ClusterGrouping.getHostsForExecuteStage(ctx, execution);
- assertNotNull(realHosts);
- assertTrue(realHosts.isEmpty());
- verify(resolverMock);
-
- // Check case when execution stage defines service/component requirements,
- // but no hosts match them
- execution.service = "HBASE";
- execution.component = "HBASE_MASTER";
- reset(resolverMock);
- expect(resolverMock.getMasterAndHosts(anyString(), anyString())).andReturn(null).once();
- replay(resolverMock);
- realHosts = ClusterGrouping.getHostsForExecuteStage(ctx, execution);
- assertNull(realHosts);
- verify(resolverMock);
-
- // Check case when execution stage defines service/component requirements,
- // and some hosts match them
- execution.service = "HBASE";
- execution.component = "HBASE_MASTER";
- reset(resolverMock);
- HostsType hostsType = new HostsType();
- hostsType.hosts.add("host1");
- hostsType.hosts.add("host2");
- expect(resolverMock.getMasterAndHosts(anyString(), anyString())).andReturn(hostsType).once();
- replay(resolverMock);
- realHosts = ClusterGrouping.getHostsForExecuteStage(ctx, execution);
- assertNotNull(realHosts);
- assertArrayEquals(new String [] {"host1", "host2"}, realHosts.toArray());
- verify(resolverMock);
- }
-}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/python/stacks/2.0.6/FLUME/test_flume.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.0.6/FLUME/test_flume.py b/ambari-server/src/test/python/stacks/2.0.6/FLUME/test_flume.py
index f566398..a3ce0c3 100644
--- a/ambari-server/src/test/python/stacks/2.0.6/FLUME/test_flume.py
+++ b/ambari-server/src/test/python/stacks/2.0.6/FLUME/test_flume.py
@@ -526,10 +526,10 @@ class TestFlumeHandler(RMFTestCase):
owner="flume",
content=content)
- def test_pre_rolling_restart(self):
+ def test_pre_upgrade_restart(self):
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/flume_handler.py",
classname = "FlumeHandler",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_file="flume_22.json",
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES)
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/python/stacks/2.2/RANGER/test_ranger_admin.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/RANGER/test_ranger_admin.py b/ambari-server/src/test/python/stacks/2.2/RANGER/test_ranger_admin.py
index f2d8178..ecb13f6 100644
--- a/ambari-server/src/test/python/stacks/2.2/RANGER/test_ranger_admin.py
+++ b/ambari-server/src/test/python/stacks/2.2/RANGER/test_ranger_admin.py
@@ -195,7 +195,7 @@ class TestRangerAdmin(RMFTestCase):
)
- def test_pre_rolling_upgrade_23(self, ):
+ def test_pre_upgrade_restart_23(self, ):
config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/ranger-admin-upgrade.json"
with open(config_file, "r") as f:
json_content = json.load(f)
@@ -204,7 +204,7 @@ class TestRangerAdmin(RMFTestCase):
mocks_dict = {}
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/ranger_usersync.py",
classname = "RangerAdmin",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_dict = json_content,
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES,
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/python/stacks/2.2/SLIDER/test_slider_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/SLIDER/test_slider_client.py b/ambari-server/src/test/python/stacks/2.2/SLIDER/test_slider_client.py
index 9329543..077c23d 100644
--- a/ambari-server/src/test/python/stacks/2.2/SLIDER/test_slider_client.py
+++ b/ambari-server/src/test/python/stacks/2.2/SLIDER/test_slider_client.py
@@ -115,10 +115,10 @@ class TestSliderClient(RMFTestCase):
self.assertNoMoreResources()
- def test_pre_rolling_restart(self):
+ def test_pre_upgrade_restart(self):
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/slider_client.py",
classname = "SliderClient",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_file="default.json",
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES)
@@ -128,7 +128,7 @@ class TestSliderClient(RMFTestCase):
self.assertNoMoreResources()
- def test_pre_rolling_restart_23(self):
+ def test_pre_upgrade_restart_23(self):
config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/default.json"
with open(config_file, "r") as f:
json_content = json.load(f)
@@ -137,7 +137,7 @@ class TestSliderClient(RMFTestCase):
mocks_dict = {}
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/slider_client.py",
classname = "SliderClient",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_dict = json_content,
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES,
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/python/stacks/2.2/SPARK/test_job_history_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/SPARK/test_job_history_server.py b/ambari-server/src/test/python/stacks/2.2/SPARK/test_job_history_server.py
index 4a07e91..2a45c09 100644
--- a/ambari-server/src/test/python/stacks/2.2/SPARK/test_job_history_server.py
+++ b/ambari-server/src/test/python/stacks/2.2/SPARK/test_job_history_server.py
@@ -289,7 +289,7 @@ class TestJobHistoryServer(RMFTestCase):
)
@patch("resource_management.libraries.functions.copy_tarball.copy_to_hdfs")
- def test_pre_rolling_restart_23(self, copy_to_hdfs_mock):
+ def test_pre_upgrade_restart_23(self, copy_to_hdfs_mock):
config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/default.json"
with open(config_file, "r") as f:
json_content = json.load(f)
@@ -300,7 +300,7 @@ class TestJobHistoryServer(RMFTestCase):
mocks_dict = {}
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/job_history_server.py",
classname = "JobHistoryServer",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_dict = json_content,
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES,
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/python/stacks/2.2/SPARK/test_spark_client.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.2/SPARK/test_spark_client.py b/ambari-server/src/test/python/stacks/2.2/SPARK/test_spark_client.py
index b9c2878..9516d2f 100644
--- a/ambari-server/src/test/python/stacks/2.2/SPARK/test_spark_client.py
+++ b/ambari-server/src/test/python/stacks/2.2/SPARK/test_spark_client.py
@@ -127,7 +127,7 @@ class TestSparkClient(RMFTestCase):
group = 'spark',
)
- def test_pre_rolling_restart_23(self):
+ def test_pre_upgrade_restart_23(self):
config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/default.json"
with open(config_file, "r") as f:
json_content = json.load(f)
@@ -137,7 +137,7 @@ class TestSparkClient(RMFTestCase):
mocks_dict = {}
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/spark_client.py",
classname = "SparkClient",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_dict = json_content,
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES,
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/python/stacks/2.3/SPARK/test_spark_thrift_server.py
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/python/stacks/2.3/SPARK/test_spark_thrift_server.py b/ambari-server/src/test/python/stacks/2.3/SPARK/test_spark_thrift_server.py
index ac07ffb..0fcfbf0 100644
--- a/ambari-server/src/test/python/stacks/2.3/SPARK/test_spark_thrift_server.py
+++ b/ambari-server/src/test/python/stacks/2.3/SPARK/test_spark_thrift_server.py
@@ -149,7 +149,7 @@ class TestSparkThriftServer(RMFTestCase):
)
@patch("resource_management.libraries.functions.copy_tarball.copy_to_hdfs")
- def test_pre_rolling_restart_23(self, copy_to_hdfs_mock):
+ def test_pre_upgrade_restart_23(self, copy_to_hdfs_mock):
config_file = self.get_src_folder()+"/test/python/stacks/2.2/configs/default.json"
with open(config_file, "r") as f:
json_content = json.load(f)
@@ -160,7 +160,7 @@ class TestSparkThriftServer(RMFTestCase):
mocks_dict = {}
self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/spark_thrift_server.py",
classname = "SparkThriftServer",
- command = "pre_rolling_restart",
+ command = "pre_upgrade_restart",
config_dict = json_content,
hdp_stack_version = self.STACK_VERSION,
target = RMFTestCase.TARGET_COMMON_SERVICES,
http://git-wip-us.apache.org/repos/asf/ambari/blob/bb5b77c5/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_server_action_test.xml
----------------------------------------------------------------------
diff --git a/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_server_action_test.xml b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_server_action_test.xml
new file mode 100644
index 0000000..ee43d1c
--- /dev/null
+++ b/ambari-server/src/test/resources/stacks/HDP/2.1.1/upgrades/upgrade_server_action_test.xml
@@ -0,0 +1,52 @@
+<?xml version="1.0"?>
+<!--
+ 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.
+-->
+<upgrade xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <target>2.2.*.*</target>
+ <target-stack>HDP-2.2.0</target-stack>
+ <type>ROLLING</type>
+ <order>
+ <group xsi:type="cluster" name="CLUSTER_SERVER_ACTIONS" title="Cluster Server Actions">
+
+ <execute-stage title="Pre Upgrade">
+ <task xsi:type="manual">
+ <message>Foo</message>
+ </task>
+ </execute-stage>
+ <execute-stage service="ZOOKEEPER" component="ZOOKEEPER_SERVER" title="Pre Upgrade Zookeeper">
+ <task xsi:type="manual">
+ <message>Back stuff up.</message>
+ </task>
+ </execute-stage>
+
+ <execute-stage title="Configuring">
+ <task xsi:type="configure" id="hdp_2_2_0_nn_pre_upgrade"/>
+ </execute-stage>
+ <execute-stage service="HDFS" component="NAMENODE" title="Configuring HDFS">
+ <task xsi:type="configure" id="hdp_2_2_0_nn_pre_upgrade"/>
+ </execute-stage>
+
+ <execute-stage title="Calculating Properties">
+ <task xsi:type="server_action" summary="Calculating Properties" class="org.apache.ambari.server.serveraction.upgrades.HBaseConfigCalculation" />
+ </execute-stage>
+ <execute-stage service="HDFS" component="NAMENODE" title="Calculating HDFS Properties">
+ <task xsi:type="server_action" summary="Calculating Properties" class="org.apache.ambari.server.serveraction.upgrades.HBaseConfigCalculation" />
+ </execute-stage>
+
+ </group>
+ </order>
+</upgrade>
\ No newline at end of file