Inventory: fix dataclasses discrepancy once more

This commit is contained in:
Johannes Kirschbauer
2024-07-17 11:32:36 +02:00
parent 0bfba72739
commit 24b3674983
2 changed files with 38 additions and 38 deletions

View File

@@ -7,13 +7,13 @@
"machines": { "machines": {
"test-inventory-machine": { "test-inventory-machine": {
"name": "foo", "name": "foo",
"deploy": {
"targetHost": null
},
"description": "A nice thing", "description": "A nice thing",
"icon": "./path/to/icon.png", "icon": "./path/to/icon.png",
"tags": ["1", "2", "3"], "tags": ["1", "2", "3"],
"system": "x86_64-linux", "system": "x86_64-linux"
"deploy": {
"targetHost": "root@remote.com"
}
} }
}, },
"services": { "services": {
@@ -26,14 +26,16 @@
}, },
"roles": { "roles": {
"default": { "default": {
"machines": ["test-inventory-machine"],
"tags": [],
"config": { "config": {
"packages": ["vim"] "packages": ["vim"]
}, },
"imports": [] "imports": [],
"machines": ["test-inventory-machine"],
"tags": []
} }
}, },
"config": {},
"imports": [],
"machines": { "machines": {
"test-inventory-machine": { "test-inventory-machine": {
"config": { "config": {
@@ -41,9 +43,7 @@
}, },
"imports": [] "imports": []
} }
}, }
"config": null,
"imports": []
}, },
"browsing": { "browsing": {
"meta": { "meta": {
@@ -53,12 +53,14 @@
}, },
"roles": { "roles": {
"default": { "default": {
"config": {},
"imports": [],
"machines": ["test-inventory-machine"], "machines": ["test-inventory-machine"],
"tags": [], "tags": []
"config": null,
"imports": []
} }
}, },
"config": {},
"imports": [],
"machines": { "machines": {
"test-inventory-machine": { "test-inventory-machine": {
"config": { "config": {
@@ -66,9 +68,7 @@
}, },
"imports": [] "imports": []
} }
}, }
"config": null,
"imports": []
} }
}, },
"single-disk": { "single-disk": {
@@ -80,12 +80,14 @@
}, },
"roles": { "roles": {
"default": { "default": {
"config": {},
"imports": [],
"machines": ["test-inventory-machine"], "machines": ["test-inventory-machine"],
"tags": [], "tags": []
"config": null,
"imports": []
} }
}, },
"config": {},
"imports": [],
"machines": { "machines": {
"test-inventory-machine": { "test-inventory-machine": {
"config": { "config": {
@@ -93,9 +95,7 @@
}, },
"imports": [] "imports": []
} }
}, }
"config": null,
"imports": []
} }
} }
} }

View File

@@ -1,3 +1,5 @@
# ruff: noqa: N815
# ruff: noqa: N806
import json import json
from dataclasses import asdict, dataclass, field, is_dataclass from dataclasses import asdict, dataclass, field, is_dataclass
from pathlib import Path from pathlib import Path
@@ -41,7 +43,7 @@ class DeploymentInfo:
Deployment information for a machine. Deployment information for a machine.
""" """
target_host: str | None = None targetHost: str | None = None
@dataclass @dataclass
@@ -58,30 +60,28 @@ class Machine:
""" """
name: str name: str
deploy: DeploymentInfo = field(default_factory=DeploymentInfo)
description: str | None = None description: str | None = None
icon: str | None = None icon: str | None = None
tags: list[str] = field(default_factory=list) tags: list[str] = field(default_factory=list)
system: Literal["x86_64-linux"] | str | None = None system: Literal["x86_64-linux"] | str | None = None
deploy: DeploymentInfo | None = None
@staticmethod @staticmethod
def from_dict(d: dict[str, Any]) -> "Machine": def from_dict(data: dict[str, Any]) -> "Machine":
targetHost = data.get("deploy", {}).get("targetHost", None)
return Machine( return Machine(
name=d["name"], name=data["name"],
description=d.get("description", None), description=data.get("description", None),
icon=d.get("icon", None), icon=data.get("icon", None),
tags=d.get("tags", []), tags=data.get("tags", []),
system=d.get("system", None), system=data.get("system", None),
deploy=DeploymentInfo( deploy=DeploymentInfo(targetHost),
target_host=d.get("deploy", {}).get("targetHost", None)
),
) )
@dataclass @dataclass
class MachineServiceConfig: class MachineServiceConfig:
config: dict[str, Any] | None = None config: dict[str, Any] = field(default_factory=dict)
imports: list[str] = field(default_factory=list) imports: list[str] = field(default_factory=list)
@@ -94,7 +94,7 @@ class ServiceMeta:
@dataclass @dataclass
class Role: class Role:
config: dict[str, Any] | None = None config: dict[str, Any] = field(default_factory=dict)
imports: list[str] = field(default_factory=list) imports: list[str] = field(default_factory=list)
machines: list[str] = field(default_factory=list) machines: list[str] = field(default_factory=list)
tags: list[str] = field(default_factory=list) tags: list[str] = field(default_factory=list)
@@ -104,7 +104,7 @@ class Role:
class Service: class Service:
meta: ServiceMeta meta: ServiceMeta
roles: dict[str, Role] roles: dict[str, Role]
config: dict[str, Any] | None = None config: dict[str, Any] = field(default_factory=dict)
imports: list[str] = field(default_factory=list) imports: list[str] = field(default_factory=list)
machines: dict[str, MachineServiceConfig] = field(default_factory=dict) machines: dict[str, MachineServiceConfig] = field(default_factory=dict)
@@ -121,7 +121,7 @@ class Service:
if d.get("machines") if d.get("machines")
else {} else {}
), ),
config=d.get("config", None), config=d.get("config", {}),
imports=d.get("imports", []), imports=d.get("imports", []),
) )