@@ -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+
271301fn valid_druid_connection (
272302 superset_cluster : & DeserializeGuard < v1alpha1:: SupersetCluster > ,
273303 druid_connection : & DeserializeGuard < druidconnection:: v1alpha1:: DruidConnection > ,
0 commit comments