diff --git a/ironic_python_agent/inspector.py b/ironic_python_agent/inspector.py index 8f8c1035d..1ea2e3d1f 100644 --- a/ironic_python_agent/inspector.py +++ b/ironic_python_agent/inspector.py @@ -37,6 +37,7 @@ LOG = logging.getLogger(__name__) CONF = cfg.CONF DEFAULT_COLLECTOR = 'default' _COLLECTOR_NS = 'ironic_python_agent.inspector.collectors' +_NO_LOGGING_FIELDS = ('logs',) def extension_manager(names): @@ -108,7 +109,8 @@ def call_inspector(data, failures): data['error'] = failures.get_error() LOG.info('posting collected data to %s', CONF.inspection_callback_url) - LOG.debug('collected data: %s', data) + LOG.debug('collected data: %s', + {k: v for k, v in data.items() if k not in _NO_LOGGING_FIELDS}) encoder = encoding.RESTJSONEncoder() data = encoder.encode(data) @@ -274,7 +276,8 @@ def collect_logs(data, failures): """ try: out, _e = utils.execute('journalctl', '--full', '--no-pager', '-b', - '-n', '10000', binary=True) + '-n', '10000', binary=True, + log_stdout=False) except (processutils.ProcessExecutionError, OSError): LOG.warning('failed to get system journal') return diff --git a/ironic_python_agent/tests/unit/test_inspector.py b/ironic_python_agent/tests/unit/test_inspector.py index 2a41deb80..533b33579 100644 --- a/ironic_python_agent/tests/unit/test_inspector.py +++ b/ironic_python_agent/tests/unit/test_inspector.py @@ -394,7 +394,8 @@ class TestCollectLogs(unittest.TestCase): mock_execute.assert_called_once_with('journalctl', '--full', '--no-pager', '-b', - '-n', '10000', binary=True) + '-n', '10000', binary=True, + log_stdout=False) def test_no_journal(self, mock_execute): mock_execute.side_effect = OSError() diff --git a/ironic_python_agent/utils.py b/ironic_python_agent/utils.py index 49ee02b38..d647e2dd0 100644 --- a/ironic_python_agent/utils.py +++ b/ironic_python_agent/utils.py @@ -53,15 +53,18 @@ def execute(*cmd, **kwargs): oslo_concurrency.processutils.execute for usage. :param *cmd: positional arguments to pass to processutils.execute() + :param log_stdout: keyword-only argument: whether to log the output :param **kwargs: keyword arguments to pass to processutils.execute() :raises: UnknownArgumentError on receiving unknown arguments :raises: ProcessExecutionError :raises: OSError :returns: tuple of (stdout, stderr) """ + log_stdout = kwargs.pop('log_stdout', True) result = processutils.execute(*cmd, **kwargs) LOG.debug('Execution completed, command line is "%s"', ' '.join(cmd)) - LOG.debug('Command stdout is: "%s"', result[0]) + if log_stdout: + LOG.debug('Command stdout is: "%s"', result[0]) LOG.debug('Command stderr is: "%s"', result[1]) return result @@ -76,6 +79,7 @@ def try_execute(*cmd, **kwargs): returns None in case of failure. :param *cmd: positional arguments to pass to processutils.execute() + :param log_stdout: keyword-only argument: whether to log the output :param **kwargs: keyword arguments to pass to processutils.execute() :raises: UnknownArgumentError on receiving unknown arguments :returns: tuple of (stdout, stderr) or None in some error cases