bundlewrap/bundles/navidrome/metadata.py

97 lines
2.6 KiB
Python

defaults = {
'apt': {
'packages': {
'ffmpeg': {},
'mpv': {},
},
},
'navidrome': {
'config': {
'Address': '127.0.0.1',
'DataFolder': '/var/opt/navidrome',
'EnableExternalServices': False,
'EnableInsightsCollector': False,
'LastFM.Enabled': False,
'ListenBrainz.Enabled': False,
'PasswordEncryptionKey': repo.vault.password_for('{} encryption navidrome'.format(node.name)),
'Port': 4533,
'Scanner.Schedule': '@every 72h',
},
},
'zfs': {
'datasets': {
'tank/navidrome': {},
'tank/navidrome/install': {
'mountpoint': '/opt/navidrome',
'needed_by': {
'directory:/opt/navidrome',
},
},
'tank/navidrome/home': {
'mountpoint': '/var/opt/navidrome',
'needed_by': {
'directory:/var/opt/navidrome',
},
},
},
},
}
@metadata_reactor.provides(
'navidrome/config/baseurl',
)
def baseurl(metadata):
return {
'navidrome': {
'config': {
'BaseUrl': f'https://{metadata.get('navidrome/domain')}',
},
},
}
@metadata_reactor.provides(
'nginx/vhosts/navidrome',
)
def nginx(metadata):
if not node.has_bundle('nginx'):
raise DoNotRunAgain
return {
'nginx': {
'vhosts': {
'navidrome': {
'domain': metadata.get('navidrome/domain'),
'locations': {
'/': {
'target': f'http://127.0.0.1:{metadata.get('navidrome/config/Port')}',
},
},
'website_check_path': '/user/login',
'website_check_string': 'Sign in',
},
},
},
}
@metadata_reactor.provides(
'icinga2_api/navidrome/services',
)
def icinga_check_for_new_release(metadata):
version = metadata.get('navidrome/version')
return {
'icinga2_api': {
'pretalx': {
'services': {
'NAVIDROME UPDATE': {
'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release navidrome/navidrome {}'.format(version),
'vars.notification.mail': True,
'check_interval': '60m',
},
},
},
},
}