Loading .gitignore 0 → 100644 +1 −0 Original line number Diff line number Diff line refresh-tokens.json crossbow/crossbowBase.py +2 −6 Original line number Diff line number Diff line Loading @@ -187,17 +187,15 @@ class crossbowBase(object): return rsc_metadata def edit_resource(self,package,resource,new_name=None,new_description=None): def edit_resource_description(self,package,resource,new_description=None): ''' edit the name or description for an existing resource edit the description for an existing resource parameters: - package: string name of package - resource: string name of resource - new_name: string (optional) new name for resource - new_description: string (optional) new description for resource ''' Loading @@ -207,8 +205,6 @@ class crossbowBase(object): if metadata['name']==resource][0] #update metadata with new edits if new_name: rsc_metadata['name'] = new_name if new_description: rsc_metadata['description'] = new_description Loading crossbow/crossbowGlobus.py +60 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,66 @@ class crossbowGlobus(crossbowBase): ''' oak ridge national labs cross-platform big-data operational workflow this version is for file transfers through Globus nonstandard Python package requirements: - globus_sdk - ckanapi parameters: - api_key: string api key used to connect to CKAN - CKAN_url: string (default: "http://128.219.185.145:5000") CKAN url - user_agent: string (default: "crossbow") id used to track activity in logs - token_file: string (default: "refresh-tokens.json") local file to save refresh tokens for Globus methods: - list_packages() returns all packages (datasets) available on CKAN - get_package_details(package) prints and returns details for a specific package - create_package(package,owner_org,title=None,description=None,author=None, author_email=None,maintainer=None,maintainer_email=None, version=None,tags=[]) creates a new package (dataset) - edit_package(package,*args,**kwargs) edit an existing package (dataset) - list_resources(package) returns all resources for a particular package - list_dcd_resources(package) returns all .dcd resources for a particular package - list_non_dcd_resources(package) returns all non .dcd resources for a particular package - get_resource_details(package,resource) prints and returns details for a specific resource - upload_resource(package,resource_path,source_endpoint=olcfatlas, description=None) upload a resource at a globus endpoint to an existing package resource is copied to CROSSBOW_NFS/package/filename - edit_resource_description(package,resource,new_description=None) edit the description for an existing resource - download_resource(package,resource,dest_endpoint=olcfatlas, dest_path='/~/') use globus to download the resource to a destination endpoint - delete_resource(package,resource) delete a resource from a package (Note: your api key must belong to a sysadmin or the owner of the resource to delete a resource) - check_task_status(task_id) check on the status of a globus task ''' def __init__(self,api_key,CKAN_url="http://128.219.185.145:5000", Loading crossbow/crossbowMount.py +4 −3 Original line number Diff line number Diff line Loading @@ -21,7 +21,8 @@ class crossbowMount(crossbowBase): api key used to connect to CKAN - CKAN_url: string (default: "http://128.219.185.145:5000") CKAN url - user_agent: id used to track activity in logs (default: "crossbow") - user_agent: string (default: "crossbow") id used to track activity in logs methods: - list_packages() Loading Loading @@ -54,8 +55,8 @@ class crossbowMount(crossbowBase): upload a local resource to an existing package resource is copied to CROSSBOW_NFS/package/filename - edit_resource(package,resource,new_name=None,new_description=None) edit the name or description for an existing resource - edit_resource_description(package,resource,new_description=None) edit the description for an existing resource - get_resource_path(package,resource) return the path to a resource on the local NFS mount Loading tests/test_crossbow.py +9 −5 Original line number Diff line number Diff line from crossbow.crossbow import crossbowMount, crossbowGlobus from crossbow.crossbowMount import crossbowMount from crossbow.crossbowGlobus import crossbowGlobus from ckanapi import RemoteCKAN import os Loading Loading @@ -73,16 +74,17 @@ def test_get_resource_details(): def test_upload_resource(): cbowMount.upload_resource( "nosetests1","myresource3","./testfile2.dcd",description="myresource3") "nosetests1","./testfile2.dcd",description="myresource3") metadata = ckan.action.package_show(id="nosetests1") resources = [resource['name'] for resource in metadata['resources']] resource_urls = [resource['url'] for resource in metadata['resources']] assert "myresource3" in resources assert "testfile2.dcd" in resources assert "file://CROSSBOW_NFS/nosetests1/testfile2.dcd" in resource_urls assert os.path.isfile('/data/nosetests1/testfile2.dcd') def test_edit_resource(): cbowMount.edit_resource("nosetests1","myresource1",new_description="myresource1b") def test_edit_resource_description(): cbowMount.edit_resource_description("nosetests1","myresource1", new_description="myresource1b") pkg_metadata = ckan.action.package_show(id="nosetests1") rsc_metadata = [metadata for metadata in pkg_metadata['resources'] \ if metadata['name']=="myresource1"][0] Loading Loading @@ -114,6 +116,8 @@ def teardown_module(): os.remove('/data/nosetests1/testfile.csv') if os.path.isfile('/data/nosetests1/testfile.dcd'): os.remove('/data/nosetests1/testfile.dcd') if os.path.isfile('/data/nosetests1/testfile2.dcd'): os.remove('/data/nosetests1/testfile2.dcd') if os.path.isfile('testfile.csv'): os.remove('testfile.csv') if os.path.isfile('testfile2.dcd'): Loading Loading
crossbow/crossbowBase.py +2 −6 Original line number Diff line number Diff line Loading @@ -187,17 +187,15 @@ class crossbowBase(object): return rsc_metadata def edit_resource(self,package,resource,new_name=None,new_description=None): def edit_resource_description(self,package,resource,new_description=None): ''' edit the name or description for an existing resource edit the description for an existing resource parameters: - package: string name of package - resource: string name of resource - new_name: string (optional) new name for resource - new_description: string (optional) new description for resource ''' Loading @@ -207,8 +205,6 @@ class crossbowBase(object): if metadata['name']==resource][0] #update metadata with new edits if new_name: rsc_metadata['name'] = new_name if new_description: rsc_metadata['description'] = new_description Loading
crossbow/crossbowGlobus.py +60 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,66 @@ class crossbowGlobus(crossbowBase): ''' oak ridge national labs cross-platform big-data operational workflow this version is for file transfers through Globus nonstandard Python package requirements: - globus_sdk - ckanapi parameters: - api_key: string api key used to connect to CKAN - CKAN_url: string (default: "http://128.219.185.145:5000") CKAN url - user_agent: string (default: "crossbow") id used to track activity in logs - token_file: string (default: "refresh-tokens.json") local file to save refresh tokens for Globus methods: - list_packages() returns all packages (datasets) available on CKAN - get_package_details(package) prints and returns details for a specific package - create_package(package,owner_org,title=None,description=None,author=None, author_email=None,maintainer=None,maintainer_email=None, version=None,tags=[]) creates a new package (dataset) - edit_package(package,*args,**kwargs) edit an existing package (dataset) - list_resources(package) returns all resources for a particular package - list_dcd_resources(package) returns all .dcd resources for a particular package - list_non_dcd_resources(package) returns all non .dcd resources for a particular package - get_resource_details(package,resource) prints and returns details for a specific resource - upload_resource(package,resource_path,source_endpoint=olcfatlas, description=None) upload a resource at a globus endpoint to an existing package resource is copied to CROSSBOW_NFS/package/filename - edit_resource_description(package,resource,new_description=None) edit the description for an existing resource - download_resource(package,resource,dest_endpoint=olcfatlas, dest_path='/~/') use globus to download the resource to a destination endpoint - delete_resource(package,resource) delete a resource from a package (Note: your api key must belong to a sysadmin or the owner of the resource to delete a resource) - check_task_status(task_id) check on the status of a globus task ''' def __init__(self,api_key,CKAN_url="http://128.219.185.145:5000", Loading
crossbow/crossbowMount.py +4 −3 Original line number Diff line number Diff line Loading @@ -21,7 +21,8 @@ class crossbowMount(crossbowBase): api key used to connect to CKAN - CKAN_url: string (default: "http://128.219.185.145:5000") CKAN url - user_agent: id used to track activity in logs (default: "crossbow") - user_agent: string (default: "crossbow") id used to track activity in logs methods: - list_packages() Loading Loading @@ -54,8 +55,8 @@ class crossbowMount(crossbowBase): upload a local resource to an existing package resource is copied to CROSSBOW_NFS/package/filename - edit_resource(package,resource,new_name=None,new_description=None) edit the name or description for an existing resource - edit_resource_description(package,resource,new_description=None) edit the description for an existing resource - get_resource_path(package,resource) return the path to a resource on the local NFS mount Loading
tests/test_crossbow.py +9 −5 Original line number Diff line number Diff line from crossbow.crossbow import crossbowMount, crossbowGlobus from crossbow.crossbowMount import crossbowMount from crossbow.crossbowGlobus import crossbowGlobus from ckanapi import RemoteCKAN import os Loading Loading @@ -73,16 +74,17 @@ def test_get_resource_details(): def test_upload_resource(): cbowMount.upload_resource( "nosetests1","myresource3","./testfile2.dcd",description="myresource3") "nosetests1","./testfile2.dcd",description="myresource3") metadata = ckan.action.package_show(id="nosetests1") resources = [resource['name'] for resource in metadata['resources']] resource_urls = [resource['url'] for resource in metadata['resources']] assert "myresource3" in resources assert "testfile2.dcd" in resources assert "file://CROSSBOW_NFS/nosetests1/testfile2.dcd" in resource_urls assert os.path.isfile('/data/nosetests1/testfile2.dcd') def test_edit_resource(): cbowMount.edit_resource("nosetests1","myresource1",new_description="myresource1b") def test_edit_resource_description(): cbowMount.edit_resource_description("nosetests1","myresource1", new_description="myresource1b") pkg_metadata = ckan.action.package_show(id="nosetests1") rsc_metadata = [metadata for metadata in pkg_metadata['resources'] \ if metadata['name']=="myresource1"][0] Loading Loading @@ -114,6 +116,8 @@ def teardown_module(): os.remove('/data/nosetests1/testfile.csv') if os.path.isfile('/data/nosetests1/testfile.dcd'): os.remove('/data/nosetests1/testfile.dcd') if os.path.isfile('/data/nosetests1/testfile2.dcd'): os.remove('/data/nosetests1/testfile2.dcd') if os.path.isfile('testfile.csv'): os.remove('testfile.csv') if os.path.isfile('testfile2.dcd'): Loading