chore(nix_models): migrate import to use exported clan models

This commit is contained in:
Johannes Kirschbauer
2025-05-27 10:27:46 +02:00
parent 1ef2e13c85
commit d482e22610
14 changed files with 223 additions and 132 deletions

View File

@@ -9,7 +9,7 @@ from clan_lib.cmd import run
from clan_lib.errors import ClanCmdError, ClanError from clan_lib.errors import ClanCmdError, ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix import nix_eval from clan_lib.nix import nix_eval
from clan_lib.nix_models.inventory import Meta from clan_lib.nix_models.clan import InventoryMeta as Meta
log = logging.getLogger(__name__) log = logging.getLogger(__name__)

View File

@@ -2,7 +2,8 @@ from dataclasses import dataclass
from clan_lib.api import API from clan_lib.api import API
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Inventory, Meta from clan_lib.nix_models.clan import Inventory
from clan_lib.nix_models.clan import InventoryMeta as Meta
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.persist.util import set_value_by_path from clan_lib.persist.util import set_value_by_path

View File

@@ -9,12 +9,8 @@ from clan_lib.dirs import get_clan_flake_toplevel_or_env
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.git import commit_file from clan_lib.git import commit_file
from clan_lib.nix_models.inventory import ( from clan_lib.nix_models.clan import InventoryMachine
Machine as InventoryMachine, from clan_lib.nix_models.clan import InventoryMachineDeploy as MachineDeploy
)
from clan_lib.nix_models.inventory import (
MachineDeploy,
)
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.persist.util import set_value_by_path from clan_lib.persist.util import set_value_by_path
from clan_lib.templates import ( from clan_lib.templates import (

View File

@@ -11,7 +11,7 @@ from clan_lib.errors import ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.machines.actions import get_machine from clan_lib.machines.actions import get_machine
from clan_lib.machines.machines import Machine from clan_lib.machines.machines import Machine
from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.clan import InventoryMachine
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_cli.completions import add_dynamic_completer, complete_tags from clan_cli.completions import add_dynamic_completer, complete_tags

View File

@@ -13,7 +13,7 @@ from clan_lib.errors import ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.machines.machines import Machine from clan_lib.machines.machines import Machine
from clan_lib.nix import nix_build, nix_command from clan_lib.nix import nix_build, nix_command
from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.clan import InventoryMachine
from clan_cli.machines.create import CreateOptions, create_machine from clan_cli.machines.create import CreateOptions, create_machine
from clan_cli.vars.generate import generate_vars from clan_cli.vars.generate import generate_vars

View File

@@ -1,4 +1,7 @@
from clan_lib.nix_models.inventory import Inventory, Machine, Meta, Service from clan_lib.nix_models.clan import Inventory
from clan_lib.nix_models.clan import InventoryMachine as Machine
from clan_lib.nix_models.clan import InventoryMeta as Meta
from clan_lib.nix_models.clan import InventoryService as Service
def test_make_meta_minimal() -> None: def test_make_meta_minimal() -> None:

View File

@@ -8,9 +8,11 @@ from clan_cli.tests.fixtures_flakes import FlakeForTest
from clan_lib.api.modules import list_modules from clan_lib.api.modules import list_modules
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix import nix_eval, run from clan_lib.nix import nix_eval, run
from clan_lib.nix_models.inventory import ( from clan_lib.nix_models.clan import (
Machine, InventoryMachine as Machine,
MachineDeploy, )
from clan_lib.nix_models.clan import (
InventoryMachineDeploy as MachineDeploy,
) )
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.persist.util import set_value_by_path from clan_lib.persist.util import set_value_by_path

View File

@@ -7,7 +7,7 @@ from clan_lib.cmd import CmdOut, RunOpts, run
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix import nix_command, nix_metadata, nix_shell from clan_lib.nix import nix_command, nix_metadata, nix_shell
from clan_lib.nix_models.inventory import Inventory from clan_lib.nix_models.clan import Inventory
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.templates import ( from clan_lib.templates import (
InputPrio, InputPrio,

View File

@@ -13,7 +13,7 @@ Interacting with 'clan_lib.inventory' is NOT recommended and will be removed
from clan_lib.api import API from clan_lib.api import API
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.nix_models.inventory import Inventory from clan_lib.nix_models.clan import Inventory
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore

View File

@@ -1,8 +1,8 @@
from clan_lib.api import API from clan_lib.api import API
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.machines.machines import Machine from clan_lib.machines.machines import Machine
from clan_lib.nix_models.inventory import ( from clan_lib.nix_models.clan import (
Machine as InventoryMachine, InventoryMachine,
) )
from clan_lib.persist.inventory_store import InventoryStore from clan_lib.persist.inventory_store import InventoryStore
from clan_lib.persist.util import set_value_by_path from clan_lib.persist.util import set_value_by_path

View File

@@ -0,0 +1,200 @@
# DO NOT EDIT THIS FILE MANUALLY. IT IS GENERATED.
# This file was generated by running `pkgs/clan-cli/clan_lib.inventory/update.sh`
#
# ruff: noqa: N815
# ruff: noqa: N806
# ruff: noqa: F401
# fmt: off
from typing import Any, Literal, NotRequired, TypedDict
# Mimic "unknown".
# 'Any' is unsafe because it allows any operations
# This forces the user to use type-narrowing or casting in the code
class Unknown:
pass
InventoryInstanceModuleNameType = str
InventoryInstanceModuleInputType = str
class InventoryInstanceModule(TypedDict):
name: str
input: NotRequired[InventoryInstanceModuleInputType]
InventoryInstanceRoleMachineSettingsType = Unknown
class InventoryInstanceRoleMachine(TypedDict):
settings: NotRequired[InventoryInstanceRoleMachineSettingsType]
class InventoryInstanceRoleTag(TypedDict):
pass
InventoryInstanceRoleMachinesType = dict[str, InventoryInstanceRoleMachine]
InventoryInstanceRoleSettingsType = Unknown
InventoryInstanceRoleTagsType = dict[str, InventoryInstanceRoleTag]
class InventoryInstanceRole(TypedDict):
machines: NotRequired[InventoryInstanceRoleMachinesType]
settings: NotRequired[InventoryInstanceRoleSettingsType]
tags: NotRequired[InventoryInstanceRoleTagsType]
InventoryInstanceModuleType = InventoryInstanceModule
InventoryInstanceRolesType = dict[str, InventoryInstanceRole]
class InventoryInstance(TypedDict):
module: NotRequired[InventoryInstanceModuleType]
roles: NotRequired[InventoryInstanceRolesType]
InventoryMachineDeployTargethostType = str | None
class InventoryMachineDeploy(TypedDict):
targetHost: NotRequired[InventoryMachineDeployTargethostType]
InventoryMachineDeployType = InventoryMachineDeploy
InventoryMachineDescriptionType = str | None
InventoryMachineIconType = str | None
InventoryMachineMachineclassType = Literal["nixos", "darwin"]
InventoryMachineNameType = str
InventoryMachineTagsType = list[str]
class InventoryMachine(TypedDict):
deploy: NotRequired[InventoryMachineDeployType]
description: NotRequired[InventoryMachineDescriptionType]
icon: NotRequired[InventoryMachineIconType]
machineClass: NotRequired[InventoryMachineMachineclassType]
name: NotRequired[InventoryMachineNameType]
tags: NotRequired[InventoryMachineTagsType]
InventoryMetaNameType = str
InventoryMetaDescriptionType = str | None
InventoryMetaIconType = str | None
class InventoryMeta(TypedDict):
name: str
description: NotRequired[InventoryMetaDescriptionType]
icon: NotRequired[InventoryMetaIconType]
class InventoryService(TypedDict):
pass
InventoryInstancesType = dict[str, InventoryInstance]
InventoryMachinesType = dict[str, InventoryMachine]
InventoryMetaType = InventoryMeta
InventoryModulesType = dict[str, dict[str, Any] | list[Any] | bool | float | int | str | None]
InventoryServicesType = dict[str, InventoryService]
InventoryTagsType = dict[str, list[str]]
class Inventory(TypedDict):
instances: NotRequired[InventoryInstancesType]
machines: NotRequired[InventoryMachinesType]
meta: NotRequired[InventoryMetaType]
modules: NotRequired[InventoryModulesType]
services: NotRequired[InventoryServicesType]
tags: NotRequired[InventoryTagsType]
OutputModuleformachineType = dict[str, Unknown]
class Output(TypedDict):
moduleForMachine: NotRequired[OutputModuleformachineType]
SecretAgePluginsType = list[str]
class SecretAge(TypedDict):
plugins: NotRequired[SecretAgePluginsType]
SecretAgeType = SecretAge
class Secret(TypedDict):
age: NotRequired[SecretAgeType]
TemplateClanPathType = str
TemplateClanDescriptionType = str
class TemplateClan(TypedDict):
path: str
description: NotRequired[TemplateClanDescriptionType]
TemplateDiskoPathType = str
TemplateDiskoDescriptionType = str
class TemplateDisko(TypedDict):
path: str
description: NotRequired[TemplateDiskoDescriptionType]
TemplateMachinePathType = str
TemplateMachineDescriptionType = str
class TemplateMachine(TypedDict):
path: str
description: NotRequired[TemplateMachineDescriptionType]
TemplateClanType = dict[str, TemplateClan]
TemplateDiskoType = dict[str, TemplateDisko]
TemplateMachineType = dict[str, TemplateMachine]
class Template(TypedDict):
clan: NotRequired[TemplateClanType]
disko: NotRequired[TemplateDiskoType]
machine: NotRequired[TemplateMachineType]
ClanDirectoryType = dict[str, Any] | list[Any] | bool | float | int | str
ClanInventoryType = Inventory
ClanMachinesType = dict[str, Unknown]
ClanMetaType = Unknown
ClanModulesType = dict[str, Unknown]
ClanOutputsType = Output
ClanSecretsType = Secret
ClanSelfType = dict[str, Any] | list[Any] | bool | float | int | str
ClanSpecialargsType = dict[str, dict[str, Any] | list[Any] | bool | float | int | str | None]
ClanTemplatesType = Template
class Clan(TypedDict):
directory: NotRequired[ClanDirectoryType]
inventory: NotRequired[ClanInventoryType]
machines: NotRequired[ClanMachinesType]
meta: NotRequired[ClanMetaType]
modules: NotRequired[ClanModulesType]
outputs: NotRequired[ClanOutputsType]
secrets: NotRequired[ClanSecretsType]
self: NotRequired[ClanSelfType]
specialArgs: NotRequired[ClanSpecialargsType]
templates: NotRequired[ClanTemplatesType]

View File

@@ -1,111 +0,0 @@
# DO NOT EDIT THIS FILE MANUALLY. IT IS GENERATED.
# This file was generated by running `pkgs/clan-cli/clan_lib.inventory/update.sh`
#
# ruff: noqa: N815
# ruff: noqa: N806
# ruff: noqa: F401
# fmt: off
from typing import Any, Literal, NotRequired, TypedDict
# Mimic "unknown".
# 'Any' is unsafe because it allows any operations
# This forces the user to use type-narrowing or casting in the code
class Unknown:
pass
InstanceModuleNameType = str
InstanceModuleInputType = str
class InstanceModule(TypedDict):
name: str
input: NotRequired[InstanceModuleInputType]
InstanceRoleMachineSettingsType = Unknown
class InstanceRoleMachine(TypedDict):
settings: NotRequired[InstanceRoleMachineSettingsType]
class InstanceRoleTag(TypedDict):
pass
InstanceRoleMachinesType = dict[str, InstanceRoleMachine]
InstanceRoleSettingsType = Unknown
InstanceRoleTagsType = dict[str, InstanceRoleTag]
class InstanceRole(TypedDict):
machines: NotRequired[InstanceRoleMachinesType]
settings: NotRequired[InstanceRoleSettingsType]
tags: NotRequired[InstanceRoleTagsType]
InstanceModuleType = InstanceModule
InstanceRolesType = dict[str, InstanceRole]
class Instance(TypedDict):
module: NotRequired[InstanceModuleType]
roles: NotRequired[InstanceRolesType]
MachineDeployTargethostType = str
class MachineDeploy(TypedDict):
targetHost: NotRequired[MachineDeployTargethostType]
MachineDeployType = MachineDeploy
MachineDescriptionType = str
MachineIconType = str
MachineMachineclassType = Literal["nixos", "darwin"]
MachineNameType = str
MachineTagsType = list[str]
class Machine(TypedDict):
deploy: NotRequired[MachineDeployType]
description: NotRequired[MachineDescriptionType]
icon: NotRequired[MachineIconType]
machineClass: NotRequired[MachineMachineclassType]
name: NotRequired[MachineNameType]
tags: NotRequired[MachineTagsType]
MetaNameType = str
MetaDescriptionType = str
MetaIconType = str
class Meta(TypedDict):
name: str
description: NotRequired[MetaDescriptionType]
icon: NotRequired[MetaIconType]
Service = dict[str, Any]
InventoryInstancesType = dict[str, Instance]
InventoryMachinesType = dict[str, Machine]
InventoryMetaType = Meta
InventoryModulesType = dict[str, Any]
InventoryServicesType = dict[str, Service]
InventoryTagsType = dict[str, Any]
class Inventory(TypedDict):
instances: NotRequired[InventoryInstancesType]
machines: NotRequired[InventoryMachinesType]
meta: NotRequired[InventoryMetaType]
modules: NotRequired[InventoryModulesType]
services: NotRequired[InventoryServicesType]
tags: NotRequired[InventoryTagsType]

View File

@@ -5,7 +5,7 @@ from typing import Any, Protocol
from clan_lib.errors import ClanError from clan_lib.errors import ClanError
from clan_lib.git import commit_file from clan_lib.git import commit_file
from clan_lib.nix_models.inventory import Inventory from clan_lib.nix_models.clan import Inventory
from .util import ( from .util import (
calc_patches, calc_patches,

View File

@@ -24,8 +24,8 @@ from clan_lib.errors import ClanError
from clan_lib.flake import Flake from clan_lib.flake import Flake
from clan_lib.machines.machines import Machine from clan_lib.machines.machines import Machine
from clan_lib.nix import nix_command from clan_lib.nix import nix_command
from clan_lib.nix_models.inventory import Machine as InventoryMachine from clan_lib.nix_models.clan import InventoryMachine
from clan_lib.nix_models.inventory import MachineDeploy from clan_lib.nix_models.clan import InventoryMachineDeploy as MachineDeploy
from clan_lib.ssh.remote import Remote from clan_lib.ssh.remote import Remote
log = logging.getLogger(__name__) log = logging.getLogger(__name__)