Ticket 7286 - Consolidate Prolog/Epilog interfaces into a new stackable plugin interface
Summary: Consolidate Prolog/Epilog interfaces into a new stackable plugin interface
Status: RESOLVED FIXED
Alias: None
Product: Slurm
Classification: Unclassified
Component: Other (show other tickets)
Version: 20.02.x
Hardware: Linux Linux
: --- 5 - Enhancement
Assignee: Tim Wickberg
QA Contact:
URL:
Depends on:
Blocks:
 
Reported: 2019-06-25 08:11 MDT by Tim Wickberg
Modified: 2020-04-22 23:22 MDT (History)
3 users (show)

See Also:
Site: Universitat Dresden (Germany)
Alineos Sites: ---
Atos/Eviden Sites: ---
Confidential Site: ---
Coreweave sites: ---
Cray Sites: ---
DS9 clusters: ---
HPCnow Sites: ---
HPE Sites: ---
IBM Sites: ---
NOAA SIte: ---
OCF Sites: ---
Recursion Pharma Sites: ---
SFW Sites: ---
SNIC sites: ---
Linux Distro: ---
Machine Name:
CLE Version:
Version Fixed: 20.02.0
Target Release: 20.02
DevPrio: 1 - Paid
Emory-Cloud Sites: ---


Attachments

Note You need to log in before you can comment on or make changes to this ticket.
Description Tim Wickberg 2019-06-25 08:11:41 MDT
This is a placeholder for work around introducing a new stackable plugin interface responsible for running what exist today as the Prolog / Epilog / PrologSlurmctld / EpilogSlurmctld / TaskProlog / TaskEpilog script interfaces.

Those existing interfaces would be served by a "script" plugin; additional plugins could be stacked, and would each be provided with access to the appropriate struct with the pertinent job details.

Alongside this, the work will require some cleanup and unification of the existing mix of structs, and result in a wider range of values exposed than are currently accessible as environment variable to the various script interfaces.
Comment 1 Tim Wickberg 2019-11-25 22:18:05 MST
First commit in this series. I've decided to name these "PrEpPlugins" as a somewhat-coherent abbreviation of "Prolog/Epilog/PrologSlurmctld/EpilogSlurmctldPlugins".

I'll have some additional commits to build the prep/script plugin, and move the existing behavior for those individual options, behind that interface.  

commit d18fd7841fa24829e06490d0c2bae2ca09f41b73
Author:     Tim Wickberg <tim@schedmd.com>
AuthorDate: Thu Oct 3 12:21:33 2019 -0600
Commit:     Tim Wickberg <tim@schedmd.com>
CommitDate: Thu Oct 3 22:34:07 2019 -0600

    Add PrEpParameters and PrEpPlugins to slurm.conf.
    
    PrEp is short for "Prolog / Epilog".
Comment 2 Tim Wickberg 2020-04-22 23:22:07 MDT
My apologies for not updating this ticket sooner, we lost track of getting the documentation done.

This API is included in the 20.02 release, and we thank Dresden for their sponsorship of this work.

After some internal deliberation, the best name we could come up with for this was "PrEpPlugins" - short for Prolog/EpilogPlugins. The existing Prolog / Epilog / PrologSlurmctld / EpilogSlurmctld script handling code was all relocated to the first of these new "prep" plugins as "prep/script", and this plugin is enabled by default if the option has not been specified.

As should be clear from the name, this interface is designed to stack, and allow for multiple C plugins to be developed with direct access to the underlying job record (in the slurmctld) or job_env and job_cred details (in the slurmd).

I do plan to evolve this further in future releases once we have had a chance to re-unify the task launch code. There is a lot of cleanup work being done on the master branch (which will become 20.11 this fall) that needs to complete before that can proceed, but that does not stop this from being a useful API today.

Initial documentation has been pushed now as well, and can be seen on the website at https://slurm.schedmd.com/prep_plugins.html .

I'm marking this ticket as resolved, and ask if there are further followup questions that they be submitted as new separate tickets.

cheers,
- Tim