---

- hosts: all
  gather_facts: false
  pre_tasks:

    - name: SETUP | Get facts
      setup:
      register: s

    - name: DEBUG | Show facts
      debug:
        var: s
  tasks:

    - name: APT | Install some packages
      apt:
        name: "{{ p }}"
        update_cache: true
        cache_valid_time: 3600
      vars:
        p: ['ca-certificates', 'curl', 'strace', 'rsyslog', 'vim']

    - name: SERVICE | Ensure rsyslog is started
      service:
        name: rsyslog
        state: started

- hosts: master
  roles:
    - ../../
  tasks:

    - name: COPY | Deploy first dump
      copy:
        src: import1.sql
        dest: /tmp/import1.sql
        mode: 0644
        owner: root
        group: root
      register: c

    - name: MYSQL_DB | Import first dump
      mysql_db:
        name: "{{ item }}"
        state: import
        target: /tmp/import1.sql
        login_unix_socket: "{{ mariadb_socket }}"
      loop: ['testrepl', 'norepl']
      when: c.changed
      tags:
        - skip_ansible_lint

- hosts: slave
  pre_tasks:

    - name: SHELL | Get master IP
      shell: set -o pipefail && getent hosts {{ ansible_hostname | replace ('slave', 'master') }} | cut -d ' ' -f 1
      args:
        executable: /bin/bash
      register: ip
      changed_when: false

    - name: SET_FACT | Apply some configuration
      set_fact:
        # MariaDB don't read /etc/hosts (from vagrant host plugin)
        mariadb_replication_host: "{{ ip.stdout }}"
        # Need this to use vagrant 'delegate_to'
        mariadb_slave_import_from: "{{ ansible_hostname | replace ('slave', 'master') }}"

  roles:
    - ../../
  tasks:

    - block:

        - name: COPY | Deploy dump
          copy:
            src: import2.sql
            dest: /tmp/import2.sql
            mode: 0644
            owner: root
            group: root
          delegate_to: "{{ mariadb_slave_import_from }}"
          register: c

        - name: MYSQL_DB | Import another dump
          mysql_db:
            name: "{{ item }}"
            state: import
            target: /tmp/import2.sql
            login_unix_socket: "{{ mariadb_socket }}"
          loop: ['testrepl', 'norepl']
          when: c.changed

      delegate_to: "{{ mariadb_slave_import_from }}"

    - name: MYSQL_REPLICATION | Get slave infos
      mysql_replication:
        mode: getslave
      register: slave

    - name: FAIL | if slave threads are not running
      fail:
        msg: "Slave issue"
      when: slave.Slave_IO_Running != 'Yes' or slave.Slave_SQL_Running != 'Yes'

- hosts: galera
  pre_tasks:

    - name: SET_FACT | Apply some configuration
      set_fact:
        mariadb_galera_primary_node: '{% if is_docker %}docker-{% else %}vbox-{% endif %}{{ ansible_distribution_release }}-{{ mariadb_origin }}-galera-1'
        mariadb_wsrep_node_address: "{{ '127.0.0.1' if is_docker else ansible_eth1.ipv4.address }}"

  roles:
    - ../../