@metadata_reactor.provides( 'cron/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': { 'check-mail-received': '\n'.join(sorted(cron)), }, 'icinga2_api': { 'check-mail-received': { 'services': services, }, }, }