move checks if targetHost/buildHost is set to cli
All checks were successful
checks-impure / test (pull_request) Successful in 1m39s
checks / test (pull_request) Successful in 2m45s

This commit is contained in:
Jörg Thalheim 2024-02-06 14:45:21 +01:00
parent 35bb076729
commit ad1a87fc14
4 changed files with 13 additions and 10 deletions

View File

@ -14,7 +14,8 @@
- user@machine2.example.com
- root@example.com:2222&IdentityFile=/path/to/private/key
'';
type = lib.types.str;
default = null;
type = lib.types.nullOr lib.types.str;
};
buildHost = lib.mkOption {
description = ''

View File

@ -20,13 +20,13 @@
'';
};
deployment.buildHost = lib.mkOption {
type = lib.types.str;
type = lib.types.nullOr lib.types.str;
description = ''
the hostname of the build host where nixos-rebuild is run
'';
};
deployment.targetHost = lib.mkOption {
type = lib.types.str;
type = lib.types.nullOr lib.types.str;
description = ''
the hostname of the target host to be deployed to
'';

View File

@ -3,6 +3,7 @@ import logging
from pathlib import Path
from ..cmd import run
from ..errors import ClanError
from ..nix import nix_build, nix_config, nix_eval, nix_metadata
from ..ssh import Host, parse_deployment_address
@ -48,10 +49,14 @@ class Machine:
@property
def target_host(self) -> str:
# deploymentAddress is deprecated.
return (
val = (
self.deployment_info.get("targetHost")
or self.deployment_info["deploymentAddress"]
)
if val is None:
msg = f"the 'clan.networking.targetHost' nixos option is not set for machine '{self.name}'"
raise ClanError(msg)
return val
@target_host.setter
def target_host(self, value: str) -> None:

View File

@ -154,14 +154,11 @@ def get_all_machines(clan_dir: Path) -> HostGroup:
hosts = []
for name, machine_data in machines.items():
# very hacky. would be better to do a MachinesGroup instead
machine = Machine(name=name, flake=clan_dir, deployment_info=machine_data)
host = parse_deployment_address(
name,
machine_data.get("targetHost") or machine_data.get("deploymentAddress"),
meta={
"machine": Machine(
name=name, flake=clan_dir, deployment_info=machine_data
)
},
host=machine.target_host,
meta={"machine": machine},
)
hosts.append(host)
return HostGroup(hosts)