defaults = { 'zfs': { 'datasets': { 'tank/element-web': { 'mountpoint': '/opt/element-web', 'needed_by': { 'directory:/opt/element-web', }, }, }, }, } @metadata_reactor.provides( 'nodejs/version', ) def nodejs(metadata): version = tuple([int(i) for i in metadata.get('element-web/version')[1:].split('.')]) if version >= (1, 11, 71): return { 'nodejs': { 'version': 22, }, } else: return { 'nodejs': { 'version': 18, }, } @metadata_reactor.provides( 'nginx/vhosts/element-web', ) def nginx_config(metadata): return { 'nginx': { 'vhosts': { 'element-web': { 'domain': metadata.get('element-web/url'), 'webroot': '/opt/element-web/webapp/', }, }, }, } @metadata_reactor.provides( 'icinga2_api/element-web/services', ) def icinga_check_for_new_release(metadata): return { 'icinga2_api': { 'element-web': { 'services': { 'ELEMENT-WEB UPDATE': { 'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release vector-im/element-web {}'.format(metadata.get('element-web/version')), 'vars.notification.mail': True, 'check_interval': '60m', }, }, }, }, }