---
- hosts: all
  tasks:
    - name: Check node role
      command: "cat /etc/nodepool/role"
      register: node_role

    - set_fact: node_role="{{ node_role.stdout }}"

    - name: Ensure /tmp/logs dir
      file:
        path: "/tmp/logs"
        state: "directory"
      when:
        - node_role == "sub"

    - name: Get /tmp/logs symlink target
      command: "readlink -f /tmp/logs"
      register: logs_target

    - name: Ensure primary node directories
      file:
        path: "{{ logs_target.stdout }}/{{ item }}"
        state: "directory"
        mode: 0777
      when:
        - node_role == "primary"
      with_items:
        - "subnodes"
        - "docker_logs"
        - "kolla_configs"
        - "system_logs"
        - "kolla"

    - name: Ensure sub node directories
      file:
        path: "/tmp/logs/{{ item }}"
        state: "directory"
        mode: 0777
      when:
        - node_role == "sub"
      with_items:
        - "docker_logs"
        - "kolla_configs"
        - "system_logs"
        - "kolla"

    - name: Run diagnostics script
      script: get_logs.sh
      register: get_logs_result
      failed_when: false

    - name: Print get_logs output
      debug:
        msg: "{{ get_logs_result.stdout }}"

    - name: Run dump_info script
      script: ../tools/dump_info.sh

    - name: Download logs from all subnodes
      synchronize:
        src: "/tmp/logs"
        dest: "{{ logs_target.stdout }}/subnodes/{{ ansible_hostname }}"
        mode: "pull"
      when:
        - node_role == "sub"

    - name: Change permission of all log files
      command: "chmod -R 777 {{ logs_target.stdout }}"

    - name: Fail if get_logs has failed
      fail:
        msg: "{{ get_logs_result.stdout }}"
      when: get_logs_result.rc != 0

    - name: Copy inventory file to logs
      copy:
        src: "/tmp/kolla/raw_inventory"
        dest: "{{ logs_target.stdout }}/ansible/inventory"
      when:
        - node_role == "primary"

    - name: Copy hosts file to logs
      copy:
        src: "/etc/hosts"
        dest: "{{ logs_target.stdout }}/system_logs/hosts"
      when:
        - node_role == "primary"