[Feature]: Scheduler protocol + Slurm scheduler + generic BatchBackend

Aperta
#20 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
25/100
Tipo di issue
Funzionalità
Chiarezza
Abbastanza chiara
Stato di attività
Tranquilla
Stack tecnologico
python

Direzione di ricerca

Inizia da IC-ADR-001 §3 e dai requisiti del protocollo Scheduler, quindi segui il _slurm module pianificato, la registrazione di Slurm tramite intercede.schedulers e le interfacce generiche di BatchBackend. Esegui prima la suite di contract di integrazione sugli stack ssh-slurm e local-slurm. Il lavoro è completato quando entrambi gli stack superano i controlli submit, status, fetch, kill, fetch-twice e partial-failure e sono verificati l’invio di array e il comportamento indicato per l’output e la segnalazione del carico.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

User Story

As the WMS consumer,
I want BatchBackend(SSHTransport, Slurm) and BatchBackend(LocalTransport, Slurm) working
end-to-end against the containerised Slurm stacks,
So that the N+M composition promise of IC-ADR-001 §3 is proven on the first real scheduler.

Feature Description

  • Scheduler protocol finalised: submit_cmd(spec), parse_status(raw), kill_cmd(ids),
    stages_own_files flag (+ stage_inputs/collect_outputs hooks where needed). Evaluate the
    ADR's open question — promote staging to a Stager collaborator — and record the outcome.
  • _slurm internal module (Tier C): sbatch script/option generation from SubmissionSpec
    (incl. count--array for identical fan-out), squeue/sacct parsing, native-state →
    JobStatus map (port DIRAC's mapping: PENDING/SUSPENDED/CONFIGURING→waiting, COMPLETED→done,
    CANCELLED/PREEMPTED→aborted…).
  • Slurm scheduler consuming _slurm; registered via intercede.schedulers.
  • Generic BatchBackend (Tier B): satisfies JobBackend + OutputRetriever
    (destructive=False) + Cancellable + Purgeable + LoadReporter; sandbox staging via
    Transport.put/get when stages_own_files is false; workdir layout per job; JobHandle
    carries host/workdir routing (replaces DIRAC's ssh<batch>:// ref encoding).
  • Phase 2 wiring: the integration contract suite (submit → status → fetch → kill, fetch-twice,
    partial-failure maps) runs against ssh-slurm and local-slurm stacks via markers.

Definition of Done

  • Contract suite green on ssh-slurm and local-slurm stacks in CI
  • count > 1 submits via a single --array (asserted, not N submits)
  • fetch_output streams an arbitrary output sandbox (not just stdout/stderr) with bounded
    materialisation (size/count/timeout/path-containment)
  • LoadReporter.counts() from squeue; unknown ids → JobStatus.UNKNOWN

Alternatives Considered

  • Per-combination classes (SSHSlurmBackend, LocalSlurmBackend…) — N×M explosion; rejected.
  • Porting DIRAC's remote-executed SLURM.py driver — requires remote python; dropped (see
    issue-10).

Additional Context

This issue is the template for every further scheduler.

Lingua principale
Python
Stelle
3
Fork
3
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di DIRACGrid/intercede

Tutte le issue di DIRACGrid/intercede

Issue simili

Altre issue su Python

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.