Skip to content

[Feature]: Sync facade + DIRAC migration adapter spike #24

Description

@aldbr

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; PilotStampDictSubmission.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).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions