From 2f2bfacbb7e1692ce001d41a634b21b1f57bb134 Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Fri, 10 Jan 2020 19:32:25 -0700 Subject: [PATCH] Started integrating osTicket functions in ddrescue --- scripts/wk/hw/ddrescue.py | 34 +++++++++++++++++++++++++++++++++- scripts/wk/osticket.py | 1 + 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/scripts/wk/hw/ddrescue.py b/scripts/wk/hw/ddrescue.py index 55ad30f5..f314f987 100644 --- a/scripts/wk/hw/ddrescue.py +++ b/scripts/wk/hw/ddrescue.py @@ -21,7 +21,7 @@ from docopt import docopt import psutil import pytz -from wk import cfg, debug, exe, io, log, net, std, tmux +from wk import cfg, debug, exe, io, log, net, osticket, std, tmux from wk.hw import obj as hw_obj @@ -281,12 +281,14 @@ class BlockPair(): class State(): + # pylint: disable=too-many-instance-attributes,too-many-public-methods """Object for tracking hardware diagnostic data.""" def __init__(self): self.block_pairs = [] self.destination = None self.log_dir = None self.mode = None + self.ost = osticket.osTicket() self.panes = {} self.source = None self.working_dir = None @@ -759,6 +761,33 @@ class State(): """Check if all block_pairs completed pass_name, returns bool.""" return all([p.pass_complete(pass_name) for p in self.block_pairs]) + def post_to_osticket(self): + """Post results to osTicket.""" + color = 'Diags' + percent = self.get_percent_recovered() + report = self.generate_report() + report[0] = f'ddrescue-tui {report[0]}' + if percent < 90: + color = 'Diags FAIL' + elif percent < 95: + color = 'Normal' + + # Ask user + if not std.ask('Post results to osTicket?'): + return + + # Init osTicket if necessary + if not self.ost.ticket_id: + self.ost.init() + self.ost.select_ticket() + + # Bail if user changed their mind + if not self.ost.ticket_id: + return + + # Post report + self.ost.post_response('\n'.join(report), color=color) + def prep_destination(self, source_parts, dry_run=True): """Prep destination as necessary.""" # TODO: Split into Linux and macOS @@ -1693,6 +1722,9 @@ def main(): if std.ask('Are you sure you want to quit?'): break + # osTicket + state.post_to_osticket() + # Save results to log std.print_standard(' ') std.print_report(state.generate_report()) diff --git a/scripts/wk/osticket.py b/scripts/wk/osticket.py index 8e147059..2a560db6 100644 --- a/scripts/wk/osticket.py +++ b/scripts/wk/osticket.py @@ -212,6 +212,7 @@ class osTicket(): # pylint: disable=invalid-name lines.append(f'[Note] {self.note}\n') lines.append(str(response)) response = '\n'.join(lines) + response = std.strip_colors(response) response = response.replace("`", "'").replace("'", "\\'") # Build SQL cmd