utils.cache.users package

Submodules

utils.cache.users.placeholders module

Eager placeholder substitution for cached user dicts.

Ansible 2.19’s TrustedAsTemplate gate leaves untagged Jinja silently unrendered, so values like lastname: “{{ ORGANIZATION }}” reach downstream tasks as their literal string. These helpers substitute a small set of group-vars scalars into the merged users dict before the templar render pass, so consumers always see resolved values.

Extend _SCALAR_USER_PLACEHOLDERS (or call sites) when new scalar group-vars appear in roles/user-*/meta/users.yml fields like firstname, lastname, or description.

utils.cache.users.placeholders.substitute_primary_domain_placeholder(users: dict[str, Any], variables: dict[str, Any], *, templar: Any) → dict[str, Any]
utils.cache.users.placeholders.substitute_scalar_placeholders(users: dict[str, Any], variables: dict[str, Any], *, templar: Any) → dict[str, Any]

Module contents

User-domain cache: defs, hydration, materialization, merged lookup.

Owns _USERS_DEFAULTS_CACHE and _MERGED_USERS_CACHE. Public API: get_user_defaults, get_merged_users. The Ansible-facing users lookup plugin consumes get_merged_users directly from this module (from utils.cache.users import get_merged_users).

utils.cache.users.get_merged_users(*, variables: dict[str, Any] | None = None, roles_dir: str | PathLike[str] | None = None, templar: Any = None) → dict[str, Any]
utils.cache.users.get_user_defaults(*, roles_dir: str | PathLike[str] | None = None) → dict[str, Any]