@@ -66,6 +66,10 @@ fn default_node_id() -> ConfigValue<String, QW_NODE_ID> {
6666 ConfigValue :: with_default ( node_id)
6767}
6868
69+ fn default_availability_zone ( ) -> ConfigValue < String , QW_AVAILABILITY_ZONE > {
70+ ConfigValue :: none ( )
71+ }
72+
6973#[ derive( Clone , Debug , Default , Serialize , Deserialize , PartialEq ) ]
7074struct List ( Vec < String > ) ;
7175
@@ -169,6 +173,8 @@ struct NodeConfigBuilder {
169173 cluster_id : ConfigValue < String , QW_CLUSTER_ID > ,
170174 #[ serde( default = "default_node_id" ) ]
171175 node_id : ConfigValue < String , QW_NODE_ID > ,
176+ #[ serde( default = "default_availability_zone" ) ]
177+ availability_zone : ConfigValue < String , QW_AVAILABILITY_ZONE > ,
172178 #[ serde( default = "default_enabled_services" ) ]
173179 enabled_services : ConfigValue < List , QW_ENABLED_SERVICES > ,
174180 #[ serde( default = "default_listen_address" ) ]
@@ -218,6 +224,7 @@ impl NodeConfigBuilder {
218224 env_vars : & HashMap < String , String > ,
219225 ) -> anyhow:: Result < NodeConfig > {
220226 let node_id = self . node_id . resolve ( env_vars) . map ( NodeId :: new) ?;
227+ let availability_zone = self . availability_zone . resolve_optional ( env_vars) ?;
221228
222229 let enabled_services = self
223230 . enabled_services
@@ -305,6 +312,7 @@ impl NodeConfigBuilder {
305312 let node_config = NodeConfig {
306313 cluster_id : self . cluster_id . resolve ( env_vars) ?,
307314 node_id,
315+ availability_zone,
308316 enabled_services,
309317 gossip_listen_addr,
310318 grpc_listen_addr,
@@ -401,6 +409,7 @@ impl Default for NodeConfigBuilder {
401409 Self {
402410 cluster_id : default_cluster_id ( ) ,
403411 node_id : default_node_id ( ) ,
412+ availability_zone : ConfigValue :: none ( ) ,
404413 enabled_services : default_enabled_services ( ) ,
405414 listen_address : default_listen_address ( ) ,
406415 rest_listen_port : None ,
@@ -469,6 +478,7 @@ pub fn node_config_for_tests_from_ports(
469478) -> NodeConfig {
470479 let node_id = NodeId :: new ( default_node_id ( ) . unwrap ( ) ) ;
471480 let enabled_services = QuickwitService :: supported_services ( ) ;
481+ let availability_zone = Some ( String :: from ( "az-1" ) ) ;
472482 let listen_address = Host :: default ( ) ;
473483 let rest_listen_addr = listen_address
474484 . with_port ( rest_listen_port)
@@ -499,6 +509,7 @@ pub fn node_config_for_tests_from_ports(
499509 NodeConfig {
500510 cluster_id : default_cluster_id ( ) . unwrap ( ) ,
501511 node_id,
512+ availability_zone,
502513 enabled_services,
503514 gossip_advertise_addr : gossip_listen_addr,
504515 grpc_advertise_addr : grpc_listen_addr,
@@ -553,6 +564,7 @@ mod tests {
553564 assert ! ( config. is_service_enabled( QuickwitService :: Janitor ) ) ;
554565 assert ! ( config. is_service_enabled( QuickwitService :: Metastore ) ) ;
555566
567+ assert_eq ! ( config. availability_zone. unwrap( ) , "az-1" ) ;
556568 assert_eq ! (
557569 config. rest_config. listen_addr,
558570 SocketAddr :: new( IpAddr :: V4 ( Ipv4Addr :: UNSPECIFIED ) , 1111 )
@@ -738,6 +750,7 @@ mod tests {
738750 . unwrap ( ) ;
739751 assert_eq ! ( config. cluster_id, DEFAULT_CLUSTER_ID ) ;
740752 assert_eq ! ( config. node_id, get_short_hostname( ) . unwrap( ) ) ;
753+ assert_eq ! ( config. availability_zone, None ) ;
741754 assert_eq ! (
742755 config. enabled_services,
743756 QuickwitService :: supported_services( )
0 commit comments