clan-cli install: use new Machine interface, fix mypy error
All checks were successful
checks-impure / test (pull_request) Successful in 1m18s
checks / test (pull_request) Successful in 2m38s

This commit is contained in:
lassulus 2024-01-24 13:23:10 +01:00
parent 6ba641c974
commit abaa218e27
2 changed files with 19 additions and 7 deletions

View File

@ -41,8 +41,9 @@ in
dependencies = [
self
pkgs.stdenv.drvPath
self.nixosConfigurations.test_install_machine.config.system.build.toplevel
self.nixosConfigurations.test_install_machine.config.system.build.diskoScript
clan.clanInternals.machines.x86_64-linux.test_install_machine.config.system.build.toplevel
clan.clanInternals.machines.x86_64-linux.test_install_machine.config.system.build.diskoScript
clan.clanInternals.machines.x86_64-linux.test_install_machine.config.system.clan.deployment.file
pkgs.nixos-anywhere
] ++ builtins.map (i: i.outPath) (builtins.attrValues self.inputs);
closureInfo = pkgs.closureInfo { rootPaths = dependencies; };

View File

@ -1,5 +1,6 @@
import argparse
import importlib
import logging
from dataclasses import dataclass
from pathlib import Path
from tempfile import TemporaryDirectory
@ -9,13 +10,20 @@ from ..machines.machines import Machine
from ..nix import nix_shell
from ..secrets.generate import generate_secrets
log = logging.getLogger(__name__)
def install_nixos(machine: Machine, kexec: str | None = None) -> None:
log.info(f"deployment address1: {machine.deployment_info['deploymentAddress']}")
secrets_module = importlib.import_module(machine.secrets_module)
log.info(f"installing {machine.name}")
log.info(f"using secret store: {secrets_module.SecretStore}")
secret_store = secrets_module.SecretStore(machine=machine)
h = machine.host
log.info(f"deployment address2: {machine.deployment_info['deploymentAddress']}")
target_host = f"{h.user or 'root'}@{h.host}"
log.info(f"target host: {target_host}")
flake_attr = h.meta.get("flake_attr", "")
@ -23,11 +31,11 @@ def install_nixos(machine: Machine, kexec: str | None = None) -> None:
with TemporaryDirectory() as tmpdir_:
tmpdir = Path(tmpdir_)
upload_dir = machine.secrets_upload_directory
upload_dir_ = machine.secrets_upload_directory
if upload_dir.startswith("/"):
upload_dir = upload_dir[1:]
upload_dir = tmpdir / upload_dir
if upload_dir_.startswith("/"):
upload_dir_ = upload_dir_[1:]
upload_dir = tmpdir / upload_dir_
upload_dir.mkdir(parents=True)
secret_store.upload(upload_dir)
@ -69,7 +77,10 @@ def install_command(args: argparse.Namespace) -> None:
kexec=args.kexec,
)
machine = Machine(opts.machine, flake=opts.flake)
machine.deployment_address = opts.target_host
machine.get_deployment_info()
machine.deployment_info["deploymentAddress"] = opts.target_host
log.info(f"target host: {opts.target_host}")
log.info(f"deployment address: {machine.deployment_info['deploymentAddress']}")
install_nixos(machine, kexec=opts.kexec)