Page Menu
Home
VyOS Platform
Search
Configure Global Search
Log In
Files
F35450503
commit-confirm-notify.py
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
1 KB
Referenced Files
None
Subscribers
None
commit-confirm-notify.py
View Options
#!/usr/bin/env python3
import
os
import
sys
import
time
from
argparse
import
ArgumentParser
# Minutes before reboot to trigger notification.
intervals
=
[
1
,
5
,
15
,
60
]
parser
=
ArgumentParser
()
parser
.
add_argument
(
'minutes'
,
type
=
int
,
help
=
'minutes before rollback to trigger notification'
)
parser
.
add_argument
(
'--reboot'
,
action
=
'store_true'
,
help
=
"use 'soft' rollback instead of reboot"
)
def
notify
(
interval
,
reboot
=
False
):
s
=
''
if
interval
==
1
else
's'
time
.
sleep
((
minutes
-
interval
)
*
60
)
if
reboot
:
message
=
(
'"[commit-confirm] System will reboot in '
f
'{interval} minute{s}
\n
to rollback the last commit.
\n
'
'Confirm your changes to cancel the reboot."'
)
os
.
system
(
'wall -n '
+
message
)
else
:
message
=
(
'"[commit-confirm] System will reload previous config in '
f
'{interval} minute{s}
\n
to rollback the last commit.
\n
'
'Confirm your changes to cancel the reload."'
)
os
.
system
(
'wall -n '
+
message
)
if
__name__
==
'__main__'
:
# Must be run as root to call wall(1) without a banner.
if
os
.
getuid
()
!=
0
:
print
(
'This script requires superuser privileges.'
,
file
=
sys
.
stderr
)
exit
(
1
)
args
=
parser
.
parse_args
()
minutes
=
args
.
minutes
reboot
=
args
.
reboot
# 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
,
reboot
=
reboot
)
minutes
-=
minutes
-
interval
exit
(
0
)
File Metadata
Details
Attached
Mime Type
text/x-script.python
Expires
Tue, Dec 9, 10:50 PM (1 d, 5 h)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
3080909
Default Alt Text
commit-confirm-notify.py (1 KB)
Attached To
Mode
rVYOSONEX vyos-1x
Attached
Detach File
Event Timeline
Log In to Comment