Skip to content

[Feature]: HTCondor scheduler (shared _htcondor core) for BatchBackend #21

Description

@aldbr

User Story

As the WMS consumer,
I want BatchBackend(SSHTransport|LocalTransport, HTCondorScheduler) working against a real
schedd,
So that the second scheduler proves the Scheduler protocol generalises, and the _htcondor core
is ready for reuse by the HTCondor-CE backend.

Feature Description

  • _htcondor internal module (Tier C, shared with #): submit-description builder
    from SubmissionSpec (incl. queue N for count fan-out, should_transfer_files/
    transfer_output_files from OutputSpec), condor_q/condor_history ClassAd/JSON parsing,
    native state map incl. hold codes/subcodes (port DIRAC's STATES_MAP/HOLD_REASON_SUBCODE).
  • HTCondorScheduler: drives a schedd via the transport (CLI condor_submit/condor_q/
    condor_rm over Transport.run); stages_own_files=True — HTCondor declares file transfer in
    the submit description (the cross-scheduler staging axis from IC-ADR-001 §3).
  • Phase 2 wiring: contract suite against the htcondor stack's plain-schedd path
    (markers scheduler and htcondor); ssh-condor stack optional here, may land later.

Definition of Done

  • Contract suite green against the htcondor stack (plain schedd)
  • count > 1 submits as one queue N (asserted)
  • Output sandbox via native file transfer, honouring OutputSpec at submit time
  • State mapping unit-tested against canned condor_q/condor_history output (port DIRAC's
    test fixtures)
  • _htcondor has no scheduler-class dependencies (importable by the CE backend, #)

Alternatives Considered

  • Python htcondor bindings instead of CLI-over-transport — bindings can't run over SSH to a
    remote schedd; CLI-over-transport keeps the transport axis orthogonal. Bindings remain an option
    for the monolithic CE backend (issue-15), where the schedd is reached natively.

Related Issues

Additional Context

IC-ADR-001 §3 "Shared batch-system knowledge": scheduler adapter and monolithic CE share the
_htcondor functions, never a subtype.

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