---
# Copyright 2017-present Open Networking Foundation
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# compute-diag/tasks/main.yml

- name: Create diag_dir subdir
  file:
    dest: "/tmp/{{ hostvars[groups['head'][0]]['diag_dir'] }}/{{ inventory_hostname }}"
    state: directory
  register: compute_diag_dir

- name: Compute node diag collection
  shell: "{{ item }} > /tmp/{{ hostvars[groups['head'][0]]['diag_dir'] }}/{{ inventory_hostname }}/{{ item | regex_replace('[^\\w-]', '_')}}"
  ignore_errors: yes
  args:
    creates: "compute_diag_dir.stat.path/{{ item | regex_replace('[^\\w-]', '_')}}"
  with_items:
   - "arp -n"
   - "brctl show"
   - "cat /etc/lsb-release"
   - "cat /etc/resolv.conf"
   - "date -u"
   - "df -k"
   - "free"
   - "ifconfig -a"
   - "ip addr list"
   - "ip link list"
   - "ip neighbor"
   - "ip route"
   - "ps aux"
   - "route -n"
   - "sudo iptables -S"
   - "sudo iptables -t nat -S"
   - "sudo ovs-appctl bridge/dump-flows br-int"
   - "sudo ovs-appctl fdb/show br-int"
   - "sudo ovs-appctl vlog/list"
   - "sudo ovs-dpctl dump-flows"
   - "sudo ovs-dpctl show"
   - "sudo ovs-ofctl dump-flows br-int"
   - "sudo ovs-ofctl dump-ports br-int"
   - "sudo ovs-ofctl dump-ports-desc br-int"
   - "sudo ovs-ofctl dump-tables br-int"
   - "sudo ovs-ofctl show br-int"
   - "sudo ovs-vsctl get-controller br-int"
   - "sudo ovs-vsctl list interface"
   - "sudo ovs-vsctl list-br"
   - "sudo ovs-vsctl list-ports br-int"
   - "sudo ovs-vsctl show"

