[Feature]: Sync facade + DIRAC migration adapter spike

Open
#24 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
38/100
Issue type
Feature
Clarity
Mostly clear
Activity status
Quiet
Tech stack
python

Research direction

Start by reading the async interCEde protocols and IC-ADR-001, then review the DIRAC consumer conventions and IC-ADR-003 credential configuration named in the issue. Define the sync facade lifetime, document the complete DIRAC-to-interCEde mapping, and use the Slurm stack to exercise submit, status, fetch, and kill through the debug CLI in CI.

Written by the indexing model from the issue text.

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 —
    "<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).

Dominant language
Python
Stars
3
Forks
3
PR merge metrics
No merged PRs in 30d

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from DIRACGrid/intercede

All issues in DIRACGrid/intercede

Similar issues

More Python issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.