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)
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)
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)
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)
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)
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)
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)