Browse Source

AMBARI-4103 Structured command output may contain exception data in some cases (dsen)

Dmitry Sen 11 năm trước cách đây
mục cha
commit
dcadbc9ef9

+ 1 - 1
ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py

@@ -143,7 +143,7 @@ class CustomServiceOrchestrator():
       ret = {
         'stdout' : message,
         'stderr' : message,
-        'structuredOut' : message,
+        'structuredOut' : {},
         'exitcode': 1,
       }
     return ret

+ 1 - 1
ambari-agent/src/main/python/ambari_agent/PythonExecutor.py

@@ -94,7 +94,7 @@ class PythonExecutor:
         }
         logger.warn(structured_out)
       else:
-        structured_out = ''
+        structured_out = {}
 
     if self.python_process_has_been_killed:
       error = str(error) + "\n Python script has been killed due to timeout"

+ 2 - 2
ambari-agent/src/test/python/ambari_agent/TestCommandStatusDict.py

@@ -107,14 +107,14 @@ class TestCommandStatusDict(TestCase):
                    {'status': 'COMPLETE', 'taskId': 4},
                    {'status': 'IN_PROGRESS', 'stderr': '...',
                     'stdout': '...', 'clusterName': u'cc',
-                    'structuredOut' : '',
+                    'structuredOut' : {},
                     'roleCommand': u'INSTALL', 'serviceName': u'HDFS',
                     'role': u'DATANODE', 'actionId': '1-1', 'taskId': 5,
                     'exitCode': 777},
                    {'status': 'IN_PROGRESS',
                     'stderr': '...',
                     'stdout': '...',
-                    'structuredOut' : '',
+                    'structuredOut' : {},
                     'clusterName': u'cc',
                     'roleCommand': u'INSTALL',
                     'serviceName': u'HDFS',

+ 4 - 0
ambari-agent/src/test/python/ambari_agent/TestCustomServiceOrchestrator.py

@@ -183,6 +183,10 @@ class TestCustomServiceOrchestrator(TestCase):
     self.assertEqual(ret['exitcode'], 1)
     self.assertFalse(run_file_mock.called)
     self.assertTrue("Unknown script type" in ret['stdout'])
+
+    #By default returns empty dictionary
+    self.assertEqual(ret['structuredOut'], {})
+
     pass
 
   @patch.object(CustomServiceOrchestrator, "dump_command_to_json")