Inventory: fix dataclasses discrepancy once more
This commit is contained in:
@@ -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": []
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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", []),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user