Introduce a new Ansible lookup plugin `domain()` that resolves the primary
domain directly from the `domains` variable using only `application_id`.
Includes comprehensive unit tests covering string, list, dict, and error cases.
https://chatgpt.com/share/6985ef1e-11b8-800f-b231-52523055060b
Rename the certificate planning lookup from cert_plan to cert to better reflect
its role as the canonical certificate resolver.
This change updates:
- lookup plugin filename and error prefixes
- all lookup usages across roles and templates
- unit tests and internal documentation references
- CHANGELOG to reflect the new public lookup name
No functional behavior changed.
https://chatgpt.com/share/6985e838-488c-800f-8786-3269e587c14c
The TLS lookup has been renamed from `tls_resolve` to `tls` to better
reflect its responsibility as a strict TLS state resolver.
This refactor updates all usages across the codebase, including:
- lookup plugins and internal helpers
- roles, vars, tasks, and templates
- tests, stubs, and error messages
- documentation and changelog references
Behavior, lookup API, and semantics remain unchanged.
https://chatgpt.com/share/6985e635-5a94-800f-b794-937e566ee308
Update docker_cards lookup to use the strict positional want-path API when
calling tls_resolve. Adjust unit tests and test stubs accordingly, removing
legacy want= kwargs while keeping behavior unchanged.
https://chatgpt.com/share/6985d642-b40c-800f-9cdf-ed54fc484a92
Reintroduce directories.cache (general/image) in nginx_paths and use named
cache variables consistently in ensure. Update unit tests to validate cache
paths and projections under the new strict positional want-path API, and
adjust the tls_resolve fake to the new call style.
https://chatgpt.com/share/6985d642-b40c-800f-9cdf-ed54fc484a92
Renamed docker-compose and docker-compose-ca roles to sys-svc-compose and sys-svc-compose-ca, updated template includes, handlers, lookups, tests, and variables, and moved compose instances to /opt/compose.
https://chatgpt.com/share/6985ab2c-8344-800f-9e9a-768f562d138d
- Remove dependency on docker_compose variable in compose_ca_inject_cmd lookup
- Resolve compose paths via lookup('docker', ...) consistently
- Simplify lookup by dropping YAML coercion and templating helpers
- Add dedicated unit tests under tests/unit/roles/docker-compose/lookup_plugins
- Update tests to reflect new lookup contract and CA_TRUST validation
https://chatgpt.com/share/6984f2e7-8390-800f-ac7b-938adc3738e3
- compose_f_args no longer reads variables['docker_compose']
- always derives compose file paths from PATH_DOCKER_COMPOSE_INSTANCES via get_docker_paths
- remove YAML coercion and related code paths
- update unit tests to stub get_docker_paths and assert new failure modes
https://chatgpt.com/share/6984dbd9-ce9c-800f-a2c9-72138193f383
- Replace lookup('docker', ..., want='...') with lookup('docker', ..., 'path')
- Allow both top-level keys (directories/files) and dotted paths
- Simplify docker lookup API and reduce lazy dict propagation
- Update unit tests to reflect new lookup semantics
https://chatgpt.com/share/6984ccea-8290-800f-a6d7-ec0e94df95a0
- Simplify docker lookup to accept only application_id and optional dotted path
- Remove env fallback and explicit base path arguments
- Enforce dotted notation for sub-value access (e.g. directories.instance)
- Fail fast on missing PATH_DOCKER_COMPOSE_INSTANCES
- Update unit tests to reflect strict dotted-path behavior
https://chatgpt.com/share/6984ccea-8290-800f-a6d7-ec0e94df95a0
Remove implicit docker_compose variable usage and resolve all docker paths
(files, directories, env) via lookup('docker', application_id).
This prevents scope leakage, centralizes path resolution, and makes docker
context deterministic across roles and handlers.
https://chatgpt.com/share/6984ccea-8290-800f-a6d7-ec0e94df95a0
- Introduce lookup plugin `docker` to resolve docker-compose paths
from application_id with PATH_DOCKER_COMPOSE_INSTANCES fallback
(Ansible vars preferred, environment as fallback)
- Validate and strip inputs for deterministic behavior
- Return resolved paths as a single-item wantlist for safe templating
- Add comprehensive unittest coverage for precedence, validation,
and fallback logic
https://chatgpt.com/share/6984ccea-8290-800f-a6d7-ec0e94df95a0
- Drop compose_run.py and its unit tests
- Call compose.py directly from handlers for `up`
- Restore explicit --force-recreate and --remove-orphans semantics
- Reduce wrapper indirection and hidden behavior
- Make docker compose execution transparent and deterministic
https://chatgpt.com/share/698496f7-7da0-800f-b030-5a90f741a9a6
- Extend database lookup with `id` (e.g. svc-db-postgres, svc-db-mariadb)
- Return empty id when no database type is configured
- Replace dynamic 'svc-db-{{ type }}' constructions with lookup-provided id
- Update docker network templates to rely on lookup database id
- Adjust sys-svc-rdbms to load DB role via lookup id
- Extend unit tests to assert correct id behavior for all cases
This makes DB role resolution explicit, safer, and less error-prone.
https://chatgpt.com/share/6983c6de-c5f8-800f-a5e3-786f90e0ebc1
Expose database.enabled and database.shared via the database lookup plugin.
Use shared flag consistently to determine central DB behavior and surface both
flags even when no database type is configured. Update unit tests to cover the
new fields and verify behavior for dedicated vs. shared databases.
https://chatgpt.com/share/6983bcf6-85bc-800f-a0fc-5684b9078469
- Move get_docker_paths() implementation from filter_plugins to module_utils
to make it reusable by filters and lookup plugins (single source of truth)
- Adapt filter_plugins/get_docker_paths.py to re-export the shared util
- Add new lookup plugin "database" resolving DB settings from applications config
- Fix unit test patching: patch module_utils.docker_paths_utils.get_entity_name
instead of filter module, because imports are now bound at util level
- Add comprehensive unit tests for database lookup covering all helper-variable cases
https://chatgpt.com/share/6983b526-00dc-800f-b3a0-b71e4104d0fc
- Introduce database_consumer_id_passed to avoid fact/vars collisions
- Explicitly pass consumer context into svc-db-postgres via include_role
- Strengthen context assertion in postgres init tasks
- Move once-flag include to the beginning of postgres core tasks
- Make POSTGRES_EXEC_SHELL non-interactive by injecting PGPASSWORD
- Improve test coverage to detect facts overridden by include-time vars
https://chatgpt.com/share/69833e56-93a0-800f-8e3d-d970cf87daef
Add an integration test that statically scans all Ansible task files under
roles/*/tasks/** and tasks/** and fails if a variable set via set_fact is
also passed via vars: on include/import tasks or roles.
This guards against scope leaks and accidental host-fact overrides caused
by mixing context variables with set_fact.
https://chatgpt.com/share/6983220c-29f4-800f-bb9b-5145b1c1cf75
Add a unittest-based integration test that scans all roles/*/config/main.yml
and validates docker.services.*.image and *.version only when present.
Ensures allowed Docker image name and tag characters without enforcing
image/version coupling.
https://chatgpt.com/share/6980cd2d-0644-800f-9e1f-0c8daa98e85c
- Remove deprecated get_docker_image filter plugin and its unit tests
- Restructure Funkwhale docker config to use docker.services.<name>.image/version
- Introduce explicit FUNKWHALE_*_IMAGE and *_VERSION vars for clarity
- Update docker-compose template to use explicit image:version variables
- Align Funkwhale role with unified service-based Docker config model
Prevent host-side Docker Compose interpolation from turning `$VAR` into an empty string by replacing `$` with `$$` in injected command argv, avoiding `exec ""` crashes; add unit tests for escaping behavior.
https://chatgpt.com/share/697f5e84-dea8-800f-b09e-58b3496250f3
- Add integration test ensuring docker-compose.yml.j2 services that include build.yml.j2
also define an image tag or YAML merge (<<:) at the same level
- Fix false positives by allowing image inheritance via anchors
- Add explicit custom image variables for littlejs and roulette-wheel services
- Minor formatting cleanup
https://chatgpt.com/share/697e8c69-0298-800f-ab25-2f650d6e7df9
- Default --chdir to cwd when omitted
- Default --project to basename of chdir when omitted
- Resolve chdir path for stable behavior
- Add unit tests covering defaults, overrides, and passthrough "--" handling
- Rename test file to test_compose.py
https://chatgpt.com/share/697e35a5-14c8-800f-a00a-24c9d22a68a7
- add module_utils/domain_mapper to map domains (canonical/aliases) -> application_id
supporting str/list/dict and nested structures
- extend tls_common.resolve_term to optionally resolve alias domains via applications
while keeping legacy lookup via global domains mapping intact
- pass applications into tls_resolve and cert_plan
- add unit tests for domain_mapper
https://chatgpt.com/share/697d500f-b884-800f-ba5b-088a2340f9d6
- Do not auto-generate default alias (<entity>.<primary>) when AUTO_BUILD_ALIASES is false
- Only use explicitly defined aliases unless auto-build is enabled
- Treat empty server.domains as opt-out when auto-build is disabled
- Update unit tests to reflect strict alias semantics
- Clarify behavior with inline documentation and comments
https://chatgpt.com/share/697d4994-7690-800f-8987-296ce7215559
The compose_ca_inject_cmd lookup previously appended --env-file
whenever docker_compose.files.env was set, even if the file did not
exist. This caused compose_ca_inject.py to fail hard.
Changes:
- Add existence check for env file using pathlib.Path.is_file()
- Resolve relative env paths against the compose instance directory
- Mirror existing handler behavior for --env-file handling
- Extend unit tests to cover both present and missing env-file cases
- Keep existing test coverage intact while adapting expectations
This aligns CA injection behavior with all other docker-compose handlers.
https://chatgpt.com/share/697d22a2-53c4-800f-9663-19a04f0587f6
- Rename infinito-compose wrapper to compose-base across roles and tests
- Introduce DOCKER_CMD_BASE as global base command configuration
- Update sys-ctl-mtn-cert-deploy to use compose_cmd consistently
- Fix compose wrapper argument parsing by enforcing "--" passthrough
- Harden project name resolution for trailing-slash instance paths
- Align docker restart helper scripts with compose-base naming
- Update unit tests to reflect renamed wrapper and new paths
https://chatgpt.com/share/697cf057-bd04-800f-9117-c007088f7fb8
Move `with-ca-trust.sh` to `sys-ca-selfsigned` as the single source of truth, add `CA_TRUST_NAME`/`trust_name`, and pass it through `compose_ca_inject.py` + `compose_ca_inject_cmd`. Introduce `module_utils/templating.py` for strict multi-pass rendering with fallback env lookup, update TLS self-signed regen logic, purge script, and extend unit tests accordingly.
https://chatgpt.com/share/697c876d-7140-800f-9981-762dfeeafdfe