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

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions