nut-notify: Remove everything except notifications
Shutdown automation will behandled by `upsmon` running on each physical machine. This code never worked anyway.main
parent
77b701ffc0
commit
c13ac75995
131
nut-notify.sh
131
nut-notify.sh
|
@ -1,48 +1,8 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
# vim: set ts=4 sts=4 sw=4 et :
|
# vim: set ts=4 sts=4 sw=4 et :
|
||||||
|
|
||||||
CRITICAL_VMS='
|
|
||||||
cloud0
|
|
||||||
dc0
|
|
||||||
dc2
|
|
||||||
file0
|
|
||||||
k8s-amd64-n0
|
|
||||||
k8s-ctrl0
|
|
||||||
logs0
|
|
||||||
matrix0
|
|
||||||
smtp1
|
|
||||||
web0
|
|
||||||
'
|
|
||||||
VM_HOSTS='
|
|
||||||
vmhost0.pyrocufflink.blue
|
|
||||||
vmhost1.pyrocufflink.blue
|
|
||||||
'
|
|
||||||
|
|
||||||
MESSAGE="$1"
|
MESSAGE="$1"
|
||||||
|
|
||||||
consolidate_vms() {
|
|
||||||
count=0
|
|
||||||
for h in ${VM_HOSTS}; do
|
|
||||||
[ -n "${h}" ] || continue
|
|
||||||
uri=qemu+ssh://root@${h}/system
|
|
||||||
c=$(($(virsh -c ${uri} list --name | wc -l) - 1))
|
|
||||||
printf 'VM host %s has %d running VMs\n' "${h}" "${c}" \
|
|
||||||
| log -p daemon.debug
|
|
||||||
if [ ${c} -gt ${count} ]; then
|
|
||||||
target=${h}
|
|
||||||
count=${c}
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
[ -n "${target}" ] || return 1
|
|
||||||
printf 'Consolidating VMs onto host %s\n' "${target}" \
|
|
||||||
| log -p daemon.warning
|
|
||||||
for h in ${VM_HOSTS}; do
|
|
||||||
[ -n "${h}" ] || continue
|
|
||||||
[ "${h}" != "${target}" ] || continue
|
|
||||||
migrate_vms ${h} ${target}
|
|
||||||
remote_shutdown ${h}
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
handle_online() {
|
handle_online() {
|
||||||
notify_ntfy high white_check_mark,electric_plug
|
notify_ntfy high white_check_mark,electric_plug
|
||||||
|
@ -54,12 +14,6 @@ handle_onbatt() {
|
||||||
|
|
||||||
handle_lowbatt() {
|
handle_lowbatt() {
|
||||||
notify_ntfy max warning,battery
|
notify_ntfy max warning,battery
|
||||||
|
|
||||||
if is_only_ups; then
|
|
||||||
shut_down_all
|
|
||||||
else
|
|
||||||
low_power_mode
|
|
||||||
fi
|
|
||||||
}
|
}
|
||||||
|
|
||||||
handle_commok() {
|
handle_commok() {
|
||||||
|
@ -86,50 +40,15 @@ handle_unknown() {
|
||||||
| log -p daemon.notice
|
| log -p daemon.notice
|
||||||
}
|
}
|
||||||
|
|
||||||
is_only_ups() {
|
|
||||||
for ups in $(upsc -l); do
|
|
||||||
bat_chg=$(upsc "${ups}" battery.charge)
|
|
||||||
bat_low=$(upsc "${ups}" battery.charge.low)
|
|
||||||
if [ "${bat_chg}" -gt "${bat_low}" ]; then
|
|
||||||
return 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
log() {
|
log() {
|
||||||
logger --id=$$ -t "${0##*/}" "$@"
|
logger --id=$$ -t "${0##*/}" "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
low_power_mode() {
|
|
||||||
echo 'UPS battery low, going to low power mode' \
|
|
||||||
| log -p daemon.warning
|
|
||||||
|
|
||||||
remote_shutdown host-dca632474c83.pyrocufflink.red
|
|
||||||
remote_shutdown burp1.pyrocufflink.blue
|
|
||||||
stop_noncritical_vms
|
|
||||||
consolidate_vms
|
|
||||||
}
|
|
||||||
|
|
||||||
migrate_vms() {
|
|
||||||
srcuri=qemu+ssh://root@${1}/system
|
|
||||||
tgturi=qemu+ssh://root@${2}/system
|
|
||||||
for vm in $(virsh -c ${srcuri} list --name); do
|
|
||||||
[ -n "${vm}" ] || continue
|
|
||||||
printf 'Migrating %s from %s to %s\n' "${vm}" "${1}" "${2}" \
|
|
||||||
| log -p daemon.info
|
|
||||||
virsh -c ${srcuri} migrate ${vm} ${tgturi} \
|
|
||||||
--live \
|
|
||||||
--persistent \
|
|
||||||
--undefinesource
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
notify_ntfy() {
|
notify_ntfy() {
|
||||||
priority="${1:-default}"
|
priority="${1:-default}"
|
||||||
tags="${2}"
|
tags="${2}"
|
||||||
|
|
||||||
curl -fsSL https://ntfy.pyrocufflink.blue/pixel5 \
|
curl -fsSL https://ntfy.pyrocufflink.blue/alerts \
|
||||||
-o /dev/null \
|
-o /dev/null \
|
||||||
-H 'Content-Type: text/plain' \
|
-H 'Content-Type: text/plain' \
|
||||||
-H "Priority: ${priority}" \
|
-H "Priority: ${priority}" \
|
||||||
|
@ -137,54 +56,6 @@ notify_ntfy() {
|
||||||
-d "${MESSAGE}"
|
-d "${MESSAGE}"
|
||||||
}
|
}
|
||||||
|
|
||||||
remote_shutdown() {
|
|
||||||
printf 'Shutting down %s\n' "${1}" \
|
|
||||||
| log -p daemon.warning
|
|
||||||
|
|
||||||
# XXX Should probably create a nut user on remote machines
|
|
||||||
ssh \
|
|
||||||
-o BatchMode=yes \
|
|
||||||
-o StrictHostKeyChecking=no \
|
|
||||||
-o ConnectTimeout=5 \
|
|
||||||
-l root \
|
|
||||||
"${1}" \
|
|
||||||
systemctl poweroff
|
|
||||||
}
|
|
||||||
|
|
||||||
shut_down_all() {
|
|
||||||
echo 'Battery low on last UPS, shutting down' \
|
|
||||||
| log -p daemon.alert
|
|
||||||
|
|
||||||
for h in ${VM_HOSTS}; do
|
|
||||||
remote_shutdown ${h}
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
stop_noncritical_vms() {
|
|
||||||
echo 'Stopping all non-critical virtual machines' \
|
|
||||||
| log -p daemon.warning
|
|
||||||
|
|
||||||
t_running=$(mktemp)
|
|
||||||
t_critical=$(mktemp)
|
|
||||||
for name in ${CRITICAL_VMS}; do
|
|
||||||
[ -n "${name}" ] || continue
|
|
||||||
echo "${name}"
|
|
||||||
done | sort > "${t_critical}"
|
|
||||||
for h in ${VM_HOSTS}; do
|
|
||||||
[ -n "${h}" ] || continue
|
|
||||||
ssh -o BatchMode=yes -o StrictHostKeyChecking=no -l root ${h} :
|
|
||||||
uri=qemu+ssh://root@${h}/system
|
|
||||||
virsh -c ${uri} list --name | sort > "${t_running}"
|
|
||||||
for name in $(comm -23 "${t_running}" "${t_critical}"); do
|
|
||||||
[ -n "${name}" ] || continue
|
|
||||||
printf 'Stopping virtual machine: %s\n' "${name}" \
|
|
||||||
| log -p daemon.info
|
|
||||||
#virsh -c ${uri} shutdown ${name}
|
|
||||||
done
|
|
||||||
done
|
|
||||||
|
|
||||||
rm -f "${t_running}" "${t_critical}"
|
|
||||||
}
|
|
||||||
|
|
||||||
printf '%s running as %d %s\n' "${0##*/}" "$(id -u)" "$(whoami)" \
|
printf '%s running as %d %s\n' "${0##*/}" "$(id -u)" "$(whoami)" \
|
||||||
| log -p daemon.info
|
| log -p daemon.info
|
||||||
|
|
Loading…
Reference in New Issue