#!/bin/bash
BASE_COLLECTION_PATH="/must-gather"

for i in $(/usr/bin/oc get pod --all-namespaces -l kubevirt.io=virt-launcher --no-headers | awk '{print $1 "_" $2}')
do
  ocproject=$(echo "$i" | awk -F_ '{print $1}')
  ocvm=$(echo "$i" | awk -F_ '{print $2}')
  vm_collection_path=${BASE_COLLECTION_PATH}/namespaces/${ocproject}/vms

  mkdir -p "${vm_collection_path}"

  vmname=$(echo "${ocvm}" 2>/dev/null | cut -d'-' -f3- | sed "s/-[^-]*$//")

  # VM : dumpxml
  /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- virsh dumpxml "${ocproject}_${vmname}" > "${vm_collection_path}/${ocvm}.dumpxml.xml"

  # VM : QEMU logs
  # libvirt logs are already relayed to virt-launcher, and we capture the virt-launcher pod logs elsewhere. We are want the QEMU log here.
  /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- cat "/var/log/libvirt/qemu/${ocproject}_${vmname}.log" > "${vm_collection_path}/${ocvm}.qemu.log"

  # VM : IP
  /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- ip a 2>/dev/null > "${vm_collection_path}/${ocvm}.ip.txt"

  # VM : Bridge
  {
    echo "###################################"
    echo "brctl show:"
    echo "###################################"
    /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- brctl show 2>/dev/null

    echo "###################################"
    echo "bridge fdb show:"
    echo "###################################"
    /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- bridge fdb show 2>/dev/null

    echo "###################################"
    echo "bridge vlan show:"
    echo "###################################"
    /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- bridge vlan show 2>/dev/null
  } > "${vm_collection_path}/${ocvm}.bridge.txt"

  # VM : iptables
  {
    echo "###################################"
    echo "Filter table:"
    echo "###################################"
    /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- iptables -t filter -L 2>/dev/null

    echo -e "\n\n###################################"
    echo "NAT table:"
    echo "###################################"
    /usr/bin/oc exec "${ocvm}" -n "${ocproject}" -c compute -- iptables -t nat -L 2>/dev/null
  } > "${vm_collection_path}/${ocvm}.iptables.txt"

done

exit 0
