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

Pluggable LFN2PFN algorithms #570

Closed
bbockelm opened this issue Jan 31, 2018 · 3 comments
Closed

Pluggable LFN2PFN algorithms #570

bbockelm opened this issue Jan 31, 2018 · 3 comments

Comments

@bbockelm
Copy link
Contributor

Previously, we introduced a mechanism to specify the algorithm used for LFN2PFN at the RSE. The options now are default and identity. The default algorithm creates subdirectories based on hashes of the LFN, while identity is the identity function: LFN is used directly.

As new communities come in, each has their own twist on the LFN2PFN mapping. Currently, there's no good way to add community-specific code for the mapping. I propose we:

  • In the Rucio server configuration, provide a module that is loaded on startup which can register additional plugins (mapping the algorithm name to a Python callable).
  • Continue to allow the algorithm to be set per-RSE as an attribute.
  • In the Rucio server configuration, specify the default algorithm to use if not specified as an attribute.

So, Rucio could continue to offer one or two stock algorithms -- but as experiments mature, this can become part of their policies.

@bari12
Copy link
Member

bari12 commented Jan 31, 2018

Fully agree with all Brian wrote 😄(This also hooks in a little bit with the way we import external policies. eventually we should have a better mechanism to import the policies, without the need of them being part of the rucio package - but lets have a separate issue for this)

Just one side note, as I looked at the code recently. For the site2site transfers a different method (construct_surl) is used to build the PFN for a site2site transferred replica. This has to be changed and the method should also inherit the algorithm from the lfn2pfn function of the respective policy.

@bbockelm
Copy link
Contributor Author

bbockelm commented Feb 2, 2018

Ok, I have a work-in-progress branch for this -- will be testing this out for LIGO (where this is most urgent).

bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 4, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 5, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 5, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 5, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 5, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 5, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 6, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 6, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
Additionally adds python client API for retrieving a PFN.
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 8, 2018
bbockelm added a commit that referenced this issue Feb 9, 2018
…fn2pfn

Transfers: Implement pluggable LFN2PFN algorithms. Fixes #570
@bbockelm
Copy link
Contributor Author

Alright, I think this one is good to go!

@bari12 bari12 added this to the 1.15.0 milestone Feb 12, 2018
bbockelm added a commit to bbockelm/rucio that referenced this issue Feb 13, 2018
Outside ATLAS (particularly, for CMS), space tokens are optional at
some SRM endpoints.  Previously, for rucio#574, we fixed the conveyor
to handle empty space tokens.  Additionally, the fix for the client-side
of rucio#575 got mistakenly wrapped up in rucio#570 (pluggable LFN2PFN) and put
into `next`.

This is the missing piece for `master`.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants