DIRACGrid / DIRACGrid/intercede

[Feature]: Sync facade + DIRAC migration adapter spike

Open
#24 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Python
Stars
3
Forks
3
PR merge metrics
No merged PRs in 30d

Description

## 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 —
`":::"` ↔ `JobHandle`; `PilotStampDict` ↔ `Submission.handles`; `S_OK/S_ERROR` +
load-bearing keys (`Value`, `CEInfoDict`, `PilotStampDict`, `ExecutableToKeep`) ↔ typed
results/exceptions; `available()` slot math ↔ caller policy over `LoadReporter.counts()` +
CS `MaxTotalJobs`/`MaxWaitingJobs`; `Tag: Token` ↔ IC-ADR-003 credential config; CS
`ParametersDict` keys ↔ 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).

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.