defaults = {
    'apt': {
        'packages': {
            'imagemagick': {},
            'ffmpeg': {},
        },
    },
    'backups': {
        'paths': {
            '/var/matrix/media',
        },
    },
    'icinga2_api': {
        'matrix-media-repo': {
            'services': {
                'MATRIX-MEDIA-REPO PROCESS': {
                    'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -a media_repo -c 1:',
                    'vars.notification.sms': True,
                },
            },
        },
    },
    'matrix-media-repo': {
        'database': {
            'user': 'matrix-media-repo',
            'password': repo.vault.password_for('{} postgresql matrix-media-repo'.format(node.name)),
            'database': 'matrix-media-repo',
        },
        'archive': {
            'self-service': False,
        },
        'download_max_mb': 100,
        'preview_max_mb': 10,
        'shared-secret-token': repo.vault.password_for('{} matrix-media-repo shared-secret-token'.format(node.name)),
        'upload_max_mb': 100,
    },
    'postgresql': {
        'roles': {
            'matrix-media-repo': {
                'password': repo.vault.password_for('{} postgresql matrix-media-repo'.format(node.name)),
            },
        },
        'databases': {
            'matrix-media-repo': {
                'owner': 'matrix-media-repo',
            },
        },
    },
    'zfs': {
        'datasets': {
            'tank/matrix-media-repo': {},
            'tank/matrix-media-repo/install': {
                'mountpoint': '/opt/matrix-media-repo',
                'needed_by': {
                    'directory:/opt/matrix-media-repo',
                },
            },
            'tank/matrix-media-repo/media': {
                'mountpoint': '/var/matrix/media',
                'compression': 'on',
                'needed_by': {
                    'directory:/var/matrix/media',
                },
            },
        },
    },
}

if node.os == 'debian' and node.os_version[0] <= 10:
        defaults['apt']['repos'] = {
            'backports': {
                'install_gpg_key': False, # default debian signing key
                'items': {
                    'deb http://deb.debian.org/debian {os_release}-backports main',
                },
            },
        }

if node.has_bundle('telegraf'):
    defaults['telegraf'] = {
        'input_plugins': {
            'prometheus': {
                'matrix_media_repo': {
                    'urls': [
                        'http://127.0.0.1:20091/metrics'
                    ],
                    'metric_version': 2,
                },
            },
        },
    }


@metadata_reactor.provides(
    'matrix-media-repo/workers',
)
def cpu_to_workers(metadata):
    return {
        'matrix-media-repo': {
            'workers': max(metadata.get('vm/cpu', 1), 4),
        },
    }


@metadata_reactor.provides(
    'icinga2_api/matrix-media-repo/services',
)
def icinga_check_for_new_release(metadata):
    return {
        'icinga2_api': {
            'matrix-media-repo': {
                'services': {
                    'MATRIX-MEDIA-REPO UPDATE': {
                        'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release turt2live/matrix-media-repo {}'.format(metadata.get('matrix-media-repo/version')),
                        'vars.notification.mail': True,
                        'check_interval': '60m',
                    },
                },
            },
        },
    }
