bundlewrap/bundles/mosquitto/metadata.py

73 lines
1.7 KiB
Python

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',
},
},
},
},
}