---
# Gravity Platform Backup Playbook
# Backs up UMAP models (database backup is customer responsibility)
#
# Usage:
#   POC:        ansible-playbook -i inventory/production.yml playbooks/backup.yml
#   Enterprise: ansible-playbook -i inventory/production.yml playbooks/backup.yml -l ml_vms

- name: Backup Gravity Platform
  hosts: all
  become: yes
  vars:
    backup_dir: /opt/gravity/backups
    backup_timestamp: "{{ ansible_date_time.iso8601_basic_short }}"

  tasks:
    - name: Create backup directory
      file:
        path: "{{ backup_dir }}"
        state: directory
        mode: "0755"

    - name: Backup UMAP models
      archive:
        path: /opt/gravity/umap/models
        dest: "{{ backup_dir }}/umap-models-{{ backup_timestamp }}.tar.gz"
        format: gz
      when: "'umap' in gravity_services"

    - name: List backups
      find:
        paths: "{{ backup_dir }}"
        patterns: "*.tar.gz,*.dump"
      register: backup_files

    - name: Display backup info
      debug:
        msg: |
          Backup completed:
          - UMAP Models: umap-models-{{ backup_timestamp }}.tar.gz
          - Location: {{ backup_dir }}
          - Total backups: {{ backup_files.files | length }}

    - name: Clean old backups (keep last 7)
      shell: |
        ls -t {{ backup_dir }}/umap-models-*.tar.gz | tail -n +8 | xargs -r rm
      when: backup_files.files | length > 7
