from bundlewrap.metadata import atomic defaults = { 'apt': { 'packages': { 'snapserver': {}, }, }, 'snapserver': { 'sources': set(), }, 'sysctl': { 'options': { 'fs.protected_fifos': '0', }, }, } @metadata_reactor.provides( 'nginx/vhosts/snapserver', ) def nginx(metadata): if not node.has_bundle('nginx'): raise DoNotRunAgain return { 'nginx': { 'vhosts': { 'snapserver': { 'domain': metadata.get('snapserver/domain'), 'locations': { '/': { 'target': f'http://127.0.0.1:1780', 'websockets': True, }, }, 'website_check_path': '/', 'website_check_string': 'Snapweb', }, }, }, } @metadata_reactor.provides( 'firewall/port_rules', 'firewall/port_rules', ) def firewall(metadata): return { 'firewall': { 'port_rules': { '1704/tcp': atomic(metadata.get('snapserver/restrict-to', set())), '1705/tcp': atomic(metadata.get('snapserver/restrict-to', set())), }, }, }