#!/bin/sh

echo "VM-name;UUID;Disk(s);CD(s);MEM;nCPU;CPUset;BR-MAC;br-IP;VNC-port;Host-PCI-devices"

for vm in `virsh list --name --all`; do
	xml="/tmp/${vm}.xml"
	virsh dumpxml $vm > $xml
	name=$(cat $xml | grep '<name>' | sed -e 's/.*<name>//' -e 's/<\/name>//')
	uuid=$(cat $xml | grep '<uuid>' | sed -e 's/.*<uuid>//' -e 's/<\/uuid>//')
	disks=$(cat $xml | grep "device='disk'" --after-context=3 | grep source | sed -e "s/.*file='//" -e "s/'.*//" | tr '\n' ' ')
	cds=$(cat $xml | grep "device='cdrom'" --after-context=3 | grep source | sed -e "s/.*file='//" -e "s/'.*//" | tr '\n' ' ')
	memstr=$(cat $xml | grep '</memory>')
	memunit=$(echo $memstr | sed -e "s/.*unit='//" -e "s/'.*//")
	mem=$(echo $memstr | sed -e 's/<\/memory>.*//' -e 's/.*>//')
	ncpu=$(cat $xml | grep '</vcpu>' | sed -e 's/<\/vcpu>.*//' -e 's/.*>//')
	cpuset=$(cat $xml | grep -v 'placement' | grep "cpuset='" | sed -e "s/.*cpuset='//" -e "s/'.*//" | tr '\n' ' ')
	macs=$(cat $xml | grep "type='bridge'" --after-context=3 | grep "address='" | sed -e "s/.*address='//" -e "s/'.*//" | tr '\n' ' ')
	bridges=$(cat $xml | grep "type='bridge'" --after-context=3 | grep "bridge='" | sed -e "s/.*bridge='//" -e "s/'.*//" | tr '\n' ' ')
	vnc=$(cat $xml | grep "type='vnc'" | sed -e 's/autoport//' -e "s/.*port='//" -e "s/'.*//")
	devs=$(cat $xml | grep "value='vfio-pci" | sed -e "s/.*host=//" -e "s/,.*//" -e "s/'.*//")
	[ -z "$devs" ] && devs="none"
	echo "$name;$uuid;$disks;$cds;$mem $memunit;$ncpu;$cpuset;${bridges}= ${macs};TBA;$vnc;$devs"
done
