From 67bc899f4a9502a6badefa25fb54159bd1e7298b Mon Sep 17 00:00:00 2001 From: Wirawan Purwanto Date: Wed, 14 Sep 2016 13:38:29 -0400 Subject: [PATCH] * Fixes for unhandled/unrecognized command options. * Documentation update. * Added help command. --- sge/show-node-status.py | 56 +++++++++++++++++++++++++---------------- 1 file changed, 35 insertions(+), 21 deletions(-) diff --git a/sge/show-node-status.py b/sge/show-node-status.py index 409f969..18da2a7 100755 --- a/sge/show-node-status.py +++ b/sge/show-node-status.py @@ -26,8 +26,8 @@ class ParseError(RuntimeError): class ProgramError(RuntimeError): pass -#----------------------- UNDER CONSTRUCTION ----------------------- -#Nothing was done yet +MYSELF = 'show-node-status.py' + def node_slot_stats_raw(qstat_f, show_disabled_nodes=False): """Prints the node stats from `qstat -f' in raw format: @@ -228,31 +228,31 @@ def print_hosttype_stats(hosttype_stats): def help(): msg = """\ -show-node-status.py - Showing node status from SGE information +%(CMD)s - Shows node status from SGE information The information is mainly drawn from `qstat -f` output. Usage: one of the following: ---raw -raw +%(CMD)s raw [qstat_file] [--save] [--show-disabled-nodes] Shows the raw queue/node status ---stats -stats -(no argument) +%(CMD)s +%(CMD)s stats [qstat_file] [--save] [--show-disabled-nodes] Shows the statistic summary per node type -""" +""" \ + % dict(CMD=MYSELF) + print(msg) -def main_default(argv, save_qstat=None): +def main_default(argv): """Main default function: - By default we invoke qstat -f and prints the analysis. - If argv[1] is given, then we read in the file and use that for the analysis. """ from time import localtime, strftime - from getopt import getopt + from getopt import getopt, GetoptError dtime = localtime() dtimestr = strftime("%Y%m%d-%H%M", dtime) @@ -262,29 +262,41 @@ def main_default(argv, save_qstat=None): cmd = "stats" elif argv[1] in ('--raw', 'raw'): cmd = "raw" - elif argv[1] in ('--stats', 'stats'): + elif argv[1] in ('--stats', 'stats', 'stat'): cmd = "stats" + elif argv[1] in ('--help', 'help', '-h'): + help() + return 0 else: raise ValueError, "Unknown action: "+argv[1] # Skip program name and first command: cmdargs_in = argv[2:] - cmdopts, cmdargs = getopt(cmdargs_in, - "ds", - ["show-disabled-nodes=", - "include-disabled-nodes=", - "save", - ]) - - # Default options + try: + cmdopts, cmdargs = getopt(cmdargs_in, + "dhs", + ["show-disabled-nodes=", "include-disabled-nodes=", + "save", + "help"]) + except GetoptError as err: + sys.stderr.writelines([str(err), "\n"]) + return 2 + + # Process flag argument show_disabled_nodes = False + save_qstat = False for o,a in cmdopts: - if o in ('-d',): + if o in ('-h', '--help'): + help() + return 0 + elif o in ('-d',): show_disabled_nodes = True elif o in ('--show-disabled-nodes', '--include-disabled-nodes'): show_disabled_nodes = parse_int_or_bool(a) elif o in ('-s', '--save'): save_qstat = True + else: + raise ProgramError, "Unhandled option in main program: %s %s" % (o,a) if len(cmdargs) > 0: qstat_f_current = open(cmdargs[0], "r").read().splitlines() @@ -306,6 +318,8 @@ def main_default(argv, save_qstat=None): else: raise ProgramError, "Missing support for command: "+cmd + return 0 + # ---------------------------------------------------------------------------