bundlewrap/bundles/systemd-timers/metadata.py

71 lines
2.1 KiB
Python

defaults = {
'systemd-timers': {},
}
@metadata_reactor.provides(
'systemd/units',
'systemd/services',
)
def systemd(metadata):
units = {}
services = {}
for name, config in metadata.get('systemd-timers').items():
units.update({
f'{name}.timer': {
'Unit':{
'Description': f'{name} timer',
'After': config.get('after', set()),
},
'Timer': {
'OnCalendar': config['when'],
'Persistent': config.get('persistent', False),
'Unit': f'{name}.service',
},
},
f'{name}.service': {
'Unit':{
'Description': f'{name} timer service',
},
'Service': {
'User': config.get('user', 'root'),
'ExecStart': config['command'],
'Environment': config.get('env'),
'Nice': config.get('nice', 10),
},
},
})
if config.get('working_dir'):
units[f'{name}.service']['Service']['WorkingDirectory'] = config['working_dir']
if config.get('success_exit_status'):
units[f'{name}.service']['Service']['SuccessExitStatus'] = config['success_exit_status']
if config.get('kill_mode'):
units[f'{name}.service']['Service']['KillMode'] = config['kill_mode']
if config.get('RuntimeMaxSec'):
units[f'{name}.service']['Service']['RuntimeMaxSec'] = config['RuntimeMaxSec']
services[f'{name}.timer'] = {}
return {
'systemd': {
'units': units,
'services': services,
},
}
@metadata_reactor.provides(
'monitoring/services',
)
def monitoring(metadata):
return {
'monitoring': {
'services': {
f'{name}.timer': {
'vars.command': f'/usr/lib/nagios/plugins/check_systemd_timer {name}',
}
for name in metadata.get('systemd-timers')
},
},
}