from hashlib import md5

defaults = {
    'backup-client': {
        # unix user names cannot be longer than 32 characters.
        # bundlewrap raises an error if the name is longer than 30 chars.
        'user-name': 'c-' + md5(node.name.encode('UTF-8')).hexdigest()[:28],
    },
}


@metadata_reactor.provides(
    'cron/jobs/backup',
    'icinga2_api/backup-client/services',
)
def cron(metadata):
    if metadata.get('backups/exclude_from_backups', False):
        return {}

    return {
        'cron': {
            'jobs': {
            # spread backups between 00:00 and 04:59 UTC
                'backup': '{} {} * * *    root    /usr/local/bin/generate-backup-with-retries'.format(
                    (node.magic_number % 60),
                    (node.magic_number % 2),
                ),
            },
        },
        'icinga2_api': {
            'backup-client': {
                'services': {
                    'BACKUP LAST RUN': {
                        'command_on_monitored_host': '/usr/local/share/icinga/plugins/check_backup_last_run',
                    },
                },
            },
        },
    }
