@@ -16,7 +16,6 @@ use stackable_operator::{
1616use crate :: {
1717 config:: { NIFI_PVC_STORAGE_DIRECTORY , NifiRepository } ,
1818 crd:: {
19- NifiRole ,
2019 authorization:: { NifiAccessPolicyProvider , NifiAuthorization , NifiOpaConfig } ,
2120 v1alpha1,
2221 } ,
@@ -165,57 +164,25 @@ impl ResolvedNifiAuthorizationConfig {
165164 } => {
166165 let file_based_mount_path = Self :: file_based_mount_path ( ) ;
167166
168- let namespace = nifi_cluster. namespace ( ) . expect ( "" ) ;
169-
170- let mut dns = vec ! [ ] ;
171-
172- for _role_name in [ NifiRole :: Node . to_string ( ) ] {
173- let role_groups = nifi_cluster
174- . spec
175- . nodes
176- . iter ( )
177- . flat_map ( |role| & role. role_groups )
178- . collect :: < BTreeMap < _ , _ > > ( ) ;
179-
180- for ( role_group_name, role_group) in role_groups {
181- let headless_service_name = nifi_cluster
182- . node_rolegroup_ref ( role_group_name)
183- . rolegroup_headless_service_name ( ) ;
184-
185- let stateful_set_name = nifi_cluster. name_any ( ) ;
186-
187- for replica in 0 ..role_group. replicas . unwrap_or ( 1 ) {
188- let cn = "cn=generated certificate for pod" ;
189- let dc = cluster_info
190- . cluster_domain
191- . split ( '.' )
192- . rev ( )
193- . chain ( [
194- "svc" ,
195- & namespace,
196- & headless_service_name,
197- & format ! ( "{stateful_set_name}-{replica}" , ) ,
198- ] )
199- . map ( |component| format ! ( "dc={component}" ) )
200- . collect :: < Vec < _ > > ( ) ;
201-
202- let mut dn = vec ! [ cn. to_string( ) ] ;
203- dn. extend ( dc) ;
204- let dn = dn. join ( "," ) ;
205-
206- dns. push ( dn) ;
207- }
208- }
209- }
167+ let nifi_node_subject_dns = Self :: nifi_node_subject_dns ( nifi_cluster, cluster_info) ;
210168
211- let user_group_povider_dns = dns. iter ( ) . enumerate ( ) . map ( |( i, dn) | format ! ( " <property name=\" Initial User Identity other-nifi {i}\" >{dn}</property>" ) ) . collect :: < Vec < _ > > ( ) . join ( "\n " ) ;
169+ let user_group_povider_dns = nifi_node_subject_dns
170+ . iter ( )
171+ . enumerate ( )
172+ . map ( |( i, dn) | {
173+ format ! (
174+ " <property name=\" Initial User Identity other-nifi-{i}\" >{dn}</property>"
175+ )
176+ } )
177+ . collect :: < Vec < _ > > ( )
178+ . join ( "\n " ) ;
212179
213- let access_policy_provider_dns = dns
180+ let access_policy_provider_dns = nifi_node_subject_dns
214181 . iter ( )
215182 . enumerate ( )
216183 . map ( |( i, dn) | {
217184 format ! (
218- " <property name=\" Node Identity other-nifi {i}\" >{dn}</property>"
185+ " <property name=\" Node Identity other-nifi- {i}\" >{dn}</property>"
219186 )
220187 } )
221188 . collect :: < Vec < _ > > ( )
@@ -255,6 +222,57 @@ impl ResolvedNifiAuthorizationConfig {
255222 authorizers_xml
256223 }
257224
225+ fn nifi_node_subject_dns (
226+ nifi_cluster : & v1alpha1:: NifiCluster ,
227+ cluster_info : & KubernetesClusterInfo ,
228+ ) -> Vec < String > {
229+ let namespace = nifi_cluster. namespace ( ) . expect ( "" ) ;
230+
231+ let mut dns = vec ! [ ] ;
232+
233+ let role_groups = nifi_cluster
234+ . spec
235+ . nodes
236+ . iter ( )
237+ . flat_map ( |role| & role. role_groups )
238+ . collect :: < BTreeMap < _ , _ > > ( ) ;
239+
240+ for ( role_group_name, role_group) in role_groups {
241+ let role_group_ref = nifi_cluster. node_rolegroup_ref ( role_group_name) ;
242+
243+ let pod_generate_name = format ! (
244+ "{}-" ,
245+ nifi_cluster
246+ . node_rolegroup_ref( role_group_name)
247+ . object_name( )
248+ ) ;
249+
250+ for ordinal in 0 ..role_group. replicas . unwrap_or ( 1 ) {
251+ let dc = cluster_info
252+ . cluster_domain
253+ . split ( '.' )
254+ . rev ( )
255+ . chain ( [
256+ "svc" ,
257+ & namespace,
258+ & role_group_ref. rolegroup_headless_service_name ( ) ,
259+ & format ! ( "{pod_generate_name}{ordinal}" , ) ,
260+ ] )
261+ . map ( |component| format ! ( "DC={component}" ) )
262+ . collect :: < Vec < _ > > ( ) ;
263+ let cn = "CN=generated certificate for pod" ;
264+
265+ let mut dn = dc;
266+ dn. push ( cn. to_owned ( ) ) ;
267+ let dn = dn. join ( ", " ) ;
268+
269+ dns. push ( dn) ;
270+ }
271+ }
272+
273+ dns
274+ }
275+
258276 pub fn get_env_vars ( & self ) -> Vec < EnvVar > {
259277 match self {
260278 ResolvedNifiAuthorizationConfig :: Opa {
0 commit comments