From 0d35d81b97bee5839488fd26553f9fc7cfa1c126 Mon Sep 17 00:00:00 2001 From: 2Shirt <2xShirt@gmail.com> Date: Mon, 1 Oct 2018 13:00:21 -0600 Subject: [PATCH] Include used space in disk reports for osTicket * Used space info is not included if the drive failed the test(s) --- .bin/Scripts/functions/hw_diags.py | 89 +++++++++++++++++++----------- 1 file changed, 57 insertions(+), 32 deletions(-) diff --git a/.bin/Scripts/functions/hw_diags.py b/.bin/Scripts/functions/hw_diags.py index ed775a0e..25913963 100644 --- a/.bin/Scripts/functions/hw_diags.py +++ b/.bin/Scripts/functions/hw_diags.py @@ -8,7 +8,7 @@ import mysql.connector as mariadb import requests import time -from functions.common import * +from functions.data import * from numpy import * # Database connection @@ -345,12 +345,15 @@ def menu_diags(*args): if diag_modes[int(selection)-1]['Name'] != 'Quick drive test': clear_screen() print_standard(' ') - try_and_print( + result = try_and_print( message='Connecting to osTicket database...', function=connect_to_db, width=40) + if not result['CS']: + print_warning('osTicket integration disabled for this run.') + pause() # Save log for non-quick tests - ticket_number = get_osticket_number() + global_vars['Date-Time'] = time.strftime("%Y-%m-%d_%H%M_%z") global_vars['LogDir'] = '{}/Logs/{}_{}'.format( global_vars['Env']['HOME'], ticket_number, @@ -358,6 +361,7 @@ def menu_diags(*args): os.makedirs(global_vars['LogDir'], exist_ok=True) global_vars['LogFile'] = '{}/Hardware Diagnostics.log'.format( global_vars['LogDir']) + ticket_number = get_osticket_number() run_tests(diag_modes[int(selection)-1]['Tests'], ticket_number) elif selection == 'A': run_program(['hw-diags-audio'], check=False, pipe=False) @@ -634,6 +638,25 @@ def post_drive_results(ticket_number): # Oh well pass + # Used space + report.append('') + report.append('Volumes:') + if dev_failed: + report.append('Skipped due to error(s) above.') + else: + volume_report = mount_volumes( + all_devices=False, + device_path='/dev/{}'.format(name)) + for vol_path, vol_data in sorted(volume_report.items()): + line = vol_path + if vol_data.get('label', False): + line += ' "{}"'.format(vol_data['label']) + line += ' Used: {}, Free: {}'.format( + vol_data.get('size_used', 'UNKNOWN'), + vol_data.get('size_avail', 'UNKNOWN'), + ) + report.append(line) + # Post reply for drive osticket_post_reply( ticket_id=ticket_number, @@ -979,35 +1002,36 @@ def run_mprime(ticket_number): update_progress() # Build osTicket report - report = ['Prime95 ({}):'.format(TESTS['Prime95']['Status'])] - log_path = '{}/prime.log'.format(global_vars['LogDir']) - try: - with open(log_path, 'r') as f: - for line in f.readlines(): - line = line.strip() - r = re.search('(completed \d+ tests.*)', line, re.IGNORECASE) - if r: - report.append(r.group(1)) - except: - report.append('ERROR: Failed to read log.') - report.append('') - report.append('Final temps:') - log_path = '{}/Final Temps.log'.format(global_vars['LogDir']) - try: - with open(log_path, 'r') as f: - for line in f.readlines(): - line = line.strip() - if not line: - # Stop after CPU temp(s) - break - report.append(line) - except: - report.append('ERROR: Failed to read log.') + if ticket_number: + report = ['Prime95 ({}):'.format(TESTS['Prime95']['Status'])] + log_path = '{}/prime.log'.format(global_vars['LogDir']) + try: + with open(log_path, 'r') as f: + for line in f.readlines(): + line = line.strip() + r = re.search('(completed \d+ tests.*)', line, re.IGNORECASE) + if r: + report.append(r.group(1)) + except: + report.append('ERROR: Failed to read log.') + report.append('') + report.append('Final temps:') + log_path = '{}/Final Temps.log'.format(global_vars['LogDir']) + try: + with open(log_path, 'r') as f: + for line in f.readlines(): + line = line.strip() + if not line: + # Stop after CPU temp(s) + break + report.append(line) + except: + report.append('ERROR: Failed to read log.') - # Upload osTicket report - osticket_post_reply( - ticket_id=ticket_number, - response='\n'.join(report)) + # Upload osTicket report + osticket_post_reply( + ticket_id=ticket_number, + response='\n'.join(report)) # Done run_program('tmux kill-pane -a'.split()) @@ -1140,7 +1164,8 @@ def run_tests(tests, ticket_number=None): run_iobenchmark(ticket_number) # Show results - post_drive_results(ticket_number) + if ticket_number: + post_drive_results(ticket_number) show_results() # Open log