cli.administration.inventory.validate package¶
Submodules¶
cli.administration.inventory.validate.applications module¶
Application-block validation: host_vars keys vs role contract.
- cli.administration.inventory.validate.applications.compare_application_keys(applications, application_defaults, source, variants=None)¶
Variants.yml is part of the role contract: a variant overlay may legitimately introduce service-keys absent from meta/services.yml (e.g. roles/web-opt-rdr-www declares services.dashboard only in meta/variants.yml). Widen the allow-set to defaults ∪ union(variant overlays) so host_vars baked by matrix-deploy from variants.yml aren’t flagged as “Missing default”.
cli.administration.inventory.validate.hosts module¶
Host-group validation: inventory all.children keys vs application IDs.
- cli.administration.inventory.validate.hosts.validate_host_keys(app_ids, inv_dir) list[str]¶
cli.administration.inventory.validate.keys module¶
Dotted-path recursive key extraction.
- cli.administration.inventory.validate.keys.recursive_keys(d, prefix: str = '') set[str]¶
Return every dotted key path reachable from a nested mapping.
cli.administration.inventory.validate.loaders module¶
Inventory file I/O — YAML parsing with vault stripping + directory scans.
- cli.administration.inventory.validate.loaders.load_inventory_files(inv_dir) dict[str, dict]¶
Walk the inventory directory and collect every
applications:block keyed by its source file path.
- cli.administration.inventory.validate.loaders.load_yaml_file(path)¶
Parse a YAML file, replacing
!vaultscalars with a placeholder.The cache’s path-keyed loader is bypassed on purpose — the caller mutates content per call, so each parse is intentionally fresh.
cli.administration.inventory.validate.users module¶
User-block validation: inventory user keys vs declared user defaults.
- cli.administration.inventory.validate.users.compare_user_keys(users, user_defaults, source) list[str]¶
Module contents¶
Public API of the inventory validator.
Split by concern (DRY/SPOT/KISS):
- keys: dotted-path key extraction
- loaders: YAML parsing + inventory directory scans
- applications: applications-vs-defaults+variants validation
- users: user-vs-defaults validation
- hosts: all.children host-group validation
- __main__: argparse + orchestration
- cli.administration.inventory.validate.compare_application_keys(applications, application_defaults, source, variants=None)¶
Variants.yml is part of the role contract: a variant overlay may legitimately introduce service-keys absent from meta/services.yml (e.g. roles/web-opt-rdr-www declares services.dashboard only in meta/variants.yml). Widen the allow-set to defaults ∪ union(variant overlays) so host_vars baked by matrix-deploy from variants.yml aren’t flagged as “Missing default”.
- cli.administration.inventory.validate.compare_user_keys(users, user_defaults, source) list[str]¶
- cli.administration.inventory.validate.load_inventory_files(inv_dir) dict[str, dict]¶
Walk the inventory directory and collect every
applications:block keyed by its source file path.
- cli.administration.inventory.validate.load_yaml_file(path)¶
Parse a YAML file, replacing
!vaultscalars with a placeholder.The cache’s path-keyed loader is bypassed on purpose — the caller mutates content per call, so each parse is intentionally fresh.
- cli.administration.inventory.validate.main() None¶
- cli.administration.inventory.validate.recursive_keys(d, prefix: str = '') set[str]¶
Return every dotted key path reachable from a nested mapping.
- cli.administration.inventory.validate.validate_host_keys(app_ids, inv_dir) list[str]¶