Ver código fonte

AMBARI-11941 - RU: Pre Upgrade HDFS Fails Due To Kerberos Security Exception (jonathanhurley)

Jonathan Hurley 10 anos atrás
pai
commit
8da4ca1b45

+ 4 - 2
ambari-server/src/main/resources/common-services/HDFS/2.1.0.2.0/package/scripts/namenode_upgrade.py

@@ -91,7 +91,8 @@ def prepare_rolling_upgrade():
   Logger.info(format("Performing a(n) {params.upgrade_direction} of HDFS"))
 
   if params.security_enabled:
-    Execute(format("{params.kinit_path_local} -kt {params.hdfs_user_keytab} {params.hdfs_principal_name}"))
+    kinit_command = format("{params.kinit_path_local} -kt {params.hdfs_user_keytab} {params.hdfs_principal_name}") 
+    Execute(kinit_command, user=params.hdfs_user, logoutput=True)
 
 
   if params.upgrade_direction == Direction.UPGRADE:
@@ -118,7 +119,8 @@ def finalize_rolling_upgrade():
   import params
 
   if params.security_enabled:
-    Execute(format("{params.kinit_path_local} -kt {params.hdfs_user_keytab} {params.hdfs_principal_name}"))
+    kinit_command = format("{params.kinit_path_local} -kt {params.hdfs_user_keytab} {params.hdfs_principal_name}") 
+    Execute(kinit_command, user=params.hdfs_user, logoutput=True)
 
   finalize_cmd = "hdfs dfsadmin -rollingUpgrade finalize"
   query_cmd = "hdfs dfsadmin -rollingUpgrade query"

+ 24 - 19
ambari-server/src/test/python/stacks/2.0.6/HDFS/test_namenode.py

@@ -1211,21 +1211,22 @@ class TestNamenode(RMFTestCase):
     json_content['commandParams']['upgrade_direction'] = 'upgrade'
 
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/namenode.py",
-                       classname = "NameNode",
-                       command = "prepare_rolling_upgrade",
-                       config_dict = json_content,
-                       hdp_stack_version = self.STACK_VERSION,
-                       target = RMFTestCase.TARGET_COMMON_SERVICES,
-                       call_mocks = [(0, "Safe mode is OFF in c6401.ambari.apache.org")])
-    self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs',)
+      classname = "NameNode",
+      command = "prepare_rolling_upgrade",
+      config_dict = json_content,
+      hdp_stack_version = self.STACK_VERSION,
+      target = RMFTestCase.TARGET_COMMON_SERVICES,
+      call_mocks = [(0, "Safe mode is OFF in c6401.ambari.apache.org")])
+    
+    self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs',
+      logoutput = True, user = 'hdfs')
+    
     self.assertResourceCalled('Execute', 'hdfs dfsadmin -rollingUpgrade prepare',
-                              logoutput = True,
-                              user = 'hdfs',
-                              )
+      logoutput = True, user = 'hdfs')
+
     self.assertResourceCalled('Execute', 'hdfs dfsadmin -rollingUpgrade query',
-                              logoutput = True,
-                              user = 'hdfs',
-                              )
+      logoutput = True, user = 'hdfs')
+    
     self.assertNoMoreResources()
   
 
@@ -1241,12 +1242,16 @@ class TestNamenode(RMFTestCase):
     shell_call_mock.return_value = 0, "Safe mode is OFF in c6401.ambari.apache.org"
 
     self.executeScript(self.COMMON_SERVICES_PACKAGE_DIR + "/scripts/namenode.py",
-                       classname = "NameNode",
-                       command = "prepare_rolling_upgrade",
-                       config_dict = json_content,
-                       hdp_stack_version = self.STACK_VERSION,
-                       target = RMFTestCase.TARGET_COMMON_SERVICES)
-    self.assertResourceCalled('Execute', '/usr/bin/kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs',)
+      classname = "NameNode",
+      command = "prepare_rolling_upgrade",
+      config_dict = json_content,
+      hdp_stack_version = self.STACK_VERSION,
+      target = RMFTestCase.TARGET_COMMON_SERVICES)
+    
+    self.assertResourceCalled('Execute', 
+        '/usr/bin/kinit -kt /etc/security/keytabs/hdfs.headless.keytab hdfs',
+        logoutput = True, user = 'hdfs')
+        
     self.assertNoMoreResources()