瀏覽代碼

AMBARI-20494. Disabling security fails with AttributeError (rlevas)

Robert Levas 8 年之前
父節點
當前提交
ea8dff3249

+ 16 - 8
ambari-server/src/main/resources/stacks/HDP/2.5/services/stack_advisor.py

@@ -468,17 +468,25 @@ class HDP25StackAdvisor(HDP24StackAdvisor):
   def recommendStormConfigurations(self, configurations, clusterData, services, hosts):
     super(HDP25StackAdvisor, self).recommendStormConfigurations(configurations, clusterData, services, hosts)
     storm_site = self.getServicesSiteProperties(services, "storm-site")
+    storm_env = self.getServicesSiteProperties(services, "storm-env")
     putStormSiteProperty = self.putProperty(configurations, "storm-site", services)
     putStormSiteAttributes = self.putPropertyAttribute(configurations, "storm-site")
-    security_enabled = (storm_site is not None and "storm.zookeeper.superACL" in storm_site)
+    security_enabled = self.isSecurityEnabled(services)
+
+    if storm_env and storm_site:
+      if security_enabled:
+        _storm_principal_name = storm_env['storm_principal_name'] if 'storm_principal_name' in storm_env else None
+        storm_bare_jaas_principal = get_bare_principal(_storm_principal_name)
+        if 'nimbus.impersonation.acl' in storm_site:
+          storm_nimbus_impersonation_acl = storm_site["nimbus.impersonation.acl"]
+          storm_nimbus_impersonation_acl.replace('{{storm_bare_jaas_principal}}', storm_bare_jaas_principal)
+          putStormSiteProperty('nimbus.impersonation.acl', storm_nimbus_impersonation_acl)
+      else:
+        if 'nimbus.impersonation.acl' in storm_site:
+          putStormSiteAttributes('nimbus.impersonation.acl', 'delete', 'true')
+        if 'nimbus.impersonation.authorizer' in storm_site:
+          putStormSiteAttributes('nimbus.impersonation.authorizer', 'delete', 'true')
 
-    if security_enabled:
-      _storm_principal_name = services['configurations']['storm-env']['properties']['storm_principal_name']
-      storm_bare_jaas_principal = get_bare_principal(_storm_principal_name)
-      if 'nimbus.impersonation.acl' in storm_site:
-        storm_nimbus_impersonation_acl = storm_site["nimbus.impersonation.acl"]
-        storm_nimbus_impersonation_acl.replace('{{storm_bare_jaas_principal}}', storm_bare_jaas_principal)
-        putStormSiteProperty('nimbus.impersonation.acl', storm_nimbus_impersonation_acl)
     rangerPluginEnabled = ''
     if 'ranger-storm-plugin-properties' in configurations and 'ranger-storm-plugin-enabled' in  configurations['ranger-storm-plugin-properties']['properties']:
       rangerPluginEnabled = configurations['ranger-storm-plugin-properties']['properties']['ranger-storm-plugin-enabled']

+ 5 - 0
ambari-server/src/test/python/stacks/2.5/common/test_stack_advisor.py

@@ -5369,6 +5369,11 @@ class TestHDP25StackAdvisor(TestCase):
         "stack_version": "2.5"
       },
       "configurations": {
+        "cluster-env": {
+          "properties": {
+            "security_enabled" : "true"
+          }
+        },
         "storm-site": {
           "properties": {
             "nimbus.authorizer" : "org.apache.storm.security.auth.authorizer.SimpleACLAuthorizer",