aboutsummaryrefslogtreecommitdiff
path: root/tests/playbooks/post.yml
blob: f344396faa5e4b7efac60c3f6b0ba8a4a941b006 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
---
- hosts: all
  roles:
    - collect-collectd
  tasks:
    - shell:
        cmd: |
          set +o errexit
          mkdir -p logs
          # copy system log

          sudo cp -r /var/log logs/system_log

          if which journalctl ; then
              # the journal gives us syslog() and kernel output, so is like
              # a concatenation of the above.
              sudo journalctl --no-pager | sudo tee logs/syslog.txt > /dev/null
              sudo journalctl --no-pager -u docker.service | sudo tee logs/docker.log > /dev/null
          else
              # assume rsyslog
              sudo cp /var/log/syslog logs/syslog.txt
              sudo cp /var/log/kern.log logs/kern_log.txt
              sudo cp /var/log/upstart/docker.log logs/docker.log
          fi

          if sudo test -d /var/lib/docker/volumes/kolla_logs/_data; then
              sudo cp -r /var/lib/docker/volumes/kolla_logs/_data logs/kolla_logs
          fi

          # sudo config
          sudo cp -r /etc/sudoers.d logs/
          sudo cp /etc/sudoers logs/sudoers.txt

          df -h > logs/df.txt
          free  > logs/free.txt
          sudo parted -l | sudo tee logs/parted-l.txt > /dev/null
          mount > logs/mount.txt
          env > logs/env.txt

          if [ `command -v dpkg` ]; then
              dpkg -l | sudo tee logs/dpkg-l.txt > /dev/null
          fi
          if [ `command -v rpm` ]; then
              rpm -qa | sudo tee logs/rpm-qa.txt > /dev/null
          fi

          # final memory usage and process list
          ps -eo user,pid,ppid,lwp,%cpu,%mem,size,rss,cmd > logs/ps.txt

          # docker related information
          (docker info && docker system df && docker system df -v) > logs/docker-info.txt

          sudo cp -r /etc/kolla logs/kolla_configs

          # fix the permissions for logs folder
          sudo chmod -R 777 logs

          # Parse build logs and extract pkg install info
          tests/files/process_build_logs.py -l logs/build -b {{ base_distro }} > logs/packages-info.txt

          # rename files to .txt; this is so that when displayed via
          # logs.openstack.org clicking results in the browser shows the
          # files, rather than trying to send it to another app or make you
          # download it, etc.

          # firstly, rename all .log files to .txt files
          for f in $(find logs -name "*.log"); do
              sudo mv $f ${f/.log/.txt}
          done

          # Update symlinks to new file names
          for f in $(find logs -name "*FAILED*"); do
              sudo mv ${f} ${f}.gz
              sudo ln -sf ${f#*/000_FAILED_}.gz ${f}.gz
          done

          # append .txt to all kolla config file
          find logs/kolla_configs -type f -exec mv '{}' '{}'.txt \;

          # Compress all text logs
          find logs -iname '*.txt' -execdir gzip -9 {} \+
          find logs -iname '*.json' -execdir gzip -9 {} \+
        executable: /bin/bash
        chdir: "{{ zuul.project.src_dir }}"

    - synchronize:
        src: '{{ zuul.project.src_dir }}/logs'
        dest: '{{ zuul.executor.log_root }}'
        mode: pull
        copy_links: true
        verify_host: true
        rsync_opts:
          - "--quiet"