defaults = {
    'gitea': {
        'database': {
            'username': 'gitea',
            'password': repo.vault.password_for('{} postgresql gitea'.format(node.name)),
            'database': 'gitea',
        },
        'app_name': 'Gitea',
        'lfs_secret_key': repo.vault.password_for('{} gitea lfs_secret_key'.format(node.name)),
        'security_secret_key': repo.vault.password_for('{} gitea security_secret_key'.format(node.name)),
        'oauth_secret_key': repo.vault.password_for('{} gitea oauth_secret_key'.format(node.name)),
        'internal_token': repo.vault.password_for('{} gitea internal_token'.format(node.name)),
    },
    'postgresql': {
        'roles': {
            'gitea': {
                'password': repo.vault.password_for('{} postgresql gitea'.format(node.name)),
            },
        },
        'databases': {
            'gitea': {
                'owner': 'gitea',
            },
        },
    },
    'systemd': {
        'services': {
            'gitea': {
                'content': {
                    'Unit': {
                        'Description': 'gitea',
                        'After': 'syslog.target',
                        'After': 'network.target',
                        'Requires': 'postgresql.service',
                    },
                    'Service': {
                        'RestartSec': '2s',
                        'Type': 'simple',
                        'User': 'git',
                        'Group': 'git',
                        'WorkingDirectory': '/var/lib/gitea/',
                        'ExecStart': '/usr/local/bin/gitea web -c /etc/gitea/app.ini',
                        'Restart': 'always',
                        'Environment': 'USER=git HOME=/home/git GITEA_WORK_DIR=/var/lib/gitea',
                    },
                    'Install': {
                        'WantedBy': 'multi-user.target',
                    },
                },
                'needs': {
                    'action:chmod_gitea',
                    'download:/usr/local/bin/gitea',
                    'file:/etc/systemd/system/gitea.service',
                    'file:/etc/gitea/app.ini',
                },
            },
        },
    },
}


@metadata_reactor.provides(
    'nginx/vhosts',
)
def nginx(metadata):
    if not node.has_bundle('nginx'):
        raise DoNotRunAgain

    return {
        'nginx': {
            'vhosts': {
                metadata.get('gitea/domain'): {
                    'proxy': {
                        '/': {
                            'target': 'http://127.0.0.1:22000',
                        },
                    },
                    'website_check_path': '/user/login',
                    'website_check_string': 'Sign In',
                },
            },
        },
    }


@metadata_reactor.provides(
    'icinga2_api/gitea/services',
)
def icinga_check_for_new_release(metadata):
    return {
        'icinga2_api': {
            'gitea': {
                'services': {
                    'GITEA UPDATE': {
                        'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release go-gitea/gitea v{}'.format(metadata.get('gitea/version')),
                        'vars.notification.mail': True,
                        'check_interval': '60m',
                    },
                },
            },
        },
    }