]> git.proxmox.com Git - pve-cluster.git/commitdiff
ensure problematic ha service is stopped during update
authorThomas Lamprecht <t.lamprecht@proxmox.com>
Thu, 7 Dec 2017 14:10:02 +0000 (15:10 +0100)
committerWolfgang Bumiller <w.bumiller@proxmox.com>
Thu, 7 Dec 2017 14:26:00 +0000 (15:26 +0100)
Add a postinst file which stops, if running, the ha service before it
configures pve-cluster and starts them again, if enabled.
Do this only if the version installed before the upgrade is <= 2.0-3

dpkg-query has Version and Config-Version

Version is at this time the new unpacked version already, so we need
to check both to catch all cases.

Signed-off-by: Thomas Lamprecht <t.lamprecht@proxmox.com>
debian/pve-cluster.postinst [new file with mode: 0644]

diff --git a/debian/pve-cluster.postinst b/debian/pve-cluster.postinst
new file mode 100644 (file)
index 0000000..54aa8a5
--- /dev/null
@@ -0,0 +1,44 @@
+#!/bin/bash
+
+# abort if any command returns an error value
+set -e
+
+# handle problem with ha-manager <= 2.0-3 which cannot handle a pmxcfs
+# restart correctly
+# TODO: remove in PVE 6.0
+ha_version=$(dpkg-query --showformat='${Version}' --show pve-ha-manager)
+hacfg_version=$(dpkg-query --showformat='${Config-Version}' --show pve-ha-manager)
+
+function handlehaservice {
+  if test -z "$1"; then
+    # no old version, nothing to do
+    true
+  else
+    if dpkg --compare-versions "$ha_version" '<=' '2.0-3' || dpkg --compare-versions "$hacfg_version" '<=' '2.0-3'; then
+      if systemctl --quiet "$2" "pve-ha-crm.service"; then
+        systemctl "$3" "pve-ha-crm.service"
+      fi
+      if systemctl --quiet "$2" "pve-ha-lrm.service"; then
+        systemctl "$3" "pve-ha-lrm.service"
+      fi
+    fi
+  fi
+}
+
+
+case "$1" in
+  configure)
+    handlehaservice "$2" 'is-active' 'stop'
+    ;;
+
+esac
+
+#DEBHELPER#
+
+case "$1" in
+  configure)
+    handlehaservice "$2" 'is-enabled' 'start'
+    ;;
+
+esac
+