phases
azure_bootstrap.phases
¶
Per-phase guarded execution for multi-stage pipelines.
The point: one phase's bug must not nuke the whole run. run_phase always
returns a :class:PhaseResult — it never re-raises. Callers inspect the
result and decide what (if anything) to do with a failed phase.
Functions:
| Name | Description |
|---|---|
run_phase |
Run |
run_phases |
Run a list of (name, callable) pairs in order, swallowing per-phase |
run_phase
¶
run_phase(name: str, fn: Callable[..., T], *args: Any, namespace: str = 'phase', alert_severity: str | None = 'error', aggregate_counter: str | None = None, **kwargs: Any) -> PhaseResult[T]
Run fn under a try/except. NEVER re-raises.
Counters bumped (best-effort):
- {namespace}.{name}.ok on success
- {namespace}.{name}.failed on exception
- {namespace}.{name}.{aggregate_counter} += len(result) when
aggregate_counter is given AND the result supports len.
Source code in azure_bootstrap/phases/__init__.py
run_phases
¶
run_phases(phases: list[tuple[str, Callable[..., Any]]], *, namespace: str = 'phase', alert_severity: str | None = 'error') -> list[PhaseResult[Any]]
Run a list of (name, callable) pairs in order, swallowing per-phase failures so subsequent phases still execute.