rejectattr(enabled) breaks deploy when host_apps omit the key #35

Closed
opened 2026-09-16 08:17:39 -07:00 by westfarn · 0 comments
Owner

#33 made deploy skip host_apps.enabled: false so a stopped app cannot come back via CI. The filter is:

deploy_targets: "{{ matching_host_apps | rejectattr('enabled', 'equalto', false) | list }}"

Jinja rejectattr('enabled', …) requires the key on every dict. Almost every host_apps row omits enabled (omit = enabled). That is the documented default.

Symptom: every --app deploy dies on all webservers before git/compose:

object of type 'dict' has no attribute 'enabled'
Origin: roles/app-deploy/tasks/main.yml:40

Hit on url_shortening_service beta (69d8b3e). Same bug on the skip-debug selectattr('enabled', …) loop and roles/web-static/tasks/main.yml.

Do: treat missing enabled as true. Keep enabled: false (print_forge) skipped. Do not add enabled: true to every inventory row.

`#33` made deploy skip `host_apps.enabled: false` so a stopped app cannot come back via CI. The filter is: ```yaml deploy_targets: "{{ matching_host_apps | rejectattr('enabled', 'equalto', false) | list }}" ``` Jinja `rejectattr('enabled', …)` requires the key on **every** dict. Almost every `host_apps` row omits `enabled` (omit = enabled). That is the documented default. **Symptom:** every `--app` deploy dies on all webservers before git/compose: ``` object of type 'dict' has no attribute 'enabled' Origin: roles/app-deploy/tasks/main.yml:40 ``` Hit on `url_shortening_service` beta (`69d8b3e`). Same bug on the skip-debug `selectattr('enabled', …)` loop and `roles/web-static/tasks/main.yml`. **Do:** treat missing `enabled` as true. Keep `enabled: false` (print_forge) skipped. Do not add `enabled: true` to every inventory row.
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: ai_ml_operations/server-infra#35