42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
@metadata_reactor.provides(
|
|
'cron/jobs/check-mail-received',
|
|
'icinga2_api/check-mail-received/services',
|
|
)
|
|
def process_metadata(metadata):
|
|
cron = set()
|
|
services = {}
|
|
|
|
my_mail_address = 'root@{}'.format(metadata.get('hostname'))
|
|
|
|
for name, config in metadata.get('check-mail-received', {}).items():
|
|
cron.add('{minute} {hour} * * * root date | mail -s "daily test mail from {node}" -r {source} {target}'.format(
|
|
minute=node.magic_number%60,
|
|
hour=node.magic_number%24,
|
|
node=node.name,
|
|
source=my_mail_address,
|
|
target=config['email'],
|
|
))
|
|
|
|
services[f'MAIL RECEIVED ON {name}'] = {
|
|
'check_command': 'check_imap_for_mail_from',
|
|
'check_interval': '15m',
|
|
'retry_interval': '5m',
|
|
'vars.sshmon_timeout': 30,
|
|
'vars.imap_host': config['imap_host'],
|
|
'vars.imap_user': config.get('imap_user', config['email']),
|
|
'vars.imap_pass': config['imap_pass'],
|
|
'vars.imap_from': my_mail_address,
|
|
}
|
|
|
|
return {
|
|
'cron': {
|
|
'jobs': {
|
|
'check-mail-received': '\n'.join(sorted(cron)),
|
|
},
|
|
},
|
|
'icinga2_api': {
|
|
'check-mail-received': {
|
|
'services': services,
|
|
},
|
|
},
|
|
}
|