From 3604ccf91f0615d6d51310bb74109eb1594e7173 Mon Sep 17 00:00:00 2001
From: erkin <e.altunbas@vyos.io>
Date: Sat, 17 Apr 2021 02:04:35 +0300
Subject: T3472: Move over commit-confirm-notify.py from vyatta-config-mgmt

---
 src/helpers/commit-confirm-notify.py | 30 ++++++++++++++++++++++++++++++
 1 file changed, 30 insertions(+)
 create mode 100755 src/helpers/commit-confirm-notify.py

(limited to 'src')

diff --git a/src/helpers/commit-confirm-notify.py b/src/helpers/commit-confirm-notify.py
new file mode 100755
index 000000000..eb7859ffa
--- /dev/null
+++ b/src/helpers/commit-confirm-notify.py
@@ -0,0 +1,30 @@
+#!/usr/bin/env python3
+import os
+import sys
+import time
+
+# Minutes before reboot to trigger notification.
+intervals = [1, 5, 15, 60]
+
+def notify(interval):
+    s = "" if interval == 1 else "s"
+    time.sleep((minutes - interval) * 60)
+    message = ('"[commit-confirm] System is going to reboot in '
+               f'{interval} minute{s} to rollback the last commit.\n'
+               'Confirm your changes to cancel the reboot."')
+    os.system("wall -n " + message)
+
+if __name__ == "__main__":
+    # Must be run as root to call wall(1) without a banner.
+    if len(sys.argv) != 2 or os.getuid() != 0:
+        exit(1)
+    minutes = int(sys.argv[1])
+    # Drop the argument from the list so that the notification
+    # doesn't kick in immediately.
+    if minutes in intervals:
+        intervals.remove(minutes)
+    for interval in sorted(intervals, reverse=True):
+        if minutes >= interval:
+            notify(interval)
+            minutes -= (minutes - interval)
+    exit(0)
-- 
cgit v1.2.3