Skip to content

Commit ffc754c

Browse files
committed
start watching configmaps that are referenced in superset spec
1 parent 5f319d0 commit ffc754c

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

rust/operator-binary/src/main.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ async fn main() -> anyhow::Result<()> {
112112
watcher::Config::default(),
113113
);
114114
let superset_store_1 = superset_controller.store();
115+
let superset_store_2 = superset_controller.store();
115116
let superset_controller = superset_controller
116117
.owns(
117118
watch_namespace.get_api::<DeserializeGuard<Service>>(&client),
@@ -135,6 +136,19 @@ async fn main() -> anyhow::Result<()> {
135136
.map(|superset| ObjectRef::from_obj(&*superset))
136137
},
137138
)
139+
.watches(
140+
watch_namespace.get_api::<DeserializeGuard<ConfigMap>>(&client),
141+
watcher::Config::default(),
142+
move |config_map| {
143+
superset_store_2
144+
.state()
145+
.into_iter()
146+
.filter(move |superset| {
147+
references_configmap(superset, &config_map)
148+
})
149+
.map(|superset| ObjectRef::from_obj(&*superset))
150+
},
151+
)
138152
.run(
139153
superset_controller::reconcile_superset,
140154
superset_controller::error_policy,
@@ -268,6 +282,22 @@ fn references_authentication_class(
268282
.any(|c| c.common.authentication_class_name() == &authentication_class_name)
269283
}
270284

285+
fn references_configmap(
286+
superset: &DeserializeGuard<v1alpha1::SupersetCluster>,
287+
config_map: &DeserializeGuard<ConfigMap>
288+
) -> bool {
289+
let Ok(superset) = &superset.0 else {
290+
return false;
291+
};
292+
293+
let config_map_name = config_map.name_any();
294+
superset.spec.cluster_config.vector_aggregator_config_map_name == Some(config_map_name.to_owned()) ||
295+
match superset.spec.cluster_config.authorization.clone() {
296+
Some (superset_authorization) => if superset_authorization.role_mapping_from_opa.opa.config_map_name == config_map_name { true } else { false }
297+
None => false
298+
}
299+
}
300+
271301
fn valid_druid_connection(
272302
superset_cluster: &DeserializeGuard<v1alpha1::SupersetCluster>,
273303
druid_connection: &DeserializeGuard<druidconnection::v1alpha1::DruidConnection>,

0 commit comments

Comments
 (0)