diff options
Diffstat (limited to 'python')
-rw-r--r-- | python/vyos/airbag.py | 17 | ||||
-rw-r--r-- | python/vyos/util.py | 14 |
2 files changed, 27 insertions, 4 deletions
diff --git a/python/vyos/airbag.py b/python/vyos/airbag.py index 6698aa404..b7838d8a2 100644 --- a/python/vyos/airbag.py +++ b/python/vyos/airbag.py @@ -26,6 +26,17 @@ from vyos.version import get_full_version_data DISABLE = False +_noteworthy = [] + +def noteworthy(msg): + """ + noteworthy can be use to take note things which we may not want to + report to the user may but be worth including in bug report + if something goes wrong later on + """ + _noteworthy.append(msg) + + # emulate a file object class _IO(object): def __init__(self, std, log): @@ -58,11 +69,16 @@ def bug_report(dtype, value, trace): information = get_full_version_data() trace = '\n'.join(format_exception(dtype, value, trace)).replace('\n\n','\n') + note = '' + if _noteworthy: + note = 'noteworthy:\n' + note += '\n'.join(_noteworthy) information.update({ 'date': datetime.now().strftime('%Y-%m-%d %H:%M:%S'), 'trace': trace, 'instructions': COMMUNITY if 'rolling' in get_version() else SUPPORTED, + 'note': note, }) sys.stdout.write(INTRO.format(**information)) @@ -145,6 +161,7 @@ Hardware S/N: {hardware_serial} Hardware UUID: {hardware_uuid} {trace} +{note} """ INTRO = """\ diff --git a/python/vyos/util.py b/python/vyos/util.py index 8430799a1..504d36ef8 100644 --- a/python/vyos/util.py +++ b/python/vyos/util.py @@ -56,6 +56,7 @@ def popen(command, flag='', shell=None, input=None, timeout=None, env=None, to discard stdout and get stderr: popen('command', stdout=DEVNUL, stderr=PIPE) """ from vyos import debug + from vyos import airbag # log if the flag is set, otherwise log if command is set if not debug.enabled(flag): flag = 'command' @@ -93,14 +94,19 @@ def popen(command, flag='', shell=None, input=None, timeout=None, env=None, str_out = pipe_out.decode(decode).replace('\r\n', '\n').strip() str_err = pipe_err.decode(decode).replace('\r\n', '\n').strip() + out_msg = f"returned (out):\n{str_out}" if str_out: - ret_msg = f"returned (out):\n{str_out}" - debug.message(ret_msg, flag) + debug.message(out_msg, flag) if str_err: - ret_msg = f"returned (err):\n{str_err}" + err_msg = f"returned (err):\n{str_err}" # this message will also be send to syslog via airbag - debug.message(ret_msg, flag, destination=sys.stderr) + debug.message(err_msg, flag, destination=sys.stderr) + + # should something go wrong, report this too via airbag + airbag.noteworthy(cmd_msg) + airbag.noteworthy(out_msg) + airbag.noteworthy(err_msg) return str_out, p.returncode |