clan-cli backups: use new machine class for eval
This commit is contained in:
@@ -27,11 +27,12 @@ in
|
|||||||
];
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
test_backup_client = { pkgs, lib, ... }:
|
test_backup_client = { pkgs, lib, config, ... }:
|
||||||
let
|
let
|
||||||
dependencies = [
|
dependencies = [
|
||||||
self
|
self
|
||||||
pkgs.stdenv.drvPath
|
pkgs.stdenv.drvPath
|
||||||
|
clan.clanInternals.machines.x86_64-linux.test_backup_client.config.system.clan.deployment.file
|
||||||
] ++ builtins.map (i: i.outPath) (builtins.attrValues self.inputs);
|
] ++ builtins.map (i: i.outPath) (builtins.attrValues self.inputs);
|
||||||
closureInfo = pkgs.closureInfo { rootPaths = dependencies; };
|
closureInfo = pkgs.closureInfo { rootPaths = dependencies; };
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,14 +1,16 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import json
|
import json
|
||||||
|
import logging
|
||||||
|
|
||||||
from ..errors import ClanError
|
from ..errors import ClanError
|
||||||
from ..machines.machines import Machine
|
from ..machines.machines import Machine
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
def create_backup(machine: Machine, provider: str | None = None) -> None:
|
def create_backup(machine: Machine, provider: str | None = None) -> None:
|
||||||
backup_scripts = json.loads(
|
log.info(f"creating backup for {machine.name}")
|
||||||
machine.eval_nix(f"nixosConfigurations.{machine.name}.config.clanCore.backups")
|
backup_scripts = json.loads(machine.eval_nix("config.clanCore.backups"))
|
||||||
)
|
|
||||||
if provider is None:
|
if provider is None:
|
||||||
for provider in backup_scripts["providers"]:
|
for provider in backup_scripts["providers"]:
|
||||||
proc = machine.host.run(
|
proc = machine.host.run(
|
||||||
|
|||||||
@@ -18,9 +18,7 @@ class Backup:
|
|||||||
|
|
||||||
def list_provider(machine: Machine, provider: str) -> list[Backup]:
|
def list_provider(machine: Machine, provider: str) -> list[Backup]:
|
||||||
results = []
|
results = []
|
||||||
backup_metadata = json.loads(
|
backup_metadata = json.loads(machine.eval_nix("config.clanCore.backups"))
|
||||||
machine.eval_nix(f"nixosConfigurations.{machine.name}.config.clanCore.backups")
|
|
||||||
)
|
|
||||||
proc = machine.host.run(
|
proc = machine.host.run(
|
||||||
["bash", "-c", backup_metadata["providers"][provider]["list"]],
|
["bash", "-c", backup_metadata["providers"][provider]["list"]],
|
||||||
stdout=subprocess.PIPE,
|
stdout=subprocess.PIPE,
|
||||||
|
|||||||
@@ -11,12 +11,8 @@ from .list import Backup, list_backups
|
|||||||
def restore_service(
|
def restore_service(
|
||||||
machine: Machine, backup: Backup, provider: str, service: str
|
machine: Machine, backup: Backup, provider: str, service: str
|
||||||
) -> None:
|
) -> None:
|
||||||
backup_metadata = json.loads(
|
backup_metadata = json.loads(machine.eval_nix("config.clanCore.backups"))
|
||||||
machine.eval_nix(f"nixosConfigurations.{machine.name}.config.clanCore.backups")
|
backup_folders = json.loads(machine.eval_nix("config.clanCore.state"))
|
||||||
)
|
|
||||||
backup_folders = json.loads(
|
|
||||||
machine.eval_nix(f"nixosConfigurations.{machine.name}.config.clanCore.state")
|
|
||||||
)
|
|
||||||
folders = backup_folders[service]["folders"]
|
folders = backup_folders[service]["folders"]
|
||||||
env = os.environ.copy()
|
env = os.environ.copy()
|
||||||
env["ARCHIVE_ID"] = backup.archive_id
|
env["ARCHIVE_ID"] = backup.archive_id
|
||||||
@@ -77,11 +73,7 @@ def restore_backup(
|
|||||||
if service is None:
|
if service is None:
|
||||||
for backup in backups:
|
for backup in backups:
|
||||||
if backup.archive_id == archive_id:
|
if backup.archive_id == archive_id:
|
||||||
backup_folders = json.loads(
|
backup_folders = json.loads(machine.eval_nix("config.clanCore.state"))
|
||||||
machine.eval_nix(
|
|
||||||
f"nixosConfigurations.{machine.name}.config.clanCore.state"
|
|
||||||
)
|
|
||||||
)
|
|
||||||
for _service in backup_folders:
|
for _service in backup_folders:
|
||||||
restore_service(machine, backup, provider, _service)
|
restore_service(machine, backup, provider, _service)
|
||||||
else:
|
else:
|
||||||
|
|||||||
Reference in New Issue
Block a user