AMBARI-18877. Ambari change hcat.proxy.hosts value during add service (dlysnichenko)
Project: http://git-wip-us.apache.org/repos/asf/ambari/repo Commit: http://git-wip-us.apache.org/repos/asf/ambari/commit/4665c812 Tree: http://git-wip-us.apache.org/repos/asf/ambari/tree/4665c812 Diff: http://git-wip-us.apache.org/repos/asf/ambari/diff/4665c812 Branch: refs/heads/branch-dev-patch-upgrade Commit: 4665c812f4d7b4ebd009db07beb76be1ec587fe7 Parents: 07cde1d Author: Lisnichenko Dmitro <[email protected]> Authored: Tue Nov 15 13:10:59 2016 +0200 Committer: Lisnichenko Dmitro <[email protected]> Committed: Tue Nov 15 13:10:59 2016 +0200 ---------------------------------------------------------------------- .../stacks/HDP/2.0.6/services/stack_advisor.py | 29 +++++++++++++++++--- .../stacks/2.0.6/common/test_stack_advisor.py | 4 +-- 2 files changed, 27 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/ambari/blob/4665c812/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py index 5e7698d..9b5ff68 100644 --- a/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py +++ b/ambari-server/src/main/resources/stacks/HDP/2.0.6/services/stack_advisor.py @@ -205,7 +205,10 @@ class HDP206StackAdvisor(DefaultStackAdvisor): if "HDFS" in servicesList: ambari_user = self.getAmbariUser(services) ambariHostName = socket.getfqdn() - putCoreSiteProperty("hadoop.proxyuser.{0}.hosts".format(ambari_user), ambariHostName) + is_wildcard_value, hosts = self.get_hosts_for_proxyuser(ambari_user, services) + if not is_wildcard_value: + hosts.add(ambariHostName) + putCoreSiteProperty("hadoop.proxyuser.{0}.hosts".format(ambari_user), ",".join(hosts)) putCoreSiteProperty("hadoop.proxyuser.{0}.groups".format(ambari_user), "*") old_ambari_user = self.getOldAmbariUser(services) if old_ambari_user is not None: @@ -251,7 +254,7 @@ class HDP206StackAdvisor(DefaultStackAdvisor): for proxyPropertyName, hostSelector in hostSelectorMap.iteritems(): componentHostNamesString = hostSelector if isinstance(hostSelector, basestring) else '*' if isinstance(hostSelector, (list, tuple)): - componentHostNames = set() + _, componentHostNames = self.get_hosts_for_proxyuser(user, services) # preserve old values for component in hostSelector: componentHosts = self.getHostsWithComponent(serviceName, component, services, hosts) if componentHosts is not None: @@ -285,6 +288,21 @@ class HDP206StackAdvisor(DefaultStackAdvisor): return users + def get_hosts_for_proxyuser(self, user_name, services): + if "core-site" in services["configurations"]: + coreSite = services["configurations"]["core-site"]['properties'] + else: + coreSite = {} + + property_name = "hadoop.proxyuser.{0}.hosts".format(user_name) + if property_name in coreSite: + property_value = coreSite[property_name] + if property_value == "*": + return True, set() + else: + return False, set(property_value.split(",")) + return False, set() + def getServiceHadoopProxyUsersConfigurationDict(self): """ Returns a map that is used by 'getHadoopProxyUsers' to determine service @@ -347,9 +365,12 @@ class HDP206StackAdvisor(DefaultStackAdvisor): services["forced-configurations"].append({"type" : "core-site", "name" : "hadoop.proxyuser.{0}.hosts".format(hive_user)}) for user_name, user_properties in users.iteritems(): + is_wildcard_value, _ = self.get_hosts_for_proxyuser(user_name, services) + # Add properties "hadoop.proxyuser.*.hosts", "hadoop.proxyuser.*.groups" to core-site for all users - putCoreSiteProperty("hadoop.proxyuser.{0}.hosts".format(user_name) , user_properties["propertyHosts"]) - Logger.info("Updated hadoop.proxyuser.{0}.hosts as : {1}".format(user_name, user_properties["propertyHosts"])) + if not is_wildcard_value: + putCoreSiteProperty("hadoop.proxyuser.{0}.hosts".format(user_name) , user_properties["propertyHosts"]) + Logger.info("Updated hadoop.proxyuser.{0}.hosts as : {1}".format(user_name, user_properties["propertyHosts"])) if "propertyGroups" in user_properties: putCoreSiteProperty("hadoop.proxyuser.{0}.groups".format(user_name) , user_properties["propertyGroups"]) http://git-wip-us.apache.org/repos/asf/ambari/blob/4665c812/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py ---------------------------------------------------------------------- diff --git a/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py b/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py index 125c9ca..00ee563 100644 --- a/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py +++ b/ambari-server/src/test/python/stacks/2.0.6/common/test_stack_advisor.py @@ -1326,7 +1326,7 @@ class TestHDP206StackAdvisor(TestCase): 'hadoop.proxyuser.webhcat.groups': '*', 'hadoop.proxyuser.hdfs.groups': '*', 'hadoop.proxyuser.hdfs.hosts': '*', - 'hadoop.proxyuser.hive.hosts': 'c6401.ambari.apache.org,c6402.ambari.apache.org', + 'hadoop.proxyuser.hive.hosts': 'c6401.ambari.apache.org,c6402.ambari.apache.org,c6403.ambari.apache.org', 'hadoop.proxyuser.oozie.hosts': 'c6401.ambari.apache.org,c6402.ambari.apache.org', 'hadoop.proxyuser.falcon.groups': '*'}}, 'falcon-env': @@ -1459,7 +1459,7 @@ class TestHDP206StackAdvisor(TestCase): 'hadoop.proxyuser.webhcat.groups': '*', 'hadoop.proxyuser.hdfs.groups': '*', 'hadoop.proxyuser.hdfs.hosts': '*', - 'hadoop.proxyuser.hive.hosts': 'c6401.ambari.apache.org,c6402.ambari.apache.org', + 'hadoop.proxyuser.hive.hosts': 'c6401.ambari.apache.org,c6402.ambari.apache.org,c6403.ambari.apache.org', 'hadoop.proxyuser.oozie.hosts': 'c6401.ambari.apache.org,c6402.ambari.apache.org', 'hadoop.proxyuser.falcon.groups': '*'}, 'property_attributes':
