Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change irods mountpoint to mirror actual logical path of file #23

Open
theferrit32 opened this issue May 31, 2018 · 3 comments
Open

Change irods mountpoint to mirror actual logical path of file #23

theferrit32 opened this issue May 31, 2018 · 3 comments

Comments

@theferrit32
Copy link
Member

theferrit32 commented May 31, 2018

For example if I have file /prodzone/home/theferrit32/file.csv if a user wants to use it in a workflow in a workspace, currently it is made available at /renci/irods/home/theferrit32/file.csv. This is not very intuitive, and though it could be explained in documentation, it could also be changed to be more intuitive.

One possibility is to set the mountpoint to be the zone name so the file would be available in the container at the unix file path /prodzone/home/theferrit32/file.csv. This is the most intuitive, however could create problems if someone names an iRODS zone lib and then that volume gets mounted over top of /lib in the container. It's not that this sort of edge case is dangerous to the platform, but it is unlikely that the workflow would be able to execute.

Another possibility is to have an unused path prepended, to arrive at something like:
/irods/prodzone/home/theferrit32/file.csv

And another is to use a custom protocol type, which might also be used in other places at some point in the near future:
irods:///prodzone/home/theferrit32/file.csv
This one would require CWL extensions to define a new type and handler for this, because it is not just a File type.

@mr-c
Copy link

mr-c commented May 31, 2018

In CWL,File.location can be any URI known to the engine, not just file:///, http://, https://.
So the following is a valid CWL File object, no need to create a new type:

class: File
location: irods:///prodzone/home/theferrit32/file.csv

@theferrit32
Copy link
Member Author

@mr-c Interesting, thanks for the clarification on that. As part of the work on BDBag fetching, we plan to have a python library with a straightforward way to authenticate and fetch irods resources, so that could be plugged into the cwltool/toil libraries.

It looks like I could subclass the Fetcher class to provide handling of irods:// URIs, and pass in a fetcher_constructor to use that class instead of the DefaultFetcher.

constructor:
https://github.com/common-workflow-language/cwltool/blob/83541ecc7c1b8497e0cdbec021a5449f14678da4/cwltool/main.py#L331

fetcher handling, to be extended in subclass:
https://github.com/common-workflow-language/schema_salad/blob/18294270c20c640c7aba7a34d2efe84718f41008/schema_salad/ref_resolver.py#L138

Does this seem like the appropriate way to add this functionality, or do you have any additional pointers on the best way to extend the resource fetching?

@mr-c
Copy link

mr-c commented Jun 1, 2018

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants