print(args.sharedDir) print(args.shareName) if not os.path.exists(args.sharedDir): os.makedirs(args.sharedDir) os.chmod(args.sharedDir, 0777) authToken = '' transferToken = '' endpointId = '' tc = TransferClient( authorizer=transferToken) # uses transfer_token from the config file auth = AuthClient(authorizer=authToken) identities = auth.get_identities(usernames="*****@*****.**" % args.shareName) user_identity_id = identities['identities'][0]['id'] try: tc.add_endpoint_acl_rule( endpointId, dict(principal=user_identity_id, principal_type='identity', path=args.sharedDir, permissions='rw'), ) with open('/var/log/globus_shares.log', 'w') as f: fwrite('Shared %s with %s' % (args.sharedDir, args.shareName)) except TransferAPIError as error: if error.code != 'Exists': raise
def doit(): """ - Call token introspect - Get dependent tokens """ dependent_tokens = get_dependent_tokens(g.req_token) # dependent_tokens is a token response object # create transfer_token and http_token variables containing # the correct token for each resource server transfer_token = dependent_tokens.by_resource_server[ 'transfer.api.globus.org']['access_token'] http_token = dependent_tokens.by_resource_server[ 'tutorial-https-endpoint.globus.org']['access_token'] selected_ids = request.form.getlist('datasets') selected_year = request.form.get('year') user_identity_id = request.form.get('user_identity_id') user_identity_name = request.form.get('user_identity_name') selected_datasets = [ dataset for dataset in datasets if dataset['id'] in selected_ids ] if not (selected_datasets and selected_year): raise BadRequestError() transfer = TransferClient(authorizer=AccessTokenAuthorizer(transfer_token)) source_ep = app.config['DATASET_ENDPOINT_ID'] source_info = transfer.get_endpoint(source_ep) source_https = source_info['https_server'] source_base = app.config['DATASET_ENDPOINT_BASE'] source_token = http_token dest_ep = app.config['GRAPH_ENDPOINT_ID'] dest_info = transfer.get_endpoint(dest_ep) dest_https = dest_info['https_server'] dest_base = app.config['GRAPH_ENDPOINT_BASE'] dest_path = '%sGraphs for %s/' % (dest_base, user_identity_name) dest_token = http_token if not (source_https and dest_https): raise InternalServerError(message='Endpoints must be HTTPS servers') svgs = {} for dataset in selected_datasets: source_path = dataset['path'] response = requests.get( '%s%s%s/%s.csv' % (source_https, source_base, source_path, selected_year), headers=dict(Authorization='Bearer ' + source_token), allow_redirects=False) response.raise_for_status() svgs.update( render_graphs( csv_data=response.iter_lines(decode_unicode=True), append_titles=' from %s for %s' % (dataset['name'], selected_year), )) transfer.endpoint_autoactivate(dest_ep) try: transfer.operation_mkdir(dest_ep, dest_path) except TransferAPIError as error: if 'MkdirFailed.Exists' not in error.code: raise try: transfer.add_endpoint_acl_rule( dest_ep, dict(principal=user_identity_id, principal_type='identity', path=dest_path, permissions='r'), ) except TransferAPIError as error: # PermissionDenied can happen if a new Portal client is swapped # in and it doesn't have endpoint manager on the dest_ep. # The /portal/processed directory has been set to to read/write # for all users so the subsequent operations will succeed. if error.code == 'PermissionDenied': pass elif error.code != 'Exists': raise for filename, svg in svgs.items(): requests.put('%s%s%s.svg' % (dest_https, dest_path, filename), data=svg, headers=dict(Authorization='Bearer ' + dest_token), allow_redirects=False).raise_for_status() results = { 'dest_ep': dest_ep, 'dest_path': dest_path, 'dest_name': dest_info['display_name'], 'graph_count': len(svgs) or 0 } return jsonify(results)
help='Directory to create a share on', required=True) parser.add_argument('--share-name', dest='shareName', help='globusid to share with', required=True) args = parser.parse_args() print(args.sharedDir) print(args.shareName) if not os.path.exists(args.sharedDir): os.makedirs(args.sharedDir) os.chmod(args.sharedDir, 0777) authToken = '' transferToken = '' endpointId = '' tc = TransferClient(authorizer=transferToken) # uses transfer_token from the config file auth = AuthClient(authorizer=authToken) identities = auth.get_identities(usernames="*****@*****.**" % args.shareName) user_identity_id = identities['identities'][0]['id'] try: tc.add_endpoint_acl_rule( endpointId, dict(principal=user_identity_id, principal_type='identity', path=args.sharedDir, permissions='rw'), ) except TransferAPIError as error: if error.code != 'Exists': raise
import os parser = argparse.ArgumentParser(description='kbase share creator') parser.add_argument('--share-dir', dest='sharedDir', help='Directory to create a share on', required=True) parser.add_argument('--share-name', dest='shareName', help='globusid to share with', required=True) args = parser.parse_args() print(args.sharedDir) print(args.shareName) if not os.path.exists(args.sharedDir): os.makedirs(args.sharedDir) os.chmod(args.sharedDir, 0777) tc = TransferClient() # uses transfer_token from the config file auth = AuthClient() identities = auth.get_identities(usernames="*****@*****.**" % args.shareName) user_identity_id = identities['identities'][0]['id'] try: tc.add_endpoint_acl_rule( '3aca022a-5e5b-11e6-8309-22000b97daec', dict(principal=user_identity_id, principal_type='identity', path=args.sharedDir, permissions='rw'), ) except TransferAPIError as error: if error.code != 'Exists': raise
def doit(): """ - Call token introspect - Get dependent tokens """ dependent_tokens = get_dependent_tokens(g.req_token) # dependent_tokens is a token response object # create transfer_token and http_token variables containing # the correct token for each resource server transfer_token = dependent_tokens.by_resource_server[ 'transfer.api.globus.org']['access_token'] http_token = dependent_tokens.by_resource_server[ app.config['GRAPH_ENDPOINT_ID']]['access_token'] selected_ids = request.form.getlist('datasets') selected_year = request.form.get('year') user_identity_id = request.form.get('user_identity_id') user_identity_name = request.form.get('user_identity_name') selected_datasets = [dataset for dataset in datasets if dataset['id'] in selected_ids] if not (selected_datasets and selected_year): raise BadRequestError() transfer = TransferClient(authorizer=AccessTokenAuthorizer(transfer_token)) source_ep = app.config['DATASET_ENDPOINT_ID'] source_info = transfer.get_endpoint(source_ep) source_https = source_info['https_server'] source_base = app.config['DATASET_ENDPOINT_BASE'] source_token = http_token dest_ep = app.config['GRAPH_ENDPOINT_ID'] dest_info = transfer.get_endpoint(dest_ep) dest_https = dest_info['https_server'] dest_base = app.config['GRAPH_ENDPOINT_BASE'] dest_path = '%sGraphs for %s/' % (dest_base, user_identity_name) dest_token = http_token if not (source_https and dest_https): raise InternalServerError(message='Endpoints must be HTTPS servers') svgs = {} for dataset in selected_datasets: source_path = dataset['path'] response = requests.get('%s%s%s/%s.csv' % (source_https, source_base, source_path, selected_year), headers=dict( Authorization='Bearer ' + source_token), allow_redirects=False) response.raise_for_status() svgs.update(render_graphs( csv_data=response.iter_lines(decode_unicode=True), append_titles=' from %s for %s' % (dataset['name'], selected_year), )) transfer.endpoint_autoactivate(dest_ep) try: transfer.operation_mkdir(dest_ep, dest_path) except TransferAPIError as error: if 'MkdirFailed.Exists' not in error.code: raise try: transfer.add_endpoint_acl_rule( dest_ep, dict(principal=user_identity_id, principal_type='identity', path=dest_path, permissions='r'), ) except TransferAPIError as error: # PermissionDenied can happen if a new Portal client is swapped # in and it doesn't have endpoint manager on the dest_ep. # The /portal/processed directory has been set to to read/write # for all users so the subsequent operations will succeed. if error.code == 'PermissionDenied': pass elif error.code != 'Exists': raise for filename, svg in svgs.items(): requests.put('%s%s%s.svg' % (dest_https, dest_path, filename), data=svg, headers=dict(Authorization='Bearer ' + dest_token), allow_redirects=False).raise_for_status() results = { 'dest_ep': dest_ep, 'dest_path': dest_path, 'dest_name': dest_info['display_name'], 'graph_count': len(svgs) or 0 } return jsonify(results)