lib/convert_inventory_to_machines: add classmethod for common conversion of Machine and InventoryMachine

This commit is contained in:
Johannes Kirschbauer
2025-07-04 10:18:14 +02:00
parent 2e38b314ad
commit 512f7294e6
2 changed files with 19 additions and 7 deletions

View File

@@ -16,19 +16,22 @@ from clan_lib.nix_models.clan import InventoryMachine
log = logging.getLogger(__name__)
def convert_inventory_to_machines(
flake: Flake, machines: dict[str, InventoryMachine]
) -> dict[str, Machine]:
return {
name: Machine.from_inventory(name, flake, inventory_machine)
for name, inventory_machine in machines.items()
}
def list_full_machines(flake: Flake) -> dict[str, Machine]:
"""
Like `list_machines`, but returns a full 'machine' instance for each machine.
"""
machines = list_machines(flake)
res: dict[str, Machine] = {}
for name in machines:
machine = Machine(name=name, flake=flake)
res[machine.name] = machine
return res
return convert_inventory_to_machines(flake, machines)
def query_machines_by_tags(

View File

@@ -29,6 +29,15 @@ class Machine:
name: str
flake: Flake
@classmethod
def from_inventory(
cls,
name: str,
flake: Flake,
_inventory_machine: InventoryMachine,
) -> "Machine":
return cls(name=name, flake=flake)
def get_inv_machine(self) -> "InventoryMachine":
return get_machine(self.flake, self.name)