File tree Expand file tree Collapse file tree 2 files changed +63
-0
lines changed
Expand file tree Collapse file tree 2 files changed +63
-0
lines changed Original file line number Diff line number Diff line change 11/test-vm-ci.yaml
22/kubeconfig.yaml
33/crds /
4+ /.vm-operator-cmd.rc
Original file line number Diff line number Diff line change 1+ #! /bin/bash
2+
3+ function usage() {
4+ cat >&2 << EOF
5+ Usage: $0 pool-name action
6+ Applys action to all VMs in the pool.
7+
8+ --context Context to be passed to kubectl (required)
9+ -n, --namespace Namespace to be passed to kubectl
10+ EOF
11+ exit 1
12+ }
13+
14+ unset pool
15+ unset action
16+ unset context
17+ namespace=default
18+
19+ if [ -r .vm-operator-cmd.rc ]; then
20+ . .vm-operator-cmd.rc
21+ fi
22+
23+ while [ " $# " -gt 0 ]; do
24+ case " $1 " in
25+ --context) shift ; context=" $1 " ;;
26+ --context=* ) IFS=' =' read -r option value <<< " $1" ; context=" $value " ;;
27+ -n|--namespace) shift ; namespace=" $1 " ;;
28+ -* ) echo >&2 " Unknown option: $1 " ; exit 1;;
29+ * ) if [ ! -v pool ]; then
30+ pool=" $1 "
31+ elif [ ! -v action ]; then
32+ action=" $1 "
33+ else
34+ usage
35+ fi ;;
36+ esac
37+ shift
38+ done
39+
40+ if [ ! -v pool -o ! -v " action" -o ! -v context ]; then
41+ echo >&2 " Missing arguments or context not set."
42+ echo >&2
43+ usage
44+ fi
45+ case " $action " in
46+ " start" |" stop" |" delete" |" delete-disks" ) ;;
47+ * ) usage;;
48+ esac
49+
50+ kubectl --context=" $context " -n " $namespace " get vms -o json \
51+ | jq -r ' .items[] | select(.spec.pools | contains(["' ${pool} ' "])) | .metadata.name' \
52+ | while read vmName; do
53+ case " $action " in
54+ start) kubectl --context=" $context " -n " $namespace " patch vms " $vmName " \
55+ --type=' merge' -p ' {"spec":{"vm":{"state":"Running"}}}' ;;
56+ stop) kubectl --context=" $context " -n " $namespace " patch vms " $vmName " \
57+ --type=' merge' -p ' {"spec":{"vm":{"state":"Stopped"}}}' ;;
58+ delete) kubectl --context=" $context " -n " $namespace " delete vm/" $vmName " ;;
59+ delete-disks) kubectl --context=" $context " -n " $namespace " delete \
60+ pvc -l app.kubernetes.io/instance=" $vmName " ;;
61+ esac
62+ done
You can’t perform that action at this time.
0 commit comments