52 lines
1.1 KiB
Bash
Executable File
52 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
set -euo pipefail
|
|
|
|
function usage() {
|
|
echo "USAGE: $0 1 -- disable all resource affinity rules"
|
|
echo "USAGE: $0 0 -- (default) attempt to re-enable all rules (including previously not enabled"
|
|
exit 64
|
|
}
|
|
|
|
if ! which jq >> /dev/null; then
|
|
echo "jq not found"
|
|
exit 1
|
|
fi
|
|
|
|
if [[ "$#" -ne 1 ]]; then
|
|
echo "ERROR: expected exactly one argument"
|
|
usage
|
|
fi
|
|
|
|
maintenance=0
|
|
case "$1" in
|
|
0)
|
|
true
|
|
;;
|
|
1)
|
|
maintenance=1
|
|
;;
|
|
*)
|
|
usage
|
|
;;
|
|
esac
|
|
|
|
export rules="$(mktemp)"
|
|
function cleanup {
|
|
rm "$rules"
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
pvesh get /cluster/ha/rules --output-format json | jq '[ .[] | select(.affinity == "negative") | select(.type == "resource-affinity") ]' > "$rules"
|
|
|
|
if [[ "$maintenance" == 1 ]]; then
|
|
cat "$rules" | jq -r '.[] | select(.disable == 1) | .comment' | sed 's/^/already disabled rule/g'
|
|
|
|
cat "$rules" | jq -r '.[].rule' | while read -r rule; do
|
|
pvesh set "/cluster/ha/rules/${rule}" --type resource-affinity --disable 1
|
|
done
|
|
else
|
|
cat "$rules" | jq -r '.[].rule' | while read -r rule; do
|
|
pvesh set "/cluster/ha/rules/${rule}" --type resource-affinity --delete disable || true
|
|
done
|
|
fi
|