bundlewrap/bundles/smartd/metadata.py
Franziska Kunsmann f52df58517
All checks were successful
bundlewrap/pipeline/head This commit looks good
bundles: code style improvements
2021-02-12 20:45:41 +01:00

58 lines
1.3 KiB
Python

defaults = {
'apt': {
'packages': {
'smartmontools': {},
},
},
'icinga2_api': {
'smartd': {
'services': {
'SMARTD PROCESS': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_systemd_unit smartd',
},
},
},
},
}
@metadata_reactor.provides(
'smartd/disks',
)
def zfs_disks_to_metadata(metadata):
disks = set()
for _, config in metadata.get('zfs/pools', {}).items():
if 'device' in config:
disks.add(config['device'])
else:
for t in {'mirror', 'raidz', 'raidz2', 'raidz3'}:
for device in config.get(t, set()):
disks.add(device)
return {
'smartd': {
'disks': disks,
},
}
@metadata_reactor.provides(
'icinga2_api/smartd/services',
)
def icinga(metadata):
services = {}
for disk in metadata.get('smartd/disks', set()):
services[f'SMART STATUS {disk}'] = {
'command_on_monitored_host': f'sudo /usr/local/share/icinga/plugins/check_smart -d {disk} -i auto',
'vars.notification.mail': True,
}
return {
'icinga2_api': {
'smartd': {
'services': services,
},
},
}