services:
  backup_odoo:
    image: sources.le-filament.com:5050/lefilament/duplicity_image/duplicity:latest
    hostname: {{ inventory_hostname_short | lower | regex_replace('_','') }}-{{ template_odoo_instance.key }}
    environment:
      SRC: "/mnt/backup/src"
      DST: "swift://{{ template_odoo_instance.key }}_{{ inventory_hostname | lower }}"
      PGHOST: "db"
      PGDATABASE: "{{ template_odoo_instance.value.db }}"
      PGUSER: "{{ template_odoo_instance.value.db_user }}"
      PGPASSWORD: "{{ template_odoo_instance.value.db_pass }}"
      PASSPHRASE: "{{ template_odoo_instance.value.odoo_backup_pass | default(template_odoo_instance.value.master_pass) }}"
      SWIFT_USERNAME: "{{ template_backup_credentials.username }}"
      SWIFT_PASSWORD: "{{ template_backup_credentials.password }}"
      SWIFT_AUTHURL: "{{ template_backup_account.value.authurl }}"
      SWIFT_AUTHVERSION: {{ template_backup_account.value.authversion }}
      SWIFT_TENANTNAME: "{{ template_backup_account.value.tenantname }}"
      SWIFT_TENANTID: "{{ template_backup_account.value.tenantid }}"
      SWIFT_REGIONNAME: "{{ template_backup_account.value.regionname }}"
    volumes:
      - {{ template_odoo_instance.key }}{{ template_backup_account.key }}_backup_cache:/root/.cache/duplicity/:rw
      - {{ template_odoo_instance.key }}_filestore:/mnt/backup/src/odoo:ro
{% if template_odoo_instance.value.metabase | default(false) %}
      - {{ template_odoo_instance.key }}_metabase:/mnt/backup/src/metabase:ro
{% endif %}
    networks:
      - {{ template_odoo_instance.key }}_default
      - public
    command: >
      /bin/ash -c "
      echo \"info: backup started on $$(date -Iseconds)\"
      && echo \"info: dumping '$$PGDATABASE' into '$$SRC/$$PGDATABASE.pgdump'...\"
      && pg_dump --no-owner --format c --file $$SRC/$$PGDATABASE.pgdump
      && echo \"info: backuping '$$SRC' to '$$DST'...\"
      && duplicity backup --full-if-older-than 6D $$SRC $$DST
      && echo \"info: removing all but 5 full backups in '$$DST'\"
      && duplicity remove-all-but-n-full 5 --force $$DST
      && echo \"info: backup done\""

networks:
  {{ template_odoo_instance.key }}_default:
    external: true
  public:
    driver_opts:
      encrypted: 1

volumes:
  {{ template_odoo_instance.key }}{{ template_backup_account.key }}_backup_cache:
  {{ template_odoo_instance.key }}_filestore:
    external: true
{% if template_odoo_instance.value.metabase | default(false) %}
  {{ template_odoo_instance.key }}_metabase:
    external: true
{% endif %}