Hacktoberfest 2026:维护者为十月标记出来的 issue,仍然开放、适合新手。 浏览 Hacktoberfest issue

[Feature]: ARCBackend — submit + status over ARC 7 REST, token auth

未关闭
#22 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

还没有人认领这个 Issue。

评估

难度
5/5
预计耗时
一周以上
新手友好度
28/100
Issue 类型
功能
描述清晰度
基本清楚
活跃度
冷清
技术栈
python

调研方向

先阅读 DIRAC 的 AREXComputingElement.py 和现有的 contract interfaces,然后检查 arc-slurm stack 及其 manifest。该 issue 除了 config/proxy/ 和 remote arc marker 外,没有指出实现文件或测试文件,因此请在编码前梳理这些集成点。列出的 token/proxy contract、bulk、state、retrieval、delegation 和 registration 检查全部通过后,即表示完成。

由索引模型根据 Issue 内容生成。

描述

User Story

As the WMS consumer,
I want an ARCBackend that submits and monitors jobs on an ARC 7 CE via REST with token auth,
So that the primary grid-CE path (DIRAC's AREX CE) exists on the new contract, validated against
the arc-slurm stack.

Feature Description

Essential half of the AREX port (IC-ADR-001 migration map):

  • ARCBackend: implements Submitter + Monitor against the ARC REST
    API (/arex/rest/1.0) using pyarcrest (evaluate fitness; fall back to httpx against the REST
    spec if it can't do async/bulk cleanly — record the choice).
  • Job description generation from SubmissionSpec (XRSL or ADL — pick one, document why;
    DIRAC builds XRSL), incl. input-sandbox declaration and queue targeting.
  • Bulk semantics: ARC REST supports multi-job operations — submit count copies and poll many
    ids per call; per-id failures ride the outcome maps.
  • State normalisation: ARC state map → JobStatus (port DIRAC's STATES_MAP, incl. the
    auto-kill-on-Hold question — surface as policy, don't hide it in the backend).
  • Token auth per IC-ADR-003: bearer header, audience exposure. Proxy/delegation
    is issue-14.
  • OutputRetriever (destructive=False): list the ARC session dir, stream every member into
    dest file-by-file, return the JobOutput manifest (.stdout/.stderr/.files/.log).
    Bounded materialisation enforced inline: byte ceiling mid-stream, file-count ceiling,
    per-transfer timeout, path containment (../absolute members rejected) — IC-ADR-001 §4.
  • Cancellable.kill / Purgeable.purge (DIRAC killJob/cleanJob): bulk, per-id outcomes.
  • LoadReporter.counts() from the CE info endpoint.
  • SupportsLiveDiagnostics.diagnostics(): the diagnose/errors endpoint — the one genuinely
    independent, non-destructive pre-completion fetch.
  • Proxy/delegation auth: create delegation (CSR → sign with the
    proxy chain → upload), renew, AlwaysIncludeProxy parity where tokens+proxy coexist. Add the
    config/proxy/ configuration axis to the arc-slurm stack (ADR-002 §7) to test it.
  • Fetch-twice regression test proving re-fetchability (destructive=False) — the counterpart
    of HTCondor's one-shot test.
  • Phase 2 wiring: contract suite (submit/status subset) against the arc-slurm stack
    (markers remote and arc).

Definition of Done

  • Full contract suite (all capabilities) green against arc-slurm, both token and proxy
    configs
  • count > 1 submission bundles one Submission with per-copy failure reporting
  • Unknown/expired ids → JobStatus.UNKNOWN (never dropped)
  • State map unit-tested; Hold handling decided and documented
  • Fetch-twice test green; containment/ceiling tests green (hostile filenames, oversized
    output)
  • Delegation renewal covered by a test (short-lived test-CA proxy)
  • arc-slurm stack gains config/proxy/; manifest updated
  • Registered via intercede.backends as arc

Alternatives Considered

  • Wrapping the arc CLI tools — spawns processes, brittle parsing; REST is first-class in ARC 7
    and DIRAC's AREX already proves it.

Related Issues

Additional Context

ARC floor is 7.x (IC-ADR-002 §8). DIRAC reference: `AREXComputingElement.py

主要语言
Python
星标
3
派生
3
PR 合并指标
30 天内没有已合并 PR

贡献指南

打开贡献指南

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

DIRACGrid/intercede 的其他 Issue

查看 DIRACGrid/intercede 的全部 Issue

相似的 Issue

更多 Python Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。