Skip to content

[8.0] Interpret outputPath with LFN: prefix as an absolute one - #8603

Open
atsareg wants to merge 9 commits into
DIRACGrid:rel-v8r0from
atsareg:fix-outputpath
Open

[8.0] Interpret outputPath with LFN: prefix as an absolute one#8603
atsareg wants to merge 9 commits into
DIRACGrid:rel-v8r0from
atsareg:fix-outputpath

Conversation

@atsareg

@atsareg atsareg commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

This PR allows to define absolute outputPath by specifying it with the LFN: prefix.
It also allows using wild cards in outputData file names specified as LFNs

BEGINRELEASENOTES

*WorkloadManagement
NEW: JobWrapper - interpret outputPath with LFN: prefix as an absolute one
NEW: JobWrapper - allow wild cards in output LFNs

For examples look into release.notes

ENDRELEASENOTES

Comment thread src/DIRAC/WorkloadManagementSystem/JobWrapper/JobWrapper.py Outdated
@arrabito

Copy link
Copy Markdown
Contributor

Thank you. All seems fine to me.

@fstagni fstagni left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@aldbr has added a lot of tests for JobWrapper in https://github.com/DIRACGrid/DIRAC/blob/integration/src/DIRAC/WorkloadManagementSystem/JobWrapper/test/Test_JobWrapper.py.

Can you see if (some of) those can be used here? I am always somewhat scared of changing the JobWrapper.

Comment thread src/DIRAC/WorkloadManagementSystem/JobWrapper/JobWrapper.py Outdated
Comment on lines +954 to +964
# Check whether the list of LFNs has globbable patterns
globbedLfnList = []
for lfn in lfnList:
lfnPath = os.path.dirname(lfn)
lfnLocal = os.path.basename(lfn)
globbedLfnList += [os.path.join(lfnPath, gLfn) for gLfn in List.uniqueElements(getGlobbedFiles(lfnLocal))]
if globbedLfnList != lfnList and globbedLfnList:
self.log.info("Found a pattern in the output data LFN list, LFNs to upload are:", ", ".join(globbedLfnList))
lfnList = globbedLfnList

# Check whether the list of outputData has a globbable pattern

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There is a code duplication between these inserted lines and those that follow, care to refactor for simplicity?

Comment on lines +1126 to +1129
# If output path is given with the LFN: prefix, take it as an absolute path
elif outputPath.startswith("LFN:"):
outputPath = outputPath[4:]
basePath = ""

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shouldn't this block be before the previous 2 lines? For the case when outputPath == "LFN:/some/where/some/thing.xyz"

@atsareg

atsareg commented Jun 15, 2026

Copy link
Copy Markdown
Contributor Author

Can you see if (some of) those can be used here? I am always somewhat scared of changing the JobWrapper.

Yes, there are many tests to JobWrapper added to the integration/9.0 . In 8.0 there are just few. Will see if I can add something here

Comment thread docs/source/UserGuide/GettingStarted/UserJobs/JDLReference/index.rst Outdated
- file names with wild cards; same after the file names expansion;
- file names in a form "LFN:/vo/full/destination/path/file.name"; in this case the file will be uploaded
to the specified LFN path without taking into account the OutputPath. Note that file.name here can be also
specified with wild cards.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Give an example of a wild card.

Comment thread docs/source/UserGuide/GettingStarted/UserJobs/JDLReference/index.rst Outdated
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

Successfully merging this pull request may close these issues.

3 participants