Repository: ambari Updated Branches: refs/heads/trunk a00189a36 -> 915f0e789
AMBARI-8995. Service to advertise HDP version of component during START in response's structuredOut (alejandro) Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/915f0e78 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/915f0e78 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/915f0e78 Branch: refs/heads/trunk Commit: 915f0e7892a6b6be091923264a4b6005c9132466 Parents: a00189a Author: Alejandro Fernandez <[email protected]> Authored: Wed Jan 7 11:42:56 2015 -0800 Committer: Alejandro Fernandez <[email protected]> Committed: Wed Jan 7 12:48:51 2015 -0800 ---------------------------------------------------------------------- .../libraries/functions/version_select_util.py | 77 ++++++++++++++++ .../libraries/script/script.py | 26 ++++++ .../0.5.0.2.1/package/scripts/falcon_client.py | 11 ++- .../0.5.0.2.1/package/scripts/falcon_server.py | 6 ++ .../FALCON/0.5.0.2.1/package/scripts/params.py | 3 + .../1.4.0.2.0/package/scripts/flume_handler.py | 6 ++ .../FLUME/1.4.0.2.0/package/scripts/params.py | 3 + .../0.96.0.2.0/package/scripts/hbase_client.py | 5 ++ .../0.96.0.2.0/package/scripts/hbase_master.py | 6 ++ .../package/scripts/hbase_regionserver.py | 7 +- .../HBASE/0.96.0.2.0/package/scripts/params.py | 3 + .../HDFS/2.1.0.2.0/package/scripts/datanode.py | 9 +- .../2.1.0.2.0/package/scripts/journalnode.py | 6 ++ .../HDFS/2.1.0.2.0/package/scripts/namenode.py | 6 ++ .../HDFS/2.1.0.2.0/package/scripts/params.py | 3 + .../HDFS/2.1.0.2.0/package/scripts/snamenode.py | 5 ++ .../package/scripts/hive_metastore.py | 6 ++ .../0.12.0.2.0/package/scripts/hive_server.py | 5 ++ .../HIVE/0.12.0.2.0/package/scripts/params.py | 3 + .../package/scripts/webhcat_server.py | 6 ++ .../0.8.1.2.2/package/scripts/kafka_broker.py | 6 ++ .../KAFKA/0.8.1.2.2/package/scripts/params.py | 3 + .../0.5.0.2.2/package/scripts/knox_gateway.py | 6 ++ .../KNOX/0.5.0.2.2/package/scripts/params.py | 3 + .../4.0.0.2.0/package/scripts/oozie_client.py | 6 ++ .../4.0.0.2.0/package/scripts/oozie_server.py | 6 ++ .../OOZIE/4.0.0.2.0/package/scripts/params.py | 3 + .../SLIDER/0.60.0.2.2/package/scripts/params.py | 3 + .../0.60.0.2.2/package/scripts/slider_client.py | 6 ++ .../SQOOP/1.4.4.2.0/package/scripts/params.py | 3 + .../1.4.4.2.0/package/scripts/service_check.py | 6 ++ .../1.4.4.2.0/package/scripts/sqoop_client.py | 6 ++ .../STORM/0.9.1.2.1/package/scripts/nimbus.py | 7 ++ .../STORM/0.9.1.2.1/package/scripts/params.py | 3 + .../STORM/0.9.1.2.1/package/scripts/rest_api.py | 7 ++ .../0.9.1.2.1/package/scripts/supervisor.py | 7 ++ .../scripts/application_timeline_server.py | 5 ++ .../2.1.0.2.0/package/scripts/historyserver.py | 6 ++ .../2.1.0.2.0/package/scripts/nodemanager.py | 6 ++ .../YARN/2.1.0.2.0/package/scripts/params.py | 2 + .../package/scripts/resourcemanager.py | 6 ++ .../3.4.5.2.0/package/scripts/params.py | 2 + .../package/scripts/zookeeper_client.py | 6 ++ .../package/scripts/zookeeper_server.py | 6 ++ .../src/test/python/TestVersionSelectUtil.py | 93 ++++++++++++++++++++ 45 files changed, 408 insertions(+), 7 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py b/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py new file mode 100644 index 0000000..138b97f --- /dev/null +++ b/ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py @@ -0,0 +1,77 @@ +#!/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. + +Ambari Agent + +""" +import re +import tempfile + +from resource_management.core.logger import Logger +from resource_management.core import shell + + +def get_component_version(stack_name, component_name): + """ + For any stack name, returns the version currently installed for a given component. + Because each stack name may have different logic, the input is a generic dictionary. + :param stack_name: one of HDP, HDPWIN, BIGTOP, PHD, etc. usually retrieved from + the command-#.json file's ["hostLevelParams"]["stack_name"] + :param component_name: Component name as a string necessary to get the version + :return: Returns a string if found, e.g., 2.2.1.0-2175, otherwise, returns None + """ + version = None + if stack_name is None or component_name is None: + Logger.error("Could not determine component version because of the parameters is empty. " \ + "stack_name: %s, component_name: %s" % (str(stack_name), str(component_name))) + return version + + out = None + code = -1 + if stack_name == "HDP": + tmpfile = tempfile.NamedTemporaryFile() + + get_hdp_comp_version_cmd = "" + try: + # This is necessary because Ubuntu returns "stdin: is not a tty", see AMBARI-8088 + with open(tmpfile.name, 'r') as file: + get_hdp_comp_version_cmd = '/usr/bin/hdp-select status %s > %s' % (component_name, tmpfile.name) + code, stdoutdata = shell.call(get_hdp_comp_version_cmd) + out = file.read() + + if code != 0 or out is None: + raise Exception("Code is nonzero or output is empty") + + Logger.info("Command: %s\nOutput: %s" % (get_hdp_comp_version_cmd, str(out))) + matches = re.findall(r"([\d\.]+\-\d+)", out) + version = matches[0] if matches and len(matches) > 0 else None + except Exception, e: + Logger.error("Could not determine HDP version for component %s by calling '%s'. Return Code: %s, Output: %s." % + (component_name, get_hdp_comp_version_cmd, str(code), str(out))) + elif stack_name == "HDPWIN": + pass + elif stack_name == "GlusterFS": + pass + elif stack_name == "PHD": + pass + elif stack_name == "BIGTOP": + pass + else: + Logger.error("Could not find a stack for stack name: %s" % str(stack_name)) + + return version \ No newline at end of file http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-common/src/main/python/resource_management/libraries/script/script.py ---------------------------------------------------------------------- diff --git a/ambari-common/src/main/python/resource_management/libraries/script/script.py b/ambari-common/src/main/python/resource_management/libraries/script/script.py index 3185821..af02f37 100644 --- a/ambari-common/src/main/python/resource_management/libraries/script/script.py +++ b/ambari-common/src/main/python/resource_management/libraries/script/script.py @@ -35,6 +35,8 @@ from resource_management.core.environment import Environment from resource_management.core.logger import Logger from resource_management.core.exceptions import Fail, ClientComponentHasNoStatus, ComponentIsNotRunning from resource_management.core.resources.packaging import Package +from resource_management.libraries.functions.version_select_util import get_component_version +from resource_management.libraries.functions.version import compare_versions from resource_management.libraries.script.config_dictionary import ConfigDictionary, UnknownConfiguration IS_WINDOWS = platform.system() == "Windows" @@ -91,6 +93,13 @@ class Script(object): # Class variable tmp_dir = "" + def get_stack_to_component(self): + """ + To be overridden by subclasses. + Returns a dictionary where the key is a stack name, and the value is the component name used in selecting the version. + """ + return {} + def put_structured_out(self, sout): Script.structuredOut.update(sout) try: @@ -99,6 +108,23 @@ class Script(object): except IOError: Script.structuredOut.update({"errMsg" : "Unable to write to " + self.stroutfile}) + def save_component_version_to_structured_out(self, stack_name): + """ + :param stack_name: One of HDP, HDPWIN, PHD, BIGTOP. + :return: Append the version number to the structured out. + """ + import params + component_version = None + + stack_to_component = self.get_stack_to_component() + if stack_to_component: + if stack_name == "HDP" and params.hdp_stack_version != "" and compare_versions(params.hdp_stack_version, '2.2') >= 0: + component_name = stack_to_component[stack_name] if stack_name in stack_to_component else None + component_version = get_component_version(stack_name, component_name) + + if component_version: + self.put_structured_out({"version": component_version}) + def execute(self): """ Sets up logging; http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 23260df..5c430df 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 @@ -20,23 +20,27 @@ limitations under the License. from resource_management import * from falcon import falcon + class FalconClient(Script): + + def get_stack_to_component(self): + return {"HDP": "falcon-client"} + def install(self, env): self.install_packages(env) self.configure(env) - - + def configure(self, env): import params env.set_params(params) falcon('client', action='config') + self.save_component_version_to_structured_out(params.stack_name) def status(self, env): raise ClientComponentHasNoStatus() - def pre_rolling_restart(self, env): import params env.set_params(params) @@ -49,7 +53,6 @@ class FalconClient(Script): Logger.info("Executing Falcon Client Rolling Upgrade pre-restart") Execute(format("hdp-select set hadoop-client {version}")) - def security_status(self, env): import status_params env.set_params(status_params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 52a6f2b..6f37f50 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 @@ -27,6 +27,10 @@ from resource_management.libraries.functions.security_commons import build_expec from falcon import falcon class FalconServer(Script): + + def get_stack_to_component(self): + return {"HDP": "falcon-server"} + def install(self, env): import params @@ -42,6 +46,8 @@ class FalconServer(Script): falcon('server', action='start') + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/params.py b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/params.py index 82cd470..c1f0b12 100644 --- a/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/FALCON/0.5.0.2.1/package/scripts/params.py @@ -18,12 +18,15 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * from status_params import * 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 version = default("/commandParams/version", None) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 a13f507..59dba8d 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 @@ -25,6 +25,10 @@ from resource_management.libraries.functions.flume_agent_helper import find_expe from resource_management.libraries.functions.flume_agent_helper import get_flume_status class FlumeHandler(Script): + + def get_stack_to_component(self): + return {"HDP": "flume-server"} + def install(self, env): import params @@ -39,6 +43,8 @@ class FlumeHandler(Script): flume(action='start') + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 409691f..28c4240 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 @@ -18,10 +18,13 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * config = Script.get_config() +stack_name = default("/hostLevelParams/stack_name", None) + user_group = config['configurations']['cluster-env']['user_group'] proxyuser_group = config['configurations']['hadoop-env']['proxyuser_group'] http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 883e376..3f19ce4 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 @@ -26,6 +26,9 @@ from hbase import hbase class HbaseClient(Script): + def get_stack_to_component(self): + return {"HDP": "hbase-client"} + def pre_rolling_restart(self, env): import params env.set_params(params) @@ -43,6 +46,8 @@ class HbaseClient(Script): hbase(name='client') + self.save_component_version_to_structured_out(params.stack_name) + def status(self, env): raise ClientComponentHasNoStatus() http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_master.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_master.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_master.py index ce65507..d54ecb9 100644 --- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_master.py +++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_master.py @@ -30,6 +30,10 @@ import upgrade class HbaseMaster(Script): + + def get_stack_to_component(self): + return {"HDP": "hbase-master"} + def install(self, env): self.install_packages(env) @@ -52,6 +56,8 @@ class HbaseMaster(Script): hbase_service( 'master', action = 'start' ) + + self.save_component_version_to_structured_out(params.stack_name) def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_regionserver.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_regionserver.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_regionserver.py index 010d045..72b657f 100644 --- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_regionserver.py +++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/hbase_regionserver.py @@ -29,6 +29,10 @@ import upgrade class HbaseRegionServer(Script): + + def get_stack_to_component(self): + return {"HDP": "hbase-regionserver"} + def install(self, env): self.install_packages(env) @@ -57,7 +61,8 @@ class HbaseRegionServer(Script): action = 'start' ) - + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params.py index 1f970fc..ace3901 100644 --- a/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/HBASE/0.96.0.2.0/package/scripts/params.py @@ -20,6 +20,7 @@ limitations under the License. from functions import calc_xmn_from_xms from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params @@ -27,6 +28,8 @@ import status_params config = Script.get_config() exec_tmp_dir = Script.get_tmp_dir() +stack_name = default("/hostLevelParams/stack_name", None) + version = default("/commandParams/version", None) stack_version_unformatted = str(config['hostLevelParams']['stack_version']) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 237ef07..50bd822 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,14 +19,17 @@ limitations under the License. import datanode_upgrade from hdfs_datanode import datanode from resource_management import * -from resource_management.libraries.functions.version import compare_versions, \ - format_hdp_stack_version +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 from hdfs import hdfs class DataNode(Script): + + def get_stack_to_component(self): + return {"HDP": "hadoop-hdfs-datanode"} + def install(self, env): import params @@ -59,6 +62,8 @@ class DataNode(Script): self.configure(env) datanode(action="start") + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 addf0e1..6d8716f 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 @@ -30,6 +30,10 @@ from hdfs import hdfs class JournalNode(Script): + + def get_stack_to_component(self): + return {"HDP": "hadoop-hdfs-journalnode"} + def install(self, env): import params @@ -60,6 +64,8 @@ class JournalNode(Script): create_log_dir=True ) + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 574b908..7b171a8 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 @@ -39,6 +39,10 @@ from utils import failover_namenode class NameNode(Script): + + def get_stack_to_component(self): + return {"HDP": "hadoop-hdfs-namenode"} + def install(self, env): import params @@ -68,6 +72,8 @@ class NameNode(Script): self.configure(env) namenode(action="start", rolling_restart=rolling_restart, env=env) + self.save_component_version_to_structured_out(params.stack_name) + def post_rolling_restart(self, env): Logger.info("Executing Rolling Upgrade post-restart") import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params.py index 1ac4446..d844ecd 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/params.py @@ -18,6 +18,7 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params import utils @@ -28,6 +29,8 @@ import re config = Script.get_config() tmp_dir = Script.get_tmp_dir() +stack_name = default("/hostLevelParams/stack_name", None) + stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/snamenode.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/snamenode.py b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/snamenode.py index 01d2dfb..a625295 100644 --- a/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/snamenode.py +++ b/ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/snamenode.py @@ -27,6 +27,9 @@ from hdfs import hdfs class SNameNode(Script): + def get_stack_to_component(self): + return {"HDP": "hadoop-hdfs-secondarynamenode"} + def install(self, env): import params @@ -46,6 +49,8 @@ class SNameNode(Script): self.configure(env) snamenode(action="start") + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 c83affa..568ee8e 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 @@ -28,6 +28,10 @@ from hive_service import hive_service class HiveMetastore(Script): + + def get_stack_to_component(self): + return {"HDP": "hive-metastore"} + def install(self, env): import params @@ -49,6 +53,8 @@ class HiveMetastore(Script): self.configure(env) # FOR SECURITY hive_service('metastore', action = 'start') + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart = False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 b85e088..055916b 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 @@ -30,6 +30,9 @@ from install_jars import install_tez_jars class HiveServer(Script): + def get_stack_to_component(self): + return {"HDP": "hive-server2"} + def install(self, env): import params self.install_packages(env, exclude_packages=params.hive_exclude_packages) @@ -56,6 +59,8 @@ class HiveServer(Script): hive_service( 'hiveserver2', action = 'start', rolling_restart=rolling_restart ) + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params.py index 80f5c54..a027d52 100644 --- a/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/HIVE/0.12.0.2.0/package/scripts/params.py @@ -19,6 +19,7 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params import os @@ -27,6 +28,8 @@ import os config = Script.get_config() tmp_dir = Script.get_tmp_dir() +stack_name = default("/hostLevelParams/stack_name", None) + # node hostname hostname = config["hostname"] http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 38c7ee5..878b50c 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 @@ -26,6 +26,10 @@ from webhcat import webhcat from webhcat_service import webhcat_service class WebHCatServer(Script): + + def get_stack_to_component(self): + return {"HDP": "hive-webhcat"} + def install(self, env): self.install_packages(env) @@ -42,6 +46,8 @@ class WebHCatServer(Script): self.configure(env) # FOR SECURITY webhcat_service(action = 'start') + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py index 5a47ece..ecd41c5 100644 --- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py +++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/kafka_broker.py @@ -24,6 +24,10 @@ import upgrade from kafka import kafka class KafkaBroker(Script): + + def get_stack_to_component(self): + return {"HDP": "kafka-broker"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -48,6 +52,8 @@ class KafkaBroker(Script): user=params.kafka_user, not_if=no_op_test ) + + self.save_component_version_to_structured_out(params.stack_name) def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/params.py b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/params.py index 7348918..067e537 100644 --- a/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/KAFKA/0.8.1.2.2/package/scripts/params.py @@ -19,12 +19,15 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params # server configurations config = Script.get_config() +stack_name = default("/hostLevelParams/stack_name", None) + version = default("/commandParams/version", None) stack_version_unformatted = str(config['hostLevelParams']['stack_version']) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 cb966e4..660a630 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 @@ -27,6 +27,10 @@ from knox import knox from ldap import ldap class KnoxGateway(Script): + + def get_stack_to_component(self): + return {"HDP": "knox-server"} + def install(self, env): self.install_packages(env) import params @@ -54,6 +58,8 @@ class KnoxGateway(Script): not_if=no_op_test ) + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params.py b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params.py index a2b122a..3c91992 100644 --- a/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/KNOX/0.5.0.2.2/package/scripts/params.py @@ -20,12 +20,15 @@ Ambari Agent """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params config = Script.get_config() tmp_dir = Script.get_tmp_dir() +stack_name = default("/hostLevelParams/stack_name", None) + stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 f77a8db..a7313f3 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 @@ -26,6 +26,10 @@ from oozie_service import oozie_service class OozieClient(Script): + + def get_stack_to_component(self): + return {"HDP": "oozie-client"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -36,6 +40,8 @@ class OozieClient(Script): oozie(is_server=False) + self.save_component_version_to_structured_out(params.stack_name) + def status(self, env): raise ClientComponentHasNoStatus() http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 61615d2..a129bce 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 @@ -29,6 +29,10 @@ from oozie_service import oozie_service class OozieServer(Script): + + def get_stack_to_component(self): + return {"HDP": "oozie-server"} + def install(self, env): self.install_packages(env) @@ -44,6 +48,8 @@ class OozieServer(Script): #TODO remove this when config command will be implemented self.configure(env) oozie_service(action='start') + + self.save_component_version_to_structured_out(params.stack_name) def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params.py index a3d3a2a..57ea5c1 100644 --- a/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/OOZIE/4.0.0.2.0/package/scripts/params.py @@ -19,6 +19,7 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params import itertools @@ -28,6 +29,8 @@ import os config = Script.get_config() tmp_dir = Script.get_tmp_dir() +stack_name = default("/hostLevelParams/stack_name", None) + stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 3164806..8ed1fac 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 @@ -19,11 +19,14 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * # server configurations config = Script.get_config() +stack_name = default("/hostLevelParams/stack_name", None) + stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 cb22a99..5218f49 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 @@ -24,6 +24,10 @@ from slider import slider class SliderClient(Script): + + def get_stack_to_component(self): + return {"HDP": "slider-client"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -35,6 +39,8 @@ class SliderClient(Script): slider() + self.save_component_version_to_structured_out(params.stack_name) + def status(self, env): raise ClientComponentHasNoStatus() http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params.py index 780b6d8..2972935 100644 --- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/params.py @@ -18,10 +18,13 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * config = Script.get_config() +stack_name = default("/hostLevelParams/stack_name", None) + stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/service_check.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/service_check.py b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/service_check.py index bcd236c..33ced03 100644 --- a/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/service_check.py +++ b/ambari-server/src/main/resources/common-services/SQOOP/1.4.4.2.0/package/scripts/service_check.py @@ -23,6 +23,10 @@ from resource_management import * class SqoopServiceCheck(Script): + + def get_stack_to_component(self): + return {"HDP": "sqoop-server"} + def service_check(self, env): import params env.set_params(params) @@ -36,5 +40,7 @@ class SqoopServiceCheck(Script): logoutput = True ) + self.save_component_version_to_structured_out(params.stack_name) + if __name__ == "__main__": SqoopServiceCheck().execute() http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 6829557..db8f188 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 @@ -25,6 +25,10 @@ from sqoop import sqoop class SqoopClient(Script): + + def get_stack_to_component(self): + return {"HDP": "sqoop-client"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -34,6 +38,8 @@ class SqoopClient(Script): env.set_params(params) sqoop(type='client') + self.save_component_version_to_structured_out(params.stack_name) + def status(self, env): raise ClientComponentHasNoStatus() http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 2dd7963..6d68f3e 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 @@ -20,11 +20,16 @@ limitations under the License. import sys from resource_management import * + from storm import storm from service import service class Nimbus(Script): + + def get_stack_to_component(self): + return {"HDP": "storm-nimbus"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -42,6 +47,8 @@ class Nimbus(Script): service("nimbus", action="start") + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py index a3bfb16..6d49d04 100644 --- a/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/STORM/0.9.1.2.1/package/scripts/params.py @@ -19,12 +19,15 @@ limitations under the License. """ from resource_management.libraries.functions.version import format_hdp_stack_version, compare_versions +from resource_management.libraries.functions.default import default from resource_management import * import status_params # server configurations config = Script.get_config() +stack_name = default("/hostLevelParams/stack_name", None) + stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) stack_is_hdp22_or_further = hdp_stack_version != "" and compare_versions(hdp_stack_version, '2.2') >= 0 http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 ec7deec..890c329 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 @@ -20,12 +20,17 @@ limitations under the License. import sys from resource_management import * + from storm import storm from service import service from service_check import ServiceCheck class StormRestApi(Script): + + def get_stack_to_component(self): + return {"HDP": "storm-client"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -43,6 +48,8 @@ class StormRestApi(Script): service("rest_api", action="start") + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 1ebe187..55f191e 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 @@ -20,11 +20,16 @@ limitations under the License. import sys from resource_management import * + from storm import storm from service import service class Supervisor(Script): + + def get_stack_to_component(self): + return {"HDP": "storm-supervisor"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -42,6 +47,8 @@ class Supervisor(Script): service("supervisor", action="start") service("logviewer", action="start") + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 e9c0fa1..a8ead39 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 @@ -31,6 +31,9 @@ from service import service class ApplicationTimelineServer(Script): + def get_stack_to_component(self): + return {"HDP": "hadoop-yarn-timelineserver"} + def install(self, env): self.install_packages(env) #self.configure(env) @@ -54,6 +57,8 @@ class ApplicationTimelineServer(Script): self.configure(env) # FOR SECURITY service('timelineserver', action='start') + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 66c2143..57bd379 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 @@ -31,6 +31,10 @@ from yarn import yarn from service import service class HistoryServer(Script): + + def get_stack_to_component(self): + return {"HDP": "hadoop-mapreduce-historyserver"} + def install(self, env): self.install_packages(env) @@ -55,6 +59,8 @@ class HistoryServer(Script): copy_tarballs_to_hdfs('mapreduce', params.mapred_user, params.hdfs_user, params.user_group) service('historyserver', action='start', serviceName='mapreduce') + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params env.set_params(params) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 87be214..78a75f6 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 @@ -32,6 +32,10 @@ from yarn import yarn from service import service class Nodemanager(Script): + + def get_stack_to_component(self): + return {"HDP": "hadoop-yarn-nodemanager"} + def install(self, env): self.install_packages(env) @@ -54,6 +58,8 @@ class Nodemanager(Script): self.configure(env) # FOR SECURITY service('nodemanager',action='start') + self.save_component_version_to_structured_out(params.stack_name) + def post_rolling_restart(self, env): Logger.info("Executing NodeManager Rolling Upgrade post-restart") import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params.py index d9c73bf..8819dc0 100644 --- a/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/YARN/2.1.0.2.0/package/scripts/params.py @@ -28,6 +28,8 @@ import status_params config = Script.get_config() tmp_dir = Script.get_tmp_dir() +stack_name = default("/hostLevelParams/stack_name", None) + # This is expected to be of the form #.#.#.# stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 3d6a00e..2b8c631 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 @@ -30,6 +30,10 @@ from service import service class Resourcemanager(Script): + + def get_stack_to_component(self): + return {"HDP": "hadoop-yarn-resourcemanager"} + def install(self, env): self.install_packages(env) @@ -56,6 +60,8 @@ class Resourcemanager(Script): action='start' ) + self.save_component_version_to_structured_out(params.stack_name) + def stop(self, env, rolling_restart=False): import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params.py b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params.py index 8ceb26a..a180b0f 100644 --- a/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params.py +++ b/ambari-server/src/main/resources/common-services/ZOOKEEPER/3.4.5.2.0/package/scripts/params.py @@ -31,6 +31,8 @@ tmp_dir = Script.get_tmp_dir() stack_version_unformatted = str(config['hostLevelParams']['stack_version']) hdp_stack_version = format_hdp_stack_version(stack_version_unformatted) +stack_name = default("/hostLevelParams/stack_name", None) + # New Cluster Stack Version that is defined during the RESTART of a Rolling Upgrade version = default("/commandParams/version", None) http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 4bffac3..7d57983 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 @@ -25,6 +25,10 @@ from resource_management import * from zookeeper import zookeeper class ZookeeperClient(Script): + + def get_stack_to_component(self): + return {"HDP": "zookeeper-client"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -35,6 +39,8 @@ class ZookeeperClient(Script): zookeeper(type='client') + self.save_component_version_to_structured_out(params.stack_name) + def status(self, env): raise ClientComponentHasNoStatus() http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/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 5dce6de..626ceba 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 @@ -50,6 +50,10 @@ def call_and_match_output(command, regex_expression, err_message): class ZookeeperServer(Script): + + def get_stack_to_component(self): + return {"HDP": "zookeeper-server"} + def install(self, env): self.install_packages(env) self.configure(env) @@ -73,6 +77,8 @@ class ZookeeperServer(Script): self.configure(env) zookeeper_service(action = 'start') + self.save_component_version_to_structured_out(params.stack_name) + def post_rolling_restart(self, env): Logger.info("Executing Rolling Upgrade post-restart") import params http://git-wip-us.apache.org/repos/asf/ambari/blob/915f0e78/ambari-server/src/test/python/TestVersionSelectUtil.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/TestVersionSelectUtil.py b/ambari-server/src/test/python/TestVersionSelectUtil.py new file mode 100644 index 0000000..f753023 --- /dev/null +++ b/ambari-server/src/test/python/TestVersionSelectUtil.py @@ -0,0 +1,93 @@ +''' +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. +''' + +from unittest import TestCase +import os +from mock.mock import patch, MagicMock + +from resource_management.core.logger import Logger + +class TestVersionSelectUtil(TestCase): + """ + Class that tests the method of the version_select_util.py file. + """ + def setUp(self): + import imp + + Logger.logger = MagicMock() + + self.test_directory = os.path.dirname(os.path.abspath(__file__)) + test_file_path = os.path.join(self.test_directory, '../../../../ambari-common/src/main/python/resource_management/libraries/functions/version_select_util.py') + with open(test_file_path, 'rb') as fp: + self.module = imp.load_module('module', fp, test_file_path, ('.py', 'rb', imp.PY_SOURCE)) + + @patch('__builtin__.open') + @patch("resource_management.core.shell.call") + def test_get_component_version(self, call_mock, open_mock): + hdp_expected_version = "2.2.1.0-2175" + + # Mock classes for reading from a file + class MagicFile(object): + allowed_names = set(["hadoop-hdfs-namenode", + "hadoop-hdfs-datanode", + "zookeeper-server", + "zookeeper-client" + ]) + def read(self, value): + return (value + " - " + hdp_expected_version) if value in self.allowed_names else ("ERROR: Invalid package - " + value) + + def __exit__(self, exc_type, exc_val, exc_tb): + pass + + def __enter__(self): + return self + pass + + class MagicFile1(MagicFile): + def read(self): + return super(MagicFile1, self).read("hadoop-nonexistent-component-name") + class MagicFile2(MagicFile): + def read(self): + return super(MagicFile2, self).read("hadoop-hdfs-namenode") + class MagicFile3(MagicFile): + def read(self): + return super(MagicFile3, self).read("hadoop-hdfs-datanode") + + open_mock.side_effect = [MagicFile1(), MagicFile2(), MagicFile3()] + call_mock.side_effect = [(0, "value will come from MagicFile"), ] * 3 + + + # Missing Stack + version = self.module.get_component_version(None, "hadoop-hdfs-datanode") + self.assertEquals(version, None) + version = self.module.get_component_version("StackDoesNotExist", "hadoop-hdfs-datanode") + self.assertEquals(version, None) + + # Invalid request + version = self.module.get_component_version("HDP", None) + self.assertEquals(version, None) + + # Incorrect name + version = self.module.get_component_version("HDP", "hadoop-nonexistent-component-name") + self.assertEquals(version, None) + + # Pass + version = self.module.get_component_version("HDP", "hadoop-hdfs-namenode") + self.assertEquals(version, hdp_expected_version) + version = self.module.get_component_version("HDP", "hadoop-hdfs-datanode") + self.assertEquals(version, hdp_expected_version)
