---
# Mapping logic for baudolo CLI arguments
#
# - BKP_VOLUME_2_LOCAL_DB_ROUTINE: Service names where backup.database_routine is set (for --database-containers)
# - BKP_VOLUME_2_LOCAL_NO_STOP_REQUIRED: Exact deployed image refs where backup.stop_required is false (for --images-no-stop-required)
# - BKP_VOLUME_2_LOCAL_DISABLED: Exact deployed image refs where backup.disabled is true (for --images-no-backup-required)
# - BKP_VOLUME_2_LOCAL_HARD_RESTART: Compose project (entity) names where backup.project_hard_restart is set (for --hard-restart-projects)
# - BKP_VOLUME_2_LOCAL_SNAPSHOT_BIN: Launcher that appends --snapshot/--snapshot-subject per run when the mode allows it
# - BKP_VOLUME_2_LOCAL_SNAPSHOT_MODE: services.volume-2-local.snapshot_mode normalised; YAML reads a bare off/no/false as a boolean
# - BKP_VOLUME_2_LOCAL_REPO_NAME: Directory under <backups-dir>/<machine-hash>/; MUST match cli/administration/recover/full.py's volume repo
# baudolo matches --images-* exactly, so the refs carry the swarm registry prefix.
# CLI-ready variables render these lists as argument strings.
application_id: svc-bkp-volume-2-local
system_service_id: "{{ application_id }}"
BKP_VOLUME_2_LOCAL_BAUDOLO_BIN: baudolo
BKP_VOLUME_2_LOCAL_REPO_NAME: backup-docker-to-local
BKP_VOLUME_2_LOCAL_SNAPSHOT_BIN: "{{ [ DIR_BIN, 'baudolo-snapshot' ] | path_join }}"
BKP_VOLUME_2_LOCAL_SUBVOLUME_BIN: "{{ [ DIR_BIN, 'baudolo-subject-subvolume' ] | path_join }}"
BKP_VOLUME_2_LOCAL_SNAPSHOT_MODES:
- auto
- never
- btrfs
- zfs
BKP_VOLUME_2_LOCAL_SNAPSHOT_FALSEY:
- "false"
- "off"
- "no"
- "n"
- "0"
- "never"
BKP_VOLUME_2_LOCAL_SNAPSHOT_MODE_RAW: >-
{{ lookup('config', application_id, 'services.volume-2-local.snapshot_mode') }}
BKP_VOLUME_2_LOCAL_SNAPSHOT_MODE: >-
{{ 'never'
if (BKP_VOLUME_2_LOCAL_SNAPSHOT_MODE_RAW | string | lower | trim) in BKP_VOLUME_2_LOCAL_SNAPSHOT_FALSEY
else (BKP_VOLUME_2_LOCAL_SNAPSHOT_MODE_RAW | string | lower | trim) }}
BKP_VOLUME_2_LOCAL_DB_ENABLED: >-
{{
(database_type | default(false) | string | trim | lower)
in ['1', 'true', 'yes', 'on', 'y', 't']
}}
BKP_VOLUME_2_LOCAL_DB_ROUTINE: >-
{{ lookup('backup_database_containers') }}
BKP_VOLUME_2_LOCAL_NO_STOP_REQUIRED: >-
{{ lookup('backup_image', 'stop_required', false) }}
BKP_VOLUME_2_LOCAL_DISABLED: >-
{{ lookup('backup_image', 'disabled', true) }}
BKP_VOLUME_2_LOCAL_VOLUMES_DISABLED: >-
{{ lookup('backup_volume') }}
BKP_VOLUME_2_LOCAL_HARD_RESTART: >-
{{ lookup('backup_hard_restart_projects') }}
BKP_VOLUME_2_LOCAL_DB_ROUTINE_CLI: >-
{% if BKP_VOLUME_2_LOCAL_DB_ROUTINE | length > 0 -%}
--database-containers {{ BKP_VOLUME_2_LOCAL_DB_ROUTINE | join(' ') }}
{%- endif %}
BKP_VOLUME_2_LOCAL_NO_STOP_REQUIRED_CLI: >-
{% if BKP_VOLUME_2_LOCAL_NO_STOP_REQUIRED | length > 0 -%}
--images-no-stop-required {{ BKP_VOLUME_2_LOCAL_NO_STOP_REQUIRED | join(' ') }}
{%- endif %}
BKP_VOLUME_2_LOCAL_DISABLED_CLI: >-
{% if BKP_VOLUME_2_LOCAL_DISABLED | length > 0 -%}
--images-no-backup-required {{ BKP_VOLUME_2_LOCAL_DISABLED | join(' ') }}
{%- endif %}
BKP_VOLUME_2_LOCAL_VOLUMES_DISABLED_CLI: >-
{% if BKP_VOLUME_2_LOCAL_VOLUMES_DISABLED | length > 0 -%}
--volumes-no-backup-required {{ BKP_VOLUME_2_LOCAL_VOLUMES_DISABLED | join(' ') }}
{%- endif %}
BKP_VOLUME_2_LOCAL_HARD_RESTART_CLI: >-
{% if IS_COMPOSE_MODE and BKP_VOLUME_2_LOCAL_HARD_RESTART | length > 0 -%}
--hard-restart-projects {{ BKP_VOLUME_2_LOCAL_HARD_RESTART | join(' ') }}
{%- endif %}
BKP_VOLUME_2_LOCAL_CLI_ARGS_LIST:
- "{{ BKP_VOLUME_2_LOCAL_DB_ROUTINE_CLI }}"
- "{{ BKP_VOLUME_2_LOCAL_NO_STOP_REQUIRED_CLI }}"
- "{{ BKP_VOLUME_2_LOCAL_DISABLED_CLI }}"
- "{{ BKP_VOLUME_2_LOCAL_VOLUMES_DISABLED_CLI }}"
- "{{ BKP_VOLUME_2_LOCAL_HARD_RESTART_CLI }}"
BKP_VOLUME_2_LOCAL_EXEC: >-
{{ BKP_VOLUME_2_LOCAL_SNAPSHOT_BIN }}
--mode {{ BKP_VOLUME_2_LOCAL_SNAPSHOT_MODE }}
--
{{ BKP_VOLUME_2_LOCAL_BAUDOLO_BIN }}
--compose-dir {{ DIR_COMPOSITIONS }}
--databases-csv {{ FILE_DATABASE_SECRETS }}
--backups-dir {{ DIR_BACKUPS }}
--repo-name {{ BKP_VOLUME_2_LOCAL_REPO_NAME }}
--only-sql
{{ BKP_VOLUME_2_LOCAL_CLI_ARGS_LIST | select('string') | join(' ') }}