added support for silent-reboot and gentoo without gentoo-sources kernel
This commit is contained in:
parent
79dd24809d
commit
1322918dcc
@ -1,3 +1,4 @@
|
||||
import os
|
||||
import platform
|
||||
|
||||
import sau.errors
|
||||
@ -9,9 +10,10 @@ def get_platform():
|
||||
if platform.system() == 'FreeBSD':
|
||||
platform_mod = sau.freebsd
|
||||
elif platform.system() == 'Linux':
|
||||
if 'gentoo' in platform.release():
|
||||
if os.path.exists('/usr/bin/emerge'):
|
||||
platform_mod = sau.gentoo
|
||||
|
||||
|
||||
if not platform_mod:
|
||||
raise sau.errors.PlatformNotSupported("System: {} Release: {} Version: {} is not supported".format(
|
||||
platform.system(),
|
||||
|
@ -12,6 +12,10 @@ import sau.platforms
|
||||
|
||||
proc_fd_map_re = re.compile(r'^.*(/[^\(]*) \(deleted\)$')
|
||||
|
||||
def _warn(policy, msg):
|
||||
if not policy.startswith('silent'):
|
||||
log.warning(msg)
|
||||
|
||||
def _get_deleted_open_files(proc):
|
||||
log = logging.getLogger(sau.LOGNAME)
|
||||
files = set()
|
||||
@ -117,11 +121,10 @@ def restart_services():
|
||||
elif policy == 'warn':
|
||||
log.warning('Service "{}" has open deleted files and should be restarted'.format(service))
|
||||
continue
|
||||
elif policy == 'reboot':
|
||||
log.warning('Rebooting because {} has opened files'.format(service))
|
||||
elif 'reboot' in policy:
|
||||
_warn('Rebooting because {} has opened files'.format(service))
|
||||
recommend_restart = True
|
||||
if not ( policy.startswith('silent') or policy == 'reboot' ):
|
||||
log.warning('Restarting service {}'.format(service))
|
||||
_warn('Restarting service {}'.format(service))
|
||||
platform.restart_service(service)
|
||||
|
||||
tested_parents = set()
|
||||
@ -137,14 +140,15 @@ def restart_services():
|
||||
if _get_deleted_open_files(proc):
|
||||
tested_parents.add(parent)
|
||||
service = _get_service_from_proc(parent)
|
||||
policy = _get_service_restart_policy(service)
|
||||
if not service:
|
||||
log.warning('could not re-check process {} - failed to identify service'.format(proc))
|
||||
_warn('could not re-check process {} - failed to identify service'.format(proc))
|
||||
recommend_restart = True
|
||||
continue
|
||||
|
||||
log.debug('{} is in service {}'.format(proc, service))
|
||||
if parent_name in services and not services[parent_name]:
|
||||
log.warning('{} (parent {}) does not belong to a service and could not be restarted'.format(proc, parent))
|
||||
_warn('{} (parent {}) does not belong to a service and could not be restarted'.format(proc, parent))
|
||||
recommend_restart = True
|
||||
continue
|
||||
elif parent_name in services:
|
||||
@ -152,7 +156,7 @@ def restart_services():
|
||||
log.debug('service {} has policy {}'.format(service, policy))
|
||||
if policy in ('ignore', 'warn'):
|
||||
continue
|
||||
log.warning('{} (parent {}) still has deleted files open'.format(proc, parent))
|
||||
_warn('{} (parent {}) still has deleted files open'.format(proc, parent))
|
||||
recommend_restart = True
|
||||
return recommend_restart
|
||||
|
||||
@ -160,7 +164,7 @@ def _get_service_restart_policy(service):
|
||||
log = logging.getLogger(sau.LOGNAME)
|
||||
conf = sau.config
|
||||
policy = conf.get('services', service, fallback=None)
|
||||
if policy and policy.lower() in ('restart', 'warn', 'ignore', 'silent-restart', 'reboot'):
|
||||
if policy and policy.lower() in ('restart', 'warn', 'ignore', 'silent-restart', 'silent-reboot'):
|
||||
return policy.lower()
|
||||
elif policy:
|
||||
log.warning('service policy {} for {} is invalid'.format(policy, service))
|
||||
|
Loading…
Reference in New Issue
Block a user