#!/bin/bash

set -e

getVMNic() {
  local vm=$1;
  iflist=$(virsh domiflist $vm)
  nic=$(echo "$iflist" | awk 'NR > 2 {print $1,$5}' | sed '/^[[:space:]]*$/d')
  [ ! -n "$nic" ] && echo "nic is none" && exit 1
  echo "$nic"
}

getVMLinkLocalAddr() {
  local vm=$1;
  networkInfoJson=$(virsh qemu-agent-command $vm '{"execute":"guest-network-get-interfaces"}')
  addr=$(echo "$networkInfoJson" | jq -r '.return[]."ip-addresses"[]."ip-address"' | grep -E '^169.254' | head -n 1)
  [ ! -n "$addr" ] && echo "link local is none" && exit 1
  echo "$addr"
}


case $1 in
  getNic)
    getVMNic $2
  ;;
  getLinkLocalAddr)
    getVMLinkLocalAddr $2
  ;;
  *)
    echo "Error: Unknow Options -> $1"
    exit 1
  ;;
esac