cmd = list(map(str, addl_env_args(addl_env) + cmd))
if run_as_root:
cmd = shlex.split(config.get_root_helper(cfg.CONF)) + cmd
+ LOG.debug("Running command: %s", cmd)
obj = utils.subprocess_popen(cmd, shell=False,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
# In practice, no neutron code should be trying to execute something that
# would throw those errors, and if it does it should be fixed as opposed to
# just logging the execution error.
+ LOG.debug("Running command (rootwrap daemon): %s", cmd)
client = RootwrapDaemonHelper.get_client()
return client.execute(cmd, process_input)
except UnicodeError:
pass
- m = _("\nCommand: {cmd}\nExit code: {code}\n").format(
- cmd=cmd,
- code=returncode)
+ command_str = {
+ 'cmd': cmd,
+ 'code': returncode
+ }
+ m = _("\nCommand: %(cmd)s"
+ "\nExit code: %(code)d\n") % command_str
extra_ok_codes = extra_ok_codes or []
if returncode and returncode in extra_ok_codes:
returncode = None
if returncode and log_fail_as_error:
- m += ("Stdin: {stdin}\n"
- "Stdout: {stdout}\nStderr: {stderr}").format(
- stdin=process_input or '',
- stdout=_stdout,
- stderr=_stderr)
+ command_str['stdin'] = process_input or ''
+ command_str['stdout'] = _stdout
+ command_str['stderr'] = _stderr
+ m += _("Stdin: %(stdin)s\n"
+ "Stdout: %(stdout)s\n"
+ "Stderr: %(stderr)s") % command_str
LOG.error(m)
else:
LOG.debug(m)
import six
import testtools
+import oslo_i18n
+
from neutron.agent.linux import utils
from neutron.tests import base
utils.execute(['ls'])
self.assertTrue(log.debug.called)
+ def test_return_code_log_error_change_locale(self):
+ ja_output = 'std_out in Japanese'
+ ja_error = 'std_err in Japanese'
+ ja_message_out = oslo_i18n._message.Message(ja_output)
+ ja_message_err = oslo_i18n._message.Message(ja_error)
+ ja_translate_out = oslo_i18n._translate.translate(ja_message_out, 'ja')
+ ja_translate_err = oslo_i18n._translate.translate(ja_message_err, 'ja')
+ self.mock_popen.return_value = (ja_translate_out, ja_translate_err)
+ self.process.return_value.returncode = 1
+
+ with mock.patch.object(utils, 'LOG') as log:
+ utils.execute(['ls'], check_exit_code=False)
+ self.assertIn(ja_translate_out, str(log.error.call_args_list))
+ self.assertIn(ja_translate_err, str(log.error.call_args_list))
+
def test_return_code_raise_runtime_do_not_log_fail_as_error(self):
self.mock_popen.return_value = ('', '')
self.process.return_value.returncode = 1