Skip to content

Commit 776e273

Browse files
committed
add listener refs to config map
1 parent 05e5c16 commit 776e273

File tree

3 files changed

+53
-27
lines changed

3 files changed

+53
-27
lines changed

rust/operator-binary/src/crd/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -561,7 +561,7 @@ impl v1alpha1::HbaseCluster {
561561
}
562562

563563
/// Name of the port used by the Web UI, which depends on HTTPS usage
564-
fn ui_port_name(&self) -> String {
564+
pub fn ui_port_name(&self) -> String {
565565
if self.has_https_enabled() {
566566
HBASE_UI_PORT_NAME_HTTPS
567567
} else {

rust/operator-binary/src/discovery.rs

Lines changed: 44 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -88,28 +88,50 @@ pub fn build_discovery_configmap(
8888
pub 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
}

rust/operator-binary/src/hbase_controller.rs

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -482,20 +482,24 @@ pub async fn reconcile_hbase(
482482
}
483483
}
484484

485-
let mut listener_refs = Vec::<HbasePodRef>::new();
485+
let mut listener_refs: BTreeMap<String, Vec<HbasePodRef>> = BTreeMap::new();
486486

487487
for role in HbaseRole::iter() {
488-
listener_refs.extend(
488+
listener_refs.insert(
489+
role.to_string(),
489490
hbase
490491
.listener_refs(client, &role, &resolved_product_image.product_version)
491492
.await
492493
.context(CollectDiscoveryConfigSnafu)?,
493494
);
494495
}
495496

496-
tracing::info!("Listener references: {:#?}", listener_refs);
497+
tracing::info!(
498+
"Listener references written to the ConfigMap: {:?}",
499+
listener_refs
500+
);
497501

498-
let endpoint_cm = build_endpoint_configmap(hbase, &resolved_product_image, &listener_refs)
502+
let endpoint_cm = build_endpoint_configmap(hbase, &resolved_product_image, listener_refs)
499503
.context(BuildDiscoveryConfigMapSnafu)?;
500504
cluster_resources
501505
.add(client, endpoint_cm)

0 commit comments

Comments
 (0)