33 lines
736 B
Bash
Executable File
33 lines
736 B
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
if ! which jq >> /dev/null; then
|
|
echo "jq not found"
|
|
exit 1
|
|
fi
|
|
|
|
includingNomigrate=0
|
|
if [[ "$#" -gt 0 ]]; then
|
|
includingNomigrate="$1"
|
|
fi
|
|
host="$(hostname)"
|
|
if [[ "$#" -gt 1 ]]; then
|
|
host="$2"
|
|
fi
|
|
|
|
function running_ids {
|
|
if [[ "$includingNomigrate" == 1 ]]; then
|
|
pvesh get "/nodes/${host}/qemu" --output-format json |\
|
|
jq -r 'map(select( .status == "running" ) | .vmid) | sort | @csv'
|
|
else
|
|
pvesh get "/nodes/${host}/qemu" --output-format json |\
|
|
jq -r 'map(select( .status == "running" and (.tags | split(";") | all(.!="nomigrate")) ) | .vmid) | sort | @csv'
|
|
fi
|
|
}
|
|
|
|
running_ids="$(running_ids)"
|
|
if [[ "$running_ids" != "" ]]; then
|
|
echo "ERROR: VMs running on $host: $running_ids"
|
|
exit 1
|
|
fi
|