mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-30 19:46:15 +00:00
Chaos scenarios run four at a time under local CI, but every one of them claimed the container names fips-node-nNN and wrote its generated configs and compose file to the same generated-configs/sim directory. Container names are global in Docker and are not scoped by the compose project, so concurrent scenarios collided on both, and a scenario could start containers from a compose file another had overwritten. Thread the existing FIPS_CI_NAME_SUFFIX into the simulation. run_chaos narrows the run-wide suffix to the scenario, and the sim reads it once when the topology is built, applying it to the container names and to the config directory basename. The compose template renders the name through the topology accessor instead of duplicating the literal, so one expression produces every chaos container name. The suffix is empty when the variable is unset, so a bare chaos.sh run and the hosted CI jobs render byte-identical names and paths. Verified by rendering every scenario's compose file before and after with the variable unset and diffing.
18 lines
622 B
Python
18 lines
622 B
Python
"""Scoping suffix for names that live in a global namespace."""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
|
|
|
|
def name_suffix() -> str:
|
|
"""Return the suffix appended to globally-scoped names.
|
|
|
|
Docker container names and the generated-config directory are shared
|
|
across every simulation running on the host, so the harness exports
|
|
``FIPS_CI_NAME_SUFFIX`` to keep concurrent runs and concurrent
|
|
scenarios apart. The suffix is empty when the variable is unset, so a
|
|
bare ``chaos.sh`` run renders exactly the same names as it always has.
|
|
"""
|
|
return os.environ.get("FIPS_CI_NAME_SUFFIX", "")
|