from bundlewrap.metadata import atomic defaults = { 'apt': { 'packages': { 'mosquitto': {}, 'mosquitto-clients': {}, }, }, 'mosquitto': { 'listeners': { '1883': {}, }, }, } @metadata_reactor.provides( 'iptables/port_rules', ) def iptables(metadata): sources = metadata.get('mosquitto/restrict-to', {'*'}) result = {} for listener in metadata.get('mosquitto/listeners').keys(): result[listener] = atomic(sources) return { 'iptables': { 'port_rules': result, }, }