Skip to content

Commit 1fc2664

Browse files
committed
Add maintenance script.
1 parent d27339b commit 1fc2664

File tree

2 files changed

+63
-0
lines changed

2 files changed

+63
-0
lines changed

dev-example/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
/test-vm-ci.yaml
22
/kubeconfig.yaml
33
/crds/
4+
/.vm-operator-cmd.rc

dev-example/pool-action.sh

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
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

0 commit comments

Comments
 (0)