@@ -88,28 +88,50 @@ pub fn build_discovery_configmap(
8888pub fn build_endpoint_configmap (
8989 hbase : & v1alpha1:: HbaseCluster ,
9090 resolved_product_image : & ResolvedProductImage ,
91- _role_podrefs : & [ HbasePodRef ] ,
91+ role_podrefs : BTreeMap < String , Vec < HbasePodRef > > ,
9292) -> Result < ConfigMap > {
9393 let name = hbase. name_unchecked ( ) ;
94- ConfigMapBuilder :: new ( )
95- . metadata (
96- ObjectMetaBuilder :: new ( )
97- . name_and_namespace ( hbase)
98- . name ( format ! ( "{name}-endpoint" ) )
99- . ownerreference_from_resource ( hbase, None , Some ( true ) )
100- . with_context ( |_| ObjectMissingMetadataForOwnerRefSnafu {
101- hbase : ObjectRef :: from_obj ( hbase) ,
102- } ) ?
103- . with_recommended_labels ( build_recommended_labels (
104- hbase,
105- & resolved_product_image. app_version_label ,
106- & HbaseRole :: RegionServer . to_string ( ) ,
107- "discovery" ,
108- ) )
109- . context ( ObjectMetaSnafu ) ?
110- . build ( ) ,
111- )
112- . add_data ( "XXX" , "YYY" )
113- . build ( )
114- . context ( BuildConfigMapSnafu )
94+ let mut cm = ConfigMapBuilder :: new ( ) ;
95+
96+ let cmm = cm. metadata (
97+ ObjectMetaBuilder :: new ( )
98+ . name_and_namespace ( hbase)
99+ . name ( format ! ( "{name}-ui-endpoints" ) )
100+ . ownerreference_from_resource ( hbase, None , Some ( true ) )
101+ . with_context ( |_| ObjectMissingMetadataForOwnerRefSnafu {
102+ hbase : ObjectRef :: from_obj ( hbase) ,
103+ } ) ?
104+ . with_recommended_labels ( build_recommended_labels (
105+ hbase,
106+ & resolved_product_image. app_version_label ,
107+ "hbase-ui" ,
108+ "discovery" ,
109+ ) )
110+ . context ( ObjectMetaSnafu ) ?
111+ . build ( ) ,
112+ ) ;
113+
114+ for role_podref in role_podrefs {
115+ let role_name = role_podref. 0 ;
116+ for podref in role_podref. 1 {
117+ if let HbasePodRef {
118+ fqdn_override : Some ( fqdn_override) ,
119+ ports,
120+ ..
121+ } = podref
122+ {
123+ if let Some ( ui_port) = ports. get ( & hbase. ui_port_name ( ) ) {
124+ cmm. add_data (
125+ format ! ( "hbase.{role_name}.ui" ) ,
126+ format ! ( "{fqdn_override}:{ui_port}" ) ,
127+ ) ;
128+ // the UI endpoint for one replica per role
129+ // is enough for the config map
130+ break ;
131+ }
132+ }
133+ }
134+ }
135+
136+ cm. build ( ) . context ( BuildConfigMapSnafu )
115137}
0 commit comments