lib/get_host: improve abstraction, turn missconfiguration into a warning

Motivation: A warning should encourage consistent usage of inventory.machines setting targetHost inside the machine should be considered a custom override

Changing the warning strings to avoid the term 'nix'/'json' both inventory and nixos machines are nix features
This commit is contained in:
Johannes Kirschbauer
2025-07-04 10:02:06 +02:00
parent 41cafe828f
commit 2e38b314ad

View File

@@ -178,7 +178,7 @@ class Machine:
@dataclass(frozen=True) @dataclass(frozen=True)
class RemoteSource: class RemoteSource:
data: Remote data: Remote
source: Literal["inventory", "nix_machine"] source: Literal["inventory", "machine"]
@API.register @API.register
@@ -191,15 +191,15 @@ def get_host(
machine = Machine(name=name, flake=flake) machine = Machine(name=name, flake=flake)
inv_machine = machine.get_inv_machine() inv_machine = machine.get_inv_machine()
source: Literal["inventory", "nix_machine"] = "inventory" source: Literal["inventory", "machine"] = "inventory"
host_str = inv_machine.get("deploy", {}).get(field) host_str = inv_machine.get("deploy", {}).get(field)
if host_str is None: if host_str is None:
machine.debug( machine.warn(
f"'{field}' is not set in inventory, falling back to slower Nix config, set it either through the Nix or json interface to improve performance" f"'{field}' is not set in `inventory.machines.${name}.deploy.targetHost` - falling back to _slower_ nixos option: `clan.core.networking.targetHost`"
) )
host_str = machine.select(f'config.clan.core.networking."{field}"') host_str = machine.select(f'config.clan.core.networking."{field}"')
source = "nix_machine" source = "machine"
if not host_str: if not host_str:
return None return None