Пример #1
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(description="Get jobs' status")
    parser.add_argument('--proxy', default=None, help='path to proxy file')
    parser.add_argument('--server', default=None, help='URL to aCT server')
    parser.add_argument('--port', default=None, help='port on aCT server')
    parser.add_argument('--cadir',
                        default=None,
                        help='path to directory with CA certificates')
    parser.add_argument('--conf',
                        default=None,
                        help='path to configuration file')
    parser.add_argument('--id',
                        default=None,
                        help='a list of IDs of jobs that should be queried')
    parser.add_argument('--state',
                        default=None,
                        help='the state that jobs should be in')
    parser.add_argument('--name',
                        default=None,
                        help='substring that jobs should have in name')
    args = parser.parse_args()

    conf_dict['proxy'] = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port'] = args.port
    conf_dict['cadir'] = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    request_url = conf_dict['server'] + ':' + str(conf_dict['port']) + '/jobs'

    # add parameters
    if args.id or args.state or args.name:
        request_url += '?'
        if args.id:
            request_url += 'id=' + args.id + '&'
        if args.state:
            request_url += 'state=' + args.state + '&'
        if args.name:
            request_url += 'name=' + args.name
        request_url = request_url.rstrip('&')

    try:
        r = requests.delete(request_url,
                            cert=conf_dict['proxy'],
                            verify=conf_dict['cadir'])
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if r.status_code == 200:
        print('Cleaned {} jobs'.format(r.text))
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)
Пример #2
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(description='Submit proxy to aCT server')
    parser.add_argument('--proxy', default=None,
            help='path to proxy file')
    parser.add_argument('--server', default=None,
            help='URL to aCT server')
    parser.add_argument('--port', default=None,
            help='port on aCT server')
    parser.add_argument('--cert', default=None,
            help="path to user's certificate file")
    parser.add_argument('--key', default=None,
            help="path to user's key file")
    parser.add_argument('--cadir', default=None,
            help='path to directory with CA certificates')
    parser.add_argument('--conf', default=None,
            help='path to configuration file')
    args = parser.parse_args()

    conf_dict['proxy']  = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port']   = args.port
    conf_dict['cert']   = args.cert
    conf_dict['key']    = args.key
    conf_dict['cadir']  = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    # Since ARC doesn't seem to complain about non certificate files, should we
    # check if given file is actual certificate here?
    try:
        proxy_file = open(conf_dict['proxy'], 'r')
    except Exception as e:
        print('error opening proxy file: {}'.format(str(e)))
        sys.exit(2)
    else:
        proxy_str = proxy_file.read()
        proxy_file.close()

    request_url = conf_dict['server'] + ':' + str(conf_dict['port']) + '/proxies'

    try:
        r = requests.put(request_url, data=proxy_str, cert=(conf_dict['cert'], conf_dict['key']), verify=conf_dict['cadir'])
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if r.status_code == 200:
        print('{} - successfully inserted proxy with id {}'.format(r.status_code, r.text))
        sys.exit(0)
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)
Пример #3
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(description='Submit job to aCT server')
    parser.add_argument('--proxy', default=None, help='path to proxy file')
    parser.add_argument('--server', default=None, help='URL to aCT server')
    parser.add_argument('--port', default=None, help='port on aCT server')
    parser.add_argument('--cadir',
                        default=None,
                        help='path to directory with CA certificates')
    parser.add_argument('--conf',
                        default=None,
                        help='path to configuration file')
    parser.add_argument('--site',
                        default='default',
                        help='site that jobs should be submitted to')
    parser.add_argument('xRSL', help='path to job description file')
    args = parser.parse_args()

    conf_dict['proxy'] = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port'] = args.port
    conf_dict['cadir'] = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    request_url = conf_dict['server'] + ':' + str(conf_dict['port']) + '/jobs'
    try:
        files = {'xrsl': open(args.xRSL, 'r')}
    except Exception as e:
        print('error opening xRSL file: {}'.format(str(e)))
        sys.exit(2)
    form = {'site': args.site}

    try:
        r = requests.post(request_url,
                          files=files,
                          data=form,
                          cert=conf_dict['proxy'],
                          verify=conf_dict['cadir'])
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if r.status_code == 200:
        print('{} - succesfully submited job with id {}'.format(
            r.status_code, r.text))
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)
Пример #4
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(
        description='Delete proxy from aCT server')
    parser.add_argument('--proxy', default=None, help='path to proxy file')
    parser.add_argument('--server', default=None, help='URL to aCT server')
    parser.add_argument('--port', default=None, help='port on aCT server')
    parser.add_argument('--cadir',
                        default=None,
                        help='path to directory with CA certificates')
    parser.add_argument('--conf',
                        default=None,
                        help='path to configuration file')
    parser.add_argument(
        '--id',
        default=None,
        help='a list of proxy IDs of proxies that should be deleted')
    args = parser.parse_args()

    if not args.id:
        print('error: no proxy id given')
        sys.exit(1)

    conf_dict['proxy'] = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port'] = args.port
    conf_dict['cadir'] = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    request_url = conf_dict['server'] + ':' + str(
        conf_dict['port']) + '/proxies'
    request_url += '?id=' + args.id

    try:
        r = requests.delete(request_url,
                            cert=conf_dict['proxy'],
                            verify=conf_dict['cadir'])
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if r.status_code == 200:
        print('Deleted {} proxies'.format(r.text))
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)
Пример #5
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(description='List proxies on aCT server')
    parser.add_argument('--proxy', default=None,
            help='path to proxy file')
    parser.add_argument('--server', default=None,
            help='URL to aCT server')
    parser.add_argument('--port', default=None,
            help='port on aCT server')
    parser.add_argument('--cadir', default=None,
            help='path to directory with CA certificates')
    parser.add_argument('--conf', default=None,
            help='path to configuration file')
    args = parser.parse_args()

    conf_dict['proxy']  = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port']   = args.port
    conf_dict['cadir']  = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    request_url = conf_dict['server'] + ':' + str(conf_dict['port']) + '/proxies'

    try:
        r = requests.get(request_url, cert=conf_dict['proxy'], verify=conf_dict['cadir'])
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if r.status_code == 200:
        json_r = json.loads(r.text)
        for proxy in json_r:
            for key, value in proxy.items():
                print('{}:{} '.format(key, value), end=' ')
            print()
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)
Пример #6
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(description="Get jobs' status")
    parser.add_argument('--proxy', default=None,
            help='path to proxy file')
    parser.add_argument('--server', default=None,
            help='URL to aCT server')
    parser.add_argument('--port', default=None,
            help='port on aCT server')
    parser.add_argument('--cadir', default=None,
            help='path to directory with CA certificates')
    parser.add_argument('--conf', default=None,
            help='path to configuration file')
    parser.add_argument('--id', default=None,
            help='a list of IDs of jobs that should be queried')
    parser.add_argument('--arc', default='arcstate',
            help='a list of columns from ARC table')
    parser.add_argument('--client', default='id,jobname',
            help='a list of columns from client table')
    parser.add_argument('--state', default=None,
            help='the state that jobs should be in')
    parser.add_argument('--name', default=None,
            help='substring that jobs should have in name')
    args = parser.parse_args()

    conf_dict['proxy']  = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port']   = args.port
    conf_dict['cadir']  = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    request_url = conf_dict['server'] + ':' + str(conf_dict['port']) + '/jobs'

    # add parameters
    if args.id or args.arc or args.client or args.state or args.name:
        request_url += '?'
        if args.id:
            request_url += 'id=' + args.id + '&'
        if args.arc:
            request_url += 'arc=' + args.arc + '&'
        if args.client:
            request_url += 'client=' + args.client + '&'
        if args.state:
            request_url += 'state=' + args.state + '&'
        if args.name:
            request_url += 'name=' + args.name
        request_url = request_url.rstrip('&')

    try:
        r = requests.get(request_url, cert=conf_dict['proxy'], verify=conf_dict['cadir'])
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if args.arc:
        arccols = args.arc.split(',')
    else:
        arccols = []
    if args.client:
        clicols = args.client.split(',')
    else:
        clicols = []

    if r.status_code == 200:
        try:
            json_resp = r.json()
        except ValueError as e:
            print('Response error: {}. Response status: {}'.format(e, r.status_code))
            sys.exit(3)
        # For each column, determine biggest sized value so that output can
        # be nicely formatted.
        colsizes = {}
        for job in json_resp:
            for key, value in job.items():
                # All keys have a letter and underscore prepended, which is not
                # used when printing
                colsize = max(len(str(key[2:])), len(str(value)))
                try:
                    if colsize > colsizes[key]:
                        colsizes[key] = colsize
                except KeyError:
                    colsizes[key] = colsize
        # Print jobs
        for job in json_resp:
            for col in clicols:
                fullKey = 'c_' + col
                print('{:<{width}}'.format(job[fullKey], width=colsizes[fullKey]), end=' ')
            for col in arccols:
                fullKey = 'a_' + col
                print('{:<{width}}'.format(job[fullKey], width=colsizes[fullKey]), end=' ')
            print()
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)
Пример #7
0
def main():

    conf_dict = {}

    # get config from arguments
    parser = argparse.ArgumentParser(description='Submit proxy to aCT server')
    parser.add_argument('--proxy', default=None, help='path to proxy file')
    parser.add_argument('--server', default=None, help='URL to aCT server')
    parser.add_argument('--port', default=None, help='port on aCT server')
    parser.add_argument('--cadir',
                        default=None,
                        help='path to directory with CA certificates')
    parser.add_argument('--conf',
                        default=None,
                        help='path to configuration file')
    parser.add_argument('--id',
                        default='',
                        help='a list of IDs of jobs that should be queried')
    args = parser.parse_args()

    conf_dict['proxy'] = args.proxy
    conf_dict['server'] = args.server
    conf_dict['port'] = args.port
    conf_dict['cadir'] = args.cadir

    config.parse_non_param_conf(conf_dict, args.conf)

    request_url = conf_dict['server'] + ':' + str(
        conf_dict['port']) + '/results'
    request_url += '?id=' + args.id

    try:
        r = requests.get(request_url,
                         cert=conf_dict['proxy'],
                         verify=conf_dict['cadir'],
                         stream=True)
    except Exception as e:
        print('requests error: {}'.format(str(e)))
        sys.exit(5)

    if r.status_code == 200:
        # 'Content-Disposition': 'attachment; filename=ZrcMDm3nK4rneiavIpohlF4nABFKDmABFKDmggFKDmEBFKDm2cmmzn.zip'
        filename = r.headers['Content-Disposition'].split()[1].split('=')[1]

        try:
            with open(filename, 'wb') as result_file:
                for chunk in r.iter_content():
                    if chunk:  # filter out keep-alive new chunks
                        result_file.write(chunk)
            dirname = os.path.splitext(filename)[0]
            with zipfile.ZipFile(filename, 'r') as zip_ref:
                zip_ref.extractall(dirname)
            os.remove(filename)
        except Exception as e:
            print('error getting results: {}'.format(str(e)))
            sys.exit(2)

        print('{} - results stored in {}'.format(r.status_code, dirname))

        # clean the job
        request_url = conf_dict['server'] + ':' + str(
            conf_dict['port']) + '/jobs'
        request_url += '?id=' + args.id

        try:
            r = requests.delete(request_url,
                                cert=conf_dict['proxy'],
                                verify=conf_dict['cadir'])
        except Exception as e:
            print('requests error: {}'.format(str(e)))
            sys.exit(5)

        if r.status_code != 200:
            print('error cleaning job: {}'.format(r.text))
            sys.exit(4)
    else:
        print('{} - {}'.format(r.status_code, r.text))
        sys.exit(4)