@@ -138,6 +138,10 @@ class LinkParams:
138138 # Optional striping configuration for controlled device-group partitioning
139139 # during adjacency creation. Example: {"width": 4}
140140 striping : dict [str , Any ] = field (default_factory = dict )
141+ # Optional adjacency formation mode (used by inter-metro links).
142+ # "mesh" connects all PoP pairs between metros; "one_to_one" connects
143+ # only corresponding indices: pop1-pop1, pop2-pop2, ... up to min counts.
144+ mode : str = "mesh"
141145
142146
143147@dataclass
@@ -672,6 +676,7 @@ def _from_dict(cls, config_dict: dict[str, Any]) -> TopologyConfig:
672676 match = intra_metro_link_dict .get ("match" , {}),
673677 role_pairs = intra_metro_link_dict .get ("role_pairs" , []) or [],
674678 striping = intra_metro_link_dict .get ("striping" , {}) or {},
679+ mode = str (intra_metro_link_dict .get ("mode" , "mesh" )),
675680 )
676681 inter_metro_link = LinkParams (
677682 capacity = inter_metro_link_dict .get ("capacity" , 100 ),
@@ -683,6 +688,7 @@ def _from_dict(cls, config_dict: dict[str, Any]) -> TopologyConfig:
683688 match = inter_metro_link_dict .get ("match" , {}),
684689 role_pairs = inter_metro_link_dict .get ("role_pairs" , []) or [],
685690 striping = inter_metro_link_dict .get ("striping" , {}) or {},
691+ mode = str (inter_metro_link_dict .get ("mode" , "mesh" )),
686692 )
687693 dc_to_pop_link = LinkParams (
688694 capacity = dc_to_pop_link_dict .get ("capacity" , 400 ),
@@ -694,6 +700,7 @@ def _from_dict(cls, config_dict: dict[str, Any]) -> TopologyConfig:
694700 match = dc_to_pop_link_dict .get ("match" , {}),
695701 role_pairs = dc_to_pop_link_dict .get ("role_pairs" , []) or [],
696702 striping = dc_to_pop_link_dict .get ("striping" , {}) or {},
703+ mode = str (dc_to_pop_link_dict .get ("mode" , "mesh" )),
697704 )
698705
699706 # Create BuildDefaults with explicit parameters
0 commit comments