bws = libs.bwsops.BwSops("secrets.json")
uberspaceify = libs.uberspace.Uberspaceify()

def generate_default_repos(node_name, username):
    return {
        "main-cyan": {
            "repo_password": bws.get([node_name, "clerie-backup-job-main"]),
            "repo_url": f"https://cyan.backup.clerie.de/{node_name}/main",
            "auth_username": node_name,
            "auth_password": bws.get([node_name, "clerie-backup-target-cyan"]),
            "files": [
                f"/home/{username}",
                f"/var/www/virtual/{username}",
            ],
            "excludes": [
                "/home/*/.cache",
            ],
        },
        "main-magenta": {
            "repo_password": bws.get([node_name, "clerie-backup-job-main"]),
            "repo_url": f"https://magenta.backup.clerie.de/{node_name}/main",
            "auth_username": node_name,
            "auth_password": bws.get([node_name, "clerie-backup-target-magenta"]),
            "files": [
                f"/home/{username}",
                f"/var/www/virtual/{username}",
            ],
            "excludes": [
                "/home/*/.cache",
            ],
        },
    }

nodes = uberspaceify.nodes({
    "clerie.uber.space": {
        "bundles": (
            "uberspace-redirect-clerie",
            "uberspace-clerie-backup",
            "uberspace-crontab-dir",
        ),
        "metadata": {
            "clerie-backup": {
                "repos": generate_default_repos("clerie.uber.space", "clerie"),
            },
            "cron": {
                "jobs": {
                    "backup_main-cyan": "42 */2 * * * clerie-backup main-cyan backup",
                    "backup_main-cyan_mysql": "52 */2 * * * clerie-backup main-cyan restic backup --stdin-filename mysql-databases.sql --stdin-from-command -- mysqldump --all-databases",
                    "backup_main-magenta": "13 */2 * * * clerie-backup main-magenta backup",
                    "backup_main-magenta_mysql": "23 */2 * * * clerie-backup main-magenta restic backup --stdin-filename mysql-databases.sql --stdin-from-command -- mysqldump --all-databases",
                },
            },
        },
    },
    "cleriewi.uber.space": {
        "bundles": (
            "uberspace-redirect-clerie",
            "uberspace-clerie-backup",
            "uberspace-crontab-dir",
        ),
        "metadata": {
            "clerie-backup": {
                "repos": generate_default_repos("cleriewi.uber.space", "cleriewi"),
            },
            "cron": {
                "jobs": {
                    "backup_main-cyan": "42 */2 * * * clerie-backup main-cyan backup",
                    "backup_main-magenta": "13 */2 * * * clerie-backup main-magenta backup",
                },
            },
        },
    },
})