Skip to content

Instantly share code, notes, and snippets.

@Duologic
Created January 22, 2018 15:40
Show Gist options
  • Save Duologic/1d9b58f9337fe53dcccdb03c6c2cb757 to your computer and use it in GitHub Desktop.
Save Duologic/1d9b58f9337fe53dcccdb03c6c2cb757 to your computer and use it in GitHub Desktop.
Get KVM resources with virsh/qemu
#!/usr/bin/env sh
set -euo pipefail
IFS=$'\n\t'
INITIATE=$1
HOSTNAME=$2
IP=$3
# Resources used by VMs
DOMIDS=$(virsh -c qemu+ssh://$IP/system list | awk -F' ' '{ print $1 }' | grep -v 'Id\|-')
[ $INITIATE -eq 1 ] && touch used_resources.csv
[ $INITIATE -eq 1 ] && echo "host,guest,vcpu,mem" > used_resources.csv
for i in ${DOMIDS[@]}
do
virsh -c qemu+ssh://$IP/system dominfo $i | \
awk -F':' '{gsub(/^[ \t]+/, "", $2); print $2 }' | \
awk -v HOSTNAME="$HOSTNAME" 'BEGIN { RS = "" ; FS = "\n" }
{gsub(/ KiB/,"",$8); print HOSTNAME","$2","$6","$8/1024/1024 }' >> used_resources.csv
done
#sed -i -e '2,$s/^/'"$HOSTNAME"',/' used_resources.csv
# Resources available on host
[ $INITIATE -eq 1 ] && touch available_resources.csv
[ $INITIATE -eq 1 ] && echo "host,vcpu,mem" > available_resources.csv
virsh -c qemu+ssh://$IP/system nodeinfo | \
awk -F':' '{gsub(/^[ \t]+/, "", $2); print $2 }' | \
awk -v HOSTNAME="$HOSTNAME" 'BEGIN { RS ="" ; FS = "\n" }
{gsub(/ KiB/,"", $8); print HOSTNAME","$2","$8/1024/1024 }' >> available_resources.csv
#sed -i -e '2,$s/^/'"$HOSTNAME"',/' available_resources.csv
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment