capsul-flask/capsulflask/shell_scripts/get.sh
mirsal 8a6d558402 Retrieve IPv6 addresses from VMs
This commit allows the model to fetch IPv6 addresses from running VMs
and populate VirtualMachine objects with the value if it was retrieved
successfully
2021-08-04 15:35:41 +00:00

37 lines
958 B
Bash
Executable File

#!/bin/sh -e
vmname="$1"
if echo "$vmname" | grep -vqE '^(cvm|capsul)-[a-z0-9]{10}$'; then
echo "vmname $vmname must match "'"^capsul-[a-z0-9]{10}$"'
exit 1
fi
# this will let us know if the vm exists or not
exists="false"
state="unknown"
if virsh domuuid "$vmname" | grep -vqE '^[\t\s\n]*$'; then
exists="true"
state_code="$(virsh domstats $vmname | grep state.state | cut -d '=' -f 2)"
if printf "$state_code\n" | grep -vqE '^[0-8]$'; then
printf 'state_code was not detected. state_code %s must match ^[0-8]$\n' "$state_code"
exit 1
fi
case "$state_code" in
1) state="running" ;;
2) state="blocked" ;;
4) state="stopping" ;;
6) state="crashed" ;;
[357]) state="stopped" ;;
esac
fi
# this gets the vm ip addresses
ipv4="$(virsh domifaddr "$vmname" | awk '/ipv4/ {print $4}' | cut -d'/' -f1)"
ipv6="$(virsh domifaddr "$vmname" | awk '/ipv6/ {print $4}' | cut -d'/' -f1)"
echo "$exists $state $ipv4 $ipv6"