# NOTE(andreaf) This bypasses the stage-output role
- name: Ensure {{ stage_dir }}/logs exists
  become: true
  file:
    path: "{{ stage_dir }}/logs"
    state: directory
    owner: "{{ ansible_user }}"

- name: Export legacy stack screen log files
  become: true
  shell:
    cmd: |
      u=""
      name=""
      for u in $(systemctl list-unit-files | grep devstack | awk '{print $1}'); do
        name=$(echo $u | sed 's/devstack@/screen-/' | sed 's/\.service//')
        journalctl -o short-precise --unit $u  > {{ stage_dir }}/logs/$name.txt
      done

- name: Export legacy syslog.txt
  become: true
  shell:
    # The journal contains everything running under systemd, we'll
    # build an old school version of the syslog with just the
    # kernel and sudo messages.
    cmd: |
      journalctl \
          -t kernel \
          -t sudo \
          --no-pager \
          --since="$(cat {{ devstack_base_dir }}/log-start-timestamp.txt)" \
         > {{ stage_dir }}/logs/syslog.txt

# TODO: convert this to ansible
#  - make a list of the above units
#  - iterate the list here
- name: Export journal
  become: true
  shell:
    # Export the journal in export format to make it downloadable
    # for later searching. It can then be rewritten to a journal native
    # format locally using systemd-journal-remote. This makes a class of
    # debugging much easier. We don't do the native conversion here as
    # some distros do not package that tooling.
    cmd: |
      journalctl -o export \
          --since="$(cat {{ devstack_base_dir }}/log-start-timestamp.txt)" \
        | gzip > {{ stage_dir }}/logs/devstack.journal.gz

- name: Save journal README
  become: true
  template:
    src: devstack.journal.README.txt.j2
    dest: '{{ stage_dir }}/logs/devstack.journal.README.txt'