def main_list(args=None, func=_print_simulation_list): """Retrieves list of all simulations, by default prints in human readable format. """ op = optparse.OptionParser(usage="USAGE: %prog [options] CONFIG_FILE", description=main_list.__doc__) add_options(op) add_json_option(op) (options, args) = op.parse_args(args) if len(args) != 1: op.error('expecting 1 argument') if options.json: func = _print_json configFile = _open_config(args[0]) query = {} if options.verbose: query['verbose'] = options.verbose options.page = 1 content = get_page(configFile, SECTION, **query) data = load_pages_json([content]) if func: func(data, options.verbose) return data
def main_get_config(args=None, func=_print_page): """Return configuration settings for top-level Consumer resource, by default print as JSON. These settings are utilized by an orchestrator process (deployment specific). The AWS EC2 orchestator handles auto-scaling of instances. """ op = optparse.OptionParser(usage="USAGE: %prog [options] CONFIG_FILE", description=main_get_config.__doc__) # add_options(op) op.add_option("-v", "--verbose", action="store_true", dest="verbose", help="verbose output") (options, args) = op.parse_args(args) if len(args) != 1: op.error('expecting 1 argument') configFile = _open_config(args[0]) query = dict(subresource='/config') page = get_page(configFile, SECTION, **query) if func: func(page) return page
def main_get(args=None, func=_print_json): """Retrieves the Simulation resource, by default prints as JSON. """ op = optparse.OptionParser( usage="USAGE: %prog [options] SIMULATION_NAME CONFIG_FILE", description=main_get.__doc__) # add_options(op) op.add_option("-r", "--resource", action="store", dest="resource", help="return only the specified input subresource") op.add_option("-s", "--save", action="store_true", dest="save", help="Save the resource as a file") (options, args) = op.parse_args(args) if len(args) != 2: op.error('expecting 2 arguments') configFile = _open_config(args[-1]) simulation = args[0] query = {} fileName = 'simulation_%s' % (simulation) if options.resource: fileName += '_%s' % options.resource query['subresource'] = '%s/input/%s' % (simulation, options.resource) data = get_page(configFile, SECTION, **query) else: query['subresource'] = '%s' % (simulation) data = json.loads(get_page(configFile, SECTION, **query)) if func: out = sys.stdout if options.save: out = open('%s.txt' % fileName, 'w') func(data, out=out) return data
def main(args=None, func=_print_as_json): """Queries for job resources based on select criteria, by default prints JSON array of jobs. """ global states op = optparse.OptionParser(usage="USAGE: %prog [options] CONFIG_FILE", description=main.__doc__) op.add_option("-j", "--jobid", action="store", dest="subresource", default=None, help="JOB ID") op.add_option("-n", "--sim", action="store", dest="simulation", default=None, help="Simulation Name") op.add_option("-x", "--state", action="store", dest="state", default=None, help="Job Status to query: %s" %list(states)) op.add_option("-c", "--consumer", action="store", dest="consumer", default=None, help="Consumer GUID to query") op.add_option("-b", "--basic", action="store_true", dest="basic", help="Print Basic Information About Job(s)") add_options(op) add_session_option(op) (options, args) = op.parse_args(args) configFile = _open_config(args[0]) query = {} if options.session: query['session'] = options.session if options.simulation: query['simulation'] = options.simulation if options.subresource: query['subresource'] = options.subresource if options.state: query['state'] = options.state if options.consumer: query['consumer'] = options.consumer if options.verbose: query['verbose'] = options.verbose if options.subresource: page = get_page(configFile, SECTION, **query) job = json.loads(page) if options.basic: write_basic_job_info(sys.stdout, job, verbose=options.verbose) elif func is not None and callable(func): func(job, sys.stdout) return job try: pages = get_paging(configFile, SECTION, options, **query) except HTTPError, ex: print ex print ex.readlines() return
def main_get_consumer_by_guid(args=None, func=_print_page): """Retrieves consumer by GUID """ op = optparse.OptionParser(usage="USAGE: %prog [options] CONSUMER_GUID CONFIG_FILE", description=main.__doc__) (options, args) = op.parse_args(args) if len(args) != 2: op.error('expecting 2 arguments') configFile = _open_config(args[1]) query = dict(subresource='/%s' %args[0]) page = get_page(configFile, SECTION, **query) data = json.loads(page) if func: func(data) return data
def main_log(args=None, func=_print_page): """Retrieves logging messages from compute resource running the specified Consumer. Log messages are printed to screen in order. This functionality is not available in all deployments. """ op = optparse.OptionParser(usage="USAGE: %prog [options] CONFIG_FILE", description=main_log.__doc__) (options, args) = op.parse_args(args) if len(args) != 2: op.error('expecting 2 arguments') configFile = _open_config(args[1]) query = dict(subresource='/%s/log' %args[0]) page = get_page(configFile, SECTION, **query) if func: func(page) return page
def main(args=None, func=_print_numbered_lines): """List all Consumer resources, by default print in human readable format. """ op = optparse.OptionParser(usage="USAGE: %prog [options] CONFIG_FILE", description=main.__doc__) # add_options(op) op.add_option("-v", "--verbose", action="store_true", dest="verbose", help="verbose output") """ op.add_option("-p", "--page", type="int", action="store", dest="page", default=0, help="page number") op.add_option("-r", "--rpp", type="int", action="store", dest="rpp", default=1000, help="results per page") """ op.add_option("-s", "--status", action="store", dest="status", help="query on status ['up'|'down'|'error']") add_json_option(op) (options, args) = op.parse_args(args) if len(args) != 1: op.error('expecting 1 argument') configFile = _open_config(args[0]) query = {} if options.status: query['status'] = options.status # NOTE RESOURCE NOT SUPPORTING PAGING #pages = get_paging(configFile, SECTION, options, **query) #data = load_pages_json(pages) page = get_page(configFile, SECTION, **query) data = json.loads(page) if options.json: func = _print_as_json if func: func(data) return data
def main(args=None, func=_print_as_json): """Queries for job resources based on select criteria, by default prints JSON array of jobs. """ global states op = optparse.OptionParser(usage="USAGE: %prog [options] CONFIG_FILE", description=main.__doc__) op.add_option("-j", "--jobid", action="store", dest="subresource", default=None, help="JOB ID") op.add_option("-n", "--sim", action="store", dest="simulation", default=None, help="Simulation Name") op.add_option("-x", "--state", action="store", dest="state", default=None, help="Job Status to query: %s" % list(states)) op.add_option("-c", "--consumer", action="store", dest="consumer", default=None, help="Consumer GUID to query") op.add_option("-b", "--basic", action="store_true", dest="basic", help="Print Basic Information About Job(s)") add_options(op) add_session_option(op) (options, args) = op.parse_args(args) configFile = _open_config(args[0]) query = {} if options.session: query['session'] = options.session if options.simulation: query['simulation'] = options.simulation if options.subresource: query['subresource'] = options.subresource if options.state: query['state'] = options.state if options.consumer: query['consumer'] = options.consumer if options.verbose: query['verbose'] = options.verbose if options.subresource: page = get_page(configFile, SECTION, **query) job = json.loads(page) if options.basic: write_basic_job_info(sys.stdout, job, verbose=options.verbose) elif func is not None and callable(func): func(job, sys.stdout) return job try: pages = get_paging(configFile, SECTION, options, **query) except HTTPError as ex: print(ex) print(ex.readlines()) return #states = set(['submit', 'create', 'setup', 'running', 'success', 'warning', 'error', 'expired', 'cancel', 'terminate']) all = load_pages_json(pages) fstates = set(map(lambda e: e['State'], all)) if not fstates.issubset(states): _log.debug('**NOTE: Unexpected State Found') states = states.union(fstates) if options.basic: print("Total JOBS: %d" % len(all)) for state in states: if options.state is not None and options.state != state: continue flist = filter(lambda e: e['State'] == state, all) print("\t%s JOBS: %d" % (state.upper(), len(flist))) if options.verbose: for i in flist: print for k, v in i.items(): print("\t%12s -- %s" % (k, v)) else: print("\t%s" % map(lambda m: m['Id'], flist)) elif func is not None and callable(func): _print_as_json(all) return all
def jobs_status(configFile, sessionid): query = {} query['subresource'] = sessionid + "/status" data = get_page(configFile, SECTION, **query) return json.loads(data)
def get_session_page_results(configFile, sessionid, page_number): return get_page( configFile, SECTION, subresource="%s/result/00000000-0000-0000-0000-000000000000/%d" % (sessionid, page_number))