1+ import dataclasses
12import enum
23import json
34import logging
@@ -67,83 +68,32 @@ def convert(cls, item: Dict[str, Any]) -> 'ClusterPublicIP':
6768 return cls (address , destinations )
6869
6970
71+ @dataclasses .dataclass (frozen = True )
7072class Config :
7173 identity : DaemonIdentity
7274 instance_id : str
7375 source_config : str
74- samba_debug_level : int
75- ctdb_log_level : str
76- debug_delay : int
7776 domain_member : bool
7877 clustered : bool
79- join_sources : List [str ]
80- user_sources : List [str ]
81- custom_dns : List [str ]
82- smb_port : int
83- ceph_config_entity : str
84- vhostname : str
85- metrics_image : str
86- metrics_port : int
78+ samba_debug_level : int = 0
79+ ctdb_log_level : str = ''
80+ debug_delay : int = 0
81+ join_sources : List [str ] = dataclasses .field (default_factory = list )
82+ user_sources : List [str ] = dataclasses .field (default_factory = list )
83+ custom_dns : List [str ] = dataclasses .field (default_factory = list )
84+ smb_port : int = 0
85+ ceph_config_entity : str = 'client.admin'
86+ vhostname : str = ''
87+ metrics_image : str = ''
88+ metrics_port : int = 0
8789 # clustering related values
88- rank : int
89- rank_generation : int
90- cluster_meta_uri : str
91- cluster_lock_uri : str
92-
93- def __init__ (
94- self ,
95- * ,
96- identity : DaemonIdentity ,
97- instance_id : str ,
98- source_config : str ,
99- domain_member : bool ,
100- clustered : bool ,
101- samba_debug_level : int = 0 ,
102- ctdb_log_level : str = '' ,
103- debug_delay : int = 0 ,
104- join_sources : Optional [List [str ]] = None ,
105- user_sources : Optional [List [str ]] = None ,
106- custom_dns : Optional [List [str ]] = None ,
107- smb_port : int = 0 ,
108- ceph_config_entity : str = 'client.admin' ,
109- vhostname : str = '' ,
110- metrics_image : str = '' ,
111- metrics_port : int = 0 ,
112- rank : int = - 1 ,
113- rank_generation : int = - 1 ,
114- cluster_meta_uri : str = '' ,
115- cluster_lock_uri : str = '' ,
116- cluster_public_addrs : Optional [List [ClusterPublicIP ]] = None ,
117- ) -> None :
118- self .identity = identity
119- self .instance_id = instance_id
120- self .source_config = source_config
121- self .domain_member = domain_member
122- self .clustered = clustered
123- self .samba_debug_level = samba_debug_level
124- self .ctdb_log_level = ctdb_log_level
125- self .debug_delay = debug_delay
126- self .join_sources = join_sources or []
127- self .user_sources = user_sources or []
128- self .custom_dns = custom_dns or []
129- self .smb_port = smb_port
130- self .ceph_config_entity = ceph_config_entity
131- self .vhostname = vhostname
132- self .metrics_image = metrics_image
133- self .metrics_port = metrics_port
134- self .rank = rank
135- self .rank_generation = rank_generation
136- self .cluster_meta_uri = cluster_meta_uri
137- self .cluster_lock_uri = cluster_lock_uri
138- self .cluster_public_addrs = cluster_public_addrs
139-
140- def __str__ (self ) -> str :
141- return (
142- f'SMB Config[id={ self .instance_id } ,'
143- f' source_config={ self .source_config } ,'
144- f' domain_member={ self .domain_member } ,'
145- f' clustered={ self .clustered } ]'
146- )
90+ rank : int = - 1
91+ rank_generation : int = - 1
92+ cluster_meta_uri : str = ''
93+ cluster_lock_uri : str = ''
94+ cluster_public_addrs : List [ClusterPublicIP ] = dataclasses .field (
95+ default_factory = list
96+ )
14797
14898 def config_uris (self ) -> List [str ]:
14999 uris = [self .source_config ]
@@ -432,7 +382,7 @@ def __init__(self, ctx: CephadmContext, ident: DaemonIdentity):
432382 self ._raw_configs : Dict [str , Any ] = context_getters .fetch_configs (ctx )
433383 self ._config_keyring = context_getters .get_config_and_keyring (ctx )
434384 self ._cached_layout : Optional [ContainerLayout ] = None
435- self ._rank_info = context_getters .fetch_rank_info (ctx )
385+ self ._rank_info = context_getters .fetch_rank_info (ctx ) or ( - 1 , - 1 )
436386 self .smb_port = 445
437387 self .metrics_port = 9922
438388 self ._network_mapper = _NetworkMapper (ctx )
@@ -502,6 +452,7 @@ def validate(self) -> None:
502452 # cache the cephadm networks->devices mapping for later
503453 self ._network_mapper .load ()
504454
455+ rank , rank_gen = self ._rank_info
505456 self ._instance_cfg = Config (
506457 identity = self ._identity ,
507458 instance_id = instance_id ,
@@ -516,15 +467,12 @@ def validate(self) -> None:
516467 vhostname = vhostname ,
517468 metrics_image = metrics_image ,
518469 metrics_port = metrics_port ,
470+ rank = rank ,
471+ rank_generation = rank_gen ,
519472 cluster_meta_uri = cluster_meta_uri ,
520473 cluster_lock_uri = cluster_lock_uri ,
521474 cluster_public_addrs = _public_addrs ,
522475 )
523- if self ._rank_info :
524- (
525- self ._instance_cfg .rank ,
526- self ._instance_cfg .rank_generation ,
527- ) = self ._rank_info
528476 self ._files = files
529477 logger .debug ('SMB Instance Config: %s' , self ._instance_cfg )
530478 logger .debug ('Configured files: %s' , self ._files )
0 commit comments