Beispiel #1
0
def publish(ctx, name, ecl, dir):
    click.echo('publishing a Roxie query')
    eclagent_host = get_roxie(ctx)
    program_dir = os.path.dirname(ecl) if dir is None else dir
    cmd = 'cd {}; {}/bin/ecl publish roxie {} --name={} --server={} -A'.format(
        program_dir, get_system_dir(ctx), ecl, name, eclagent_host)
    execute(cmd, sudo=True)
Beispiel #2
0
def lookup_workunit_info(ctx, wuid):
    eclagent_host = get_roxie(ctx)
    cmd = '{}/bin/daliadmin server={} workunit {}'.format(
        get_system_dir(ctx), eclagent_host, wuid)
    # can be inefficient if the output is very large
    output = execute(cmd, silent=True, capture=True)
    doc = etree.fromstring(output)
    participatant_roxie_nodes = set()
    for record in doc.xpath('//Statistic[@creator]'):
        if 'myroxie@' in record.attrib['creator']:
            participatant_roxie_nodes.add(
                str(record.attrib['creator']).split('@')[-1])
    print(participatant_roxie_nodes)
Beispiel #3
0
def status(ctx, name, type):
    eclagent_host = get_esp(ctx)
    cmd_lookup = ("-n {}" if type == 'job' else '-wu {}').format(name)
    cmd = '{}/bin/ecl status --server={} {}'.format(get_system_dir(ctx), eclagent_host, cmd_lookup)
    results = execute(cmd, capture=True, silent=True)
    status_records = {}
    if ',' in results:
        status_records = {line.split(',')[0]: line.split(',')[2] for line in results.splitlines()}
    else:
        if type == 'job':
            with CaptureOutput() as output:
               wuid = ctx.invoke(lookup_wuid, job=job)[0]
               status_records[wuid] = results
        elif type == 'wuid':
            status_records[name] = results
    for (wuid, status) in status_records.items():
        print("{}: {}".format(wuid, status))
    return status_records
Beispiel #4
0
def _call(ctx, target_cluster, ecl, published_query, base_dir, query_input, parameter_input, wait, job, wait_until_complete):
    if wait_until_complete:
        wait = 1000 #milliseconds
    eclagent_host = get_esp(ctx)

    call_target = None
    # should have more than three: ecl, pq, wuid, archive, dl.
    call_type = 'pq' if published_query is not None else 'ecl'
    program_dir = None
    if call_type == 'pq':
        call_target = published_query
    elif call_type == 'ecl':
        program_dir = os.path.dirname(ecl) if base_dir is None else base_dir
        call_target = ecl

    job_name = "{}_{}".format(os.path.splitext(os.path.basename(call_target))[0].lower(), uuid.uuid4()) if job is None else job
    # -v for getting wuid
    cmd = '{}/bin/ecl run -v --server {} --target {} --wait={} --name={} {} {} {}'.format(get_system_dir(ctx), eclagent_host, target_cluster, wait, job_name, convert_to_query_xml(query_input), convert_to_query_text(parameter_input), call_target)
    if program_dir is not None:
        cmd = 'cd {}; '.format(program_dir) + cmd
    print(cmd)
    output = execute(cmd, silent=True, capture=True)
    if ctx.obj['show']:
        print(output)
    #print(output)
    # this can be dangerous and inefficient
    wuid = extract_wuid(output, call_type=call_type)

    if not wait_until_complete:
        return lookup_status(ctx, wuid, type='wuid')

    return ctx.invoke(wait_for_completion, wuid=wuid)
Beispiel #5
0
def lookup_wuid(ctx, job):
    eclagent_host = get_esp(ctx)
    cmd = '{}/bin/ecl getwuid --server={} -n={}'.format(get_system_dir(ctx), eclagent_host, job)
    wuid = execute(cmd, capture=True, silent=True)
    print(uuid)
    return wuid.splitlines()
Beispiel #6
0
def unpublish(ctx, name):
    click.echo('unpublishing a Roxie query')
    eclagent_host = get_roxie(ctx)
    cmd = '{}/bin/ecl unpublish roxie {} --server={}'.format(
        get_system_dir(ctx), name, eclagent_host)
    execute(cmd, sudo=True)
Beispiel #7
0
def clean_unused_files(ctx):
    eclagent_host = get_roxie(ctx)
    cmd = '{}/bin/ecl roxie unused-files myroxie --server={} --delete'.format(
        get_system_dir(ctx), eclagent_host)
    execute(cmd)