add admin_scripts/affinity_maintenance.sh

This commit is contained in:
2026-05-16 00:02:11 +03:00
parent 6c58689d1d
commit 56ebe214d8
2 changed files with 66 additions and 1 deletions

View File

@@ -0,0 +1,51 @@
#!/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

View File

@@ -71,9 +71,21 @@ function off {
_off "$HOSTNAME"
fi
roff
updl
}
function roff {
/root/admin_scripts/affinity_maintenance.sh 1
echo 'resource affinities: disabled'
}
function ron {
/root/admin_scripts/affinity_maintenance.sh 0
echo 'resource affinities: enabled'
}
function _on {
ha-manager crm-command node-maintenance disable "$1" && \
echo "$1": normal mode
@@ -87,9 +99,11 @@ function on {
else
_on "$HOSTNAME"
fi
echo 're-enable resource affinities: ron'
}
alias h="echo 'avail cmds: off on | upg upgr | updl localprogress'"
alias h="echo 'avail cmds: off on roff ron | upg upgr | updl localprogress'"
function localprogress () {
watch ls -lh "/var/lib/vz/images/$1"