diff options
author | erkin <e.altunbas@vyos.io> | 2021-04-17 02:04:35 +0300 |
---|---|---|
committer | erkin <e.altunbas@vyos.io> | 2021-04-17 02:04:35 +0300 |
commit | 3604ccf91f0615d6d51310bb74109eb1594e7173 (patch) | |
tree | b7d5500ca636c2b40130311329f1640da1dc3eaa /src/helpers/commit-confirm-notify.py | |
parent | 256f9ac998699221bb62edb5024529c6db798b24 (diff) | |
download | vyos-1x-3604ccf91f0615d6d51310bb74109eb1594e7173.tar.gz vyos-1x-3604ccf91f0615d6d51310bb74109eb1594e7173.zip |
T3472: Move over commit-confirm-notify.py from vyatta-config-mgmt
Diffstat (limited to 'src/helpers/commit-confirm-notify.py')
-rwxr-xr-x | src/helpers/commit-confirm-notify.py | 30 |
1 files changed, 30 insertions, 0 deletions
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) |