Skip to content

Commit 19163c9

Browse files
Add to_dict and from_dict for ClusterJoinData
1 parent 4377e21 commit 19163c9

File tree

1 file changed

+53
-0
lines changed

1 file changed

+53
-0
lines changed

nethsm/__init__.py

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -419,6 +419,31 @@ class InitialClusterMember:
419419
name: str
420420
urls: list[str]
421421

422+
def to_dict(self) -> dict[str, object]:
423+
return {
424+
"name": self.name,
425+
"urls": self.urls,
426+
}
427+
428+
@staticmethod
429+
def from_dict(data: dict[object, object]) -> "InitialClusterMember":
430+
if "name" not in data:
431+
raise ValueError("Missing name field for initial cluster member")
432+
if "urls" not in data:
433+
raise ValueError("Missing urls field for initial cluster member")
434+
name = data["name"]
435+
urls = data["urls"]
436+
437+
if not isinstance(name, str):
438+
raise ValueError("Name field for initial cluster member is not a string")
439+
if not isinstance(urls, list):
440+
raise ValueError("URLs field for initial cluster member is not a list")
441+
for url in urls:
442+
if not isinstance(url, str):
443+
raise ValueError("URL for initial cluster member is not a string")
444+
445+
return InitialClusterMember(name=name, urls=urls)
446+
422447
@staticmethod
423448
def _from_api(data: "ClusterInitialMemberDict") -> "InitialClusterMember":
424449
return InitialClusterMember(name=data.name, urls=list(data.urls))
@@ -429,6 +454,34 @@ class ClusterJoinData:
429454
members: list[InitialClusterMember]
430455
joiner_kit: str
431456

457+
def to_dict(self) -> dict[str, object]:
458+
return {
459+
"members": [member.to_dict() for member in self.members],
460+
"joiner_kit": self.joiner_kit,
461+
}
462+
463+
@staticmethod
464+
def from_dict(data: dict[object, object]) -> "ClusterJoinData":
465+
if "members" not in data:
466+
raise ValueError("Missing members field for cluster join data")
467+
if "joiner_kit" not in data:
468+
raise ValueError("Missing joiner_kit field for cluster join data")
469+
members = data["members"]
470+
joiner_kit = data["joiner_kit"]
471+
472+
if not isinstance(members, list):
473+
raise ValueError("Members field for cluster join data is not a list")
474+
for member in members:
475+
if not isinstance(member, dict):
476+
raise ValueError("Member for cluster join data is not a dict")
477+
if not isinstance(joiner_kit, str):
478+
raise ValueError("Joiner kit field for cluster join data is not a string")
479+
480+
return ClusterJoinData(
481+
members=[InitialClusterMember.from_dict(member) for member in members],
482+
joiner_kit=joiner_kit,
483+
)
484+
432485
@staticmethod
433486
def _from_api(response: "ClusterMemberAddResponseDict") -> "ClusterJoinData":
434487
members = [

0 commit comments

Comments
 (0)