proper return codes and warnings if reboot is required
This commit is contained in:
parent
76639d8472
commit
8bbd8dbec2
22
bin/sau
22
bin/sau
@ -45,8 +45,13 @@ def init():
|
||||
log.addHandler(handler)
|
||||
|
||||
|
||||
def fork_and_reboot():
|
||||
def fork_and_reboot(report_success=True):
|
||||
log = logging.getLogger(sau.LOGNAME)
|
||||
if report_success:
|
||||
exit_code=0
|
||||
else:
|
||||
exit_code=1
|
||||
|
||||
if os.path.exists('/proc/1/comm'):
|
||||
with open('/proc/1/comm', 'r') as f:
|
||||
if f.readline().strip() == 'systemd':
|
||||
@ -56,7 +61,7 @@ def fork_and_reboot():
|
||||
try:
|
||||
pid = os.fork()
|
||||
if pid != 0:
|
||||
sys.exit(0)
|
||||
sys.exit(exit_code)
|
||||
except OSError as err:
|
||||
log.error("Fork #1 failed when going for reboot: {}".format(err))
|
||||
sys.exit(1)
|
||||
@ -83,8 +88,6 @@ def fork_and_reboot():
|
||||
os.dup2(stdout.fileno(), sys.stdout.fileno())
|
||||
os.dup2(stderr.fileno(), sys.stderr.fileno())
|
||||
|
||||
log.warning("New fork!")
|
||||
|
||||
# sleep for a short while to give parent time to exit
|
||||
time.sleep(30)
|
||||
try:
|
||||
@ -121,7 +124,16 @@ def main():
|
||||
elif reboot_recommended:
|
||||
log.info('Rebooting because service restarts did not close all deleted files')
|
||||
if reboot_required or reboot_recommended:
|
||||
fork_and_reboot()
|
||||
fork_and_reboot(report_success=conf.getboolean('default', 'reboot_is_success', Fallback=True))
|
||||
|
||||
if reboot_required:
|
||||
log.warning("Upgrade was success, but a reboot is required due to a system upgrade")
|
||||
return 1
|
||||
elif reboot_recommended:
|
||||
log.warning("Some services still uses old, deleted, files. You probably want to reboot")
|
||||
return 1
|
||||
|
||||
return 0
|
||||
|
||||
|
||||
def _conf_level_to_logging_level(conf_level):
|
||||
|
@ -16,6 +16,9 @@ version_sensitivity=1
|
||||
# not close all deleted files (any platform)
|
||||
do_reboot=no
|
||||
|
||||
# Set to 0 to exit with failure code when going for reboot.
|
||||
reboot_is_success=yes
|
||||
|
||||
# Attempt to do a system upgrade
|
||||
# FreeBSD: upgrade to latest patch version using freebsd-update fetch install
|
||||
# Gentoo: allow upgrade of sys-kernel/-packages, clean old kernels, and update grub-config
|
||||
|
Loading…
Reference in New Issue
Block a user