Skip to content

Conversation

jannisspeer
Copy link

No description provided.

jannisspeer and others added 4 commits May 20, 2025 15:12
* Add container universe support

This allows the executor to specify an HTCondor universe, and a container image when the
universe is set to container/docker. These values are passed to the executor via the
executor's CLI, e.g.:
`snakemake --executor htcondor --htcondor-universe container --htcondor-container-image docker://foo:latest

I chose to add these to the CLI instead of to the job's resources dict, because I think these will likely
be applied to all jobs in a workflow.

* Add job wrappers and HTCondor ftransfers when running w/o shared FS

This commit adds a new CLI to specify a job wrapper (i.e. an HTCondor executable).
When provided, the script should pass all of the executor's generated args to
the snakemake executable, i.e. it should contain something like:
```
python -m snakemake $@
```

This commit also takes a first pass at allowing HTCondor to manage its own file
transfers, and makes use of the `can_transfer_local_files` executor interface
introduced in PRs snakemake-interface-executor-plugins:67 and snakemake:2921.

* Cleanup whitespace

* Add creds and forgotten SHOULD_TRANFER_FILES attrs

* Transfer Snakefile when no shared FS

* Name jobs in queue according to snakemake job.name-job.jobid

* Add traceback for debugging failed submissions

* Move submit requests from CLI to resources

* Allow custom classads

* Update documentation and build toml

* Update further docs with an example of non-shared fs usage

* Upgrade to the V2 bindings to resolve credentials error

These changes have been tested, but not rigorously, by a user at
CHTC.

* Move creds call into try block

---------

Co-authored-by: Justin Hiemstra <[email protected]>
Co-authored-by: Justin Hiemstra <[email protected]>
@jannisspeer
Copy link
Author

I think there is a syntax error in the code creating the custom ClassAds:

for key in job.resources.keys():
            if key.startswith("classad_"):
                classad_key = key.removeprefix("classad_") + "+"
                submit_dict[classad_key] = job.resources.get(key)

Instead it should be "+" + classad_key = key.removeprefix("classad_") to create +MyClassAd from classad_MyClassAd specified in the job's resources.

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.

1 participant