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 = [ dependencies = [
self self
pkgs.stdenv.drvPath pkgs.stdenv.drvPath
self.nixosConfigurations.test_install_machine.config.system.build.toplevel clan.clanInternals.machines.x86_64-linux.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.diskoScript
clan.clanInternals.machines.x86_64-linux.test_install_machine.config.system.clan.deployment.file
pkgs.nixos-anywhere pkgs.nixos-anywhere
] ++ 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; };

View File

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