#!/bin/bash function usage() { cat >&2 <&2 "Unknown option: $1"; exit 1;; *) if [ ! -v pool ]; then pool="$1" elif [ ! -v action ]; then action="$1" else usage fi;; esac shift done if [ ! -v pool -o ! -v "action" -o ! -v context ]; then echo >&2 "Missing arguments or context not set." echo >&2 usage fi case "$action" in "start"|"stop"|"delete"|"delete-disks") ;; *) usage;; esac kubectl --context="$context" -n "$namespace" get vms -o json \ | jq -r '.items[] | select(.spec.pools | contains(["'${pool}'"])) | .metadata.name' \ | while read vmName; do case "$action" in start) kubectl --context="$context" -n "$namespace" patch vms "$vmName" \ --type='merge' -p '{"spec":{"vm":{"state":"Running"}}}';; stop) kubectl --context="$context" -n "$namespace" patch vms "$vmName" \ --type='merge' -p '{"spec":{"vm":{"state":"Stopped"}}}';; delete) kubectl --context="$context" -n "$namespace" delete vm/"$vmName";; delete-disks) kubectl --context="$context" -n "$namespace" delete \ pvc -l app.kubernetes.io/instance="$vmName" ;; esac done