Commit a2330dd5 authored by Gao, Shang's avatar Gao, Shang
Browse files

updated comments and tests to match new architecture

parent 506d1d47
Loading
Loading
Loading
Loading

.gitignore

0 → 100644
+1 −0
Original line number Diff line number Diff line
refresh-tokens.json
+2 −6
Original line number Diff line number Diff line
@@ -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
        '''
@@ -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

+60 −0
Original line number Diff line number Diff line
@@ -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",
+4 −3
Original line number Diff line number Diff line
@@ -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()
@@ -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
+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

@@ -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]
@@ -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'):