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 !vault scalars 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 !vault scalars 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]