示例#1
0
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
示例#3
0
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
示例#5
0
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
示例#6
0
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
示例#8
0
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
示例#9
0
def jobs_status(configFile, sessionid):
    query = {}
    query['subresource'] = sessionid + "/status"
    data = get_page(configFile, SECTION, **query)

    return json.loads(data)
示例#10
0
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))