from bundlewrap.metadata import atomic defaults = { 'apt': { 'packages': { 'mosquitto': {}, 'mosquitto-clients': {}, }, }, 'icinga2_api': { 'mosquitto': { 'services': { 'MOSQUITTO PROCESS': { 'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -C mosquitto -c 1:', }, }, }, }, 'mosquitto': { 'listeners': { '1883': {}, }, }, } if node.has_bundle('telegraf'): defaults['apt']['packages']['python3-paho-mqtt'] = {} @metadata_reactor.provides( 'firewall/port_rules', ) def firewall(metadata): sources = metadata.get('mosquitto/restrict-to', {'*'}) result = {} for listener in metadata.get('mosquitto/listeners').keys(): result[f'{listener}/tcp'] = atomic(sources) return { 'firewall': { 'port_rules': result, }, } @metadata_reactor.provides( 'telegraf/input_plugins/execd/tasmota', ) def telegraf(metadata): topic = metadata.get('mosquitto/tasmota-telegraf-topic', None) if not topic: return {} return { 'telegraf': { 'input_plugins': { 'execd': { 'tasmota': { 'command': [ '/usr/local/bin/tasmota-telegraf-plugin', '127.0.0.1', topic ], 'signal': 'none', 'restart_delay': '1s', 'data_format': 'influx', }, }, }, }, }