Skip to content

feat(esm_catalog): PR-A1c — HPC storage extension#1511

Open
siligam wants to merge 2 commits into
releasefrom
esm-catalog/pr-a1c-hpc-extension
Open

feat(esm_catalog): PR-A1c — HPC storage extension#1511
siligam wants to merge 2 commits into
releasefrom
esm-catalog/pr-a1c-hpc-extension

Conversation

@siligam

@siligam siligam commented Jul 15, 2026

Copy link
Copy Markdown
Contributor

Part of the esm_catalog decomposition, per the PR-A1a foundation plan. Follows #1504 (A1b core), branches from release.

Adds src/esm_catalog/hpc.py: add_hpc_extension(item, path, machine_config) sets hpc:facility, hpc:system, hpc:storage_tier (item properties) and hpc:storage_type (data asset) from a caller-supplied machine_config dict, plus hpc:last_access from path.stat().st_atime.

No path-pattern matching or filesystem probing — per the plan, the caller already knows which machine it's running on and passes that machine's config section down directly. hpc:state/hpc:recall_time_estimate (subprocess-based dmattr/lfs HSM queries) are dropped per plan.

CollectionContext gets a new optional machine_config field; make_item wires add_hpc_extension in unconditionally (no-op beyond hpc:last_access when machine_config is None, for graceful degradation).

Also adds configs/stac-extensions/hpc/v1.0.0/schema.json (custom extension — no external community schema exists for this one) and tests/test_esm_catalog/test_hpc.py.

Test plan

  • pytest tests/test_esm_catalog — 50 passed
  • New test_hpc.py covers: no-op without config/stat, last_access-only degradation, facility/system/tier population, hot/warm/cold tier mapping, missing asset safety, idempotent URL append, make_item wiring, and schema validation via jsonschema

Adds src/esm_catalog/hpc.py: add_hpc_extension(item, path, machine_config)
sets hpc:facility, hpc:system, hpc:storage_tier (item properties) and
hpc:storage_type (data asset) from a caller-supplied machine_config dict, plus
hpc:last_access from path.stat().st_atime. No path-pattern matching or
filesystem probing — the caller already knows which machine it's running on
and passes that machine's config section down, per the PR-A1a foundation
plan. hpc:state and hpc:recall_time_estimate (subprocess-based dmattr/lfs HSM
queries) are dropped per plan.

CollectionContext gets a new optional machine_config field; make_item wires
add_hpc_extension in unconditionally (no-op without machine_config beyond
last_access, for graceful degradation).

Adds configs/stac-extensions/hpc/v1.0.0/schema.json (custom extension, no
external schema exists) and tests/test_esm_catalog/test_hpc.py.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants