[Feature]: Sync facade + DIRAC migration adapter spike
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 38/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Tranquilla
- Stack tecnologico
- python
- Ambito
- backend, cli, documentation, testing
Direzione di ricerca
Inizia leggendo gli async interCEde protocols e IC-ADR-001, quindi esamina le DIRAC consumer conventions e la IC-ADR-003 credential configuration indicata nell’issue. Definisci il lifetime della sync facade, documenta il DIRAC-to-interCEde mapping completo e usa lo Slurm stack per eseguire submit, status, fetch e kill tramite la debug CLI in CI.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
User Story
As a DIRAC maintainer during the transition,
I want a synchronous facade over the async interCEde contract and a documented mapping from the
DIRAC CE conventions,
So that DIRAC's SiteDirector/PushJobAgent/RemoteRunner can adopt interCEde backends before the
DiracX tasks exist, without a hand-maintained parallel sync API.
Feature Description
- Sync facade (interCEde, Tier B): run-to-completion wrapper over the async protocols, usable
only outside an event loop; generated/thin, never a second hand-written contract (IC-ADR-001
Open Issues). Decide its lifetime (transition-only vs kept). - Migration mapping doc (interCEde docs; adapter code belongs in DIRAC): the translation
table from the effective DIRAC contract to interCEde —
"<ref>:::<stamp>"↔JobHandle;PilotStampDict↔Submission.handles;S_OK/S_ERROR+
load-bearing keys (Value,CEInfoDict,PilotStampDict,ExecutableToKeep) ↔ typed
results/exceptions;available()slot math ↔ caller policy overLoadReporter.counts()+
CSMaxTotalJobs/MaxWaitingJobs;Tag: Token↔ IC-ADR-003 credential config; CS
ParametersDictkeys ↔ typed backend config (registry request). - Spike: a
dirac-admin-debug-ce-equivalent script driving an interCEde backend through the
facade (submit → status → fetch → kill) — the smallest end-to-end proof a DIRAC-side adapter is
writable.
Definition of Done
- Sync facade shipped + tested (asserts refusal inside a running loop)
- Mapping doc covers every load-bearing DIRAC convention found in the consumer analysis
- Debug-CLI spike drives a real backend (Slurm stack) through the facade in CI
- Facade lifetime decision recorded
Alternatives Considered
- Parallel hand-written sync protocol — re-creates the two-surface drift the ADR indicts; rejected.
- Putting the S_OK/S_ERROR adapter inside interCEde — DIRAC vocabulary doesn't belong in a
WMS-agnostic library; only the facade (sync-over-async) is interCEde's.
Additional Context
Deferred consumers to keep in mind while writing the mapping: PushJobAgent
(outputs=["/"] → OutputSpec "everything"), RemoteRunner (same lifecycle), WMSUtilities
(killPilotsInQueues bulk kill).
- 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
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di DIRACGrid/intercede
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 28/100
-
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 25/100
-
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
Tutte le issue di DIRACGrid/intercede
Issue simili
-
documentation help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 90/100
simonw/sqlite-utils#872 ·
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100