@@ -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