defaults = {
    'backups': {
        'paths': {
            '/opt/matrix-dimension',
            '/var/opt/matrix-dimension',
        },
    },
    'icinga2_api': {
        'matrix-dimension': {
            'services': {
                'MATRIX-DIMENSION PROCESS': {
                    'command_on_monitored_host': '/usr/lib/nagios/plugins/check_procs -a matrix-dimension -c 1:',
                },
            },
        },
    },
    'matrix-dimension': {
        'install_dir': '/opt/matrix-dimension',
        'data_dir': '/var/opt/matrix-dimension',
        'database': {
            'user': 'matrix-dimension',
            'password': repo.vault.password_for('{} postgresql matrix-dimension'.format(node.name)),
            'database': 'matrix-dimension',
        },
    },
    'postgresql': {
        'roles': {
            'matrix-dimension': {
                'password': repo.vault.password_for('{} postgresql matrix-dimension'.format(node.name)),
            },
        },
        'databases': {
            'matrix-dimension': {
                'owner': 'matrix-dimension',
            },
        },
    },
    'users': {
        'matrix-dimension': {
            'home': '/var/opt/matrix-dimension',
        },
    },
}


@metadata_reactor.provides(
    'nginx/vhosts/matrix-dimension',
)
def nginx_config(metadata):
    return {
        'nginx': {
            'vhosts': {
                'matrix-dimension': {
                    'domain': metadata.get('matrix-dimension/url'),
                    'do_not_set_content_security_headers': True,
                    'max_body_size': '50M',
                    'locations': {
                        '/': {
                            'target': 'http://127.0.0.1:20030',
                        },
                    },
                },
            },
        },
    }


@metadata_reactor.provides(
    'zfs/datasets',
)
def zfs(metadata):
    return {
        'zfs': {
            'datasets': {
                'tank/matrix-dimension': {},
                'tank/matrix-dimension/install': {
                    'mountpoint': metadata.get('matrix-dimension/install_dir'),
                    'needed_by': {
                        'directory:{}'.format(metadata.get('matrix-dimension/install_dir')),
                    },
                },
                'tank/matrix-dimension/var': {
                    'mountpoint': metadata.get('matrix-dimension/data_dir'),
                    'needed_by': {
                        'directory:{}'.format(metadata.get('matrix-dimension/data_dir')),
                    },
                },
            },
        },
    }


# XXX enable this once there are releases for matrix-dimension
#@metadata_reactor.provides(
#    'icinga2_api/matrix-dimension/services',
#)
#def icinga_check_for_new_release(metadata):
#    return {
#        'icinga2_api': {
#            'matrix-dimension': {
#                'services': {
#                    'MATRIX-DIMENSION UPDATE': {
#                        'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_github_for_new_release turt2live/matrix-dimension {}'.format(metadata.get('matrix-dimension/version')),
#                        'vars.notification.mail': True,
#                        'check_interval': '60m',
#                    },
#                },
#            },
#        },
#    }
