@@ -40,8 +40,8 @@ use crate::{
4040 authentication:: DruidAuthenticationConfig ,
4141 controller:: { controller_name, dereference:: DereferencedObjects , operator_name, product_name} ,
4242 crd:: {
43- DeepStorageSpec , DruidRole , database :: MetadataDatabaseConnection ,
44- security:: DruidTlsSecurity , v1alpha1,
43+ DeepStorageSpec , DruidRole , authentication :: AuthenticationClassesResolved ,
44+ database :: MetadataDatabaseConnection , security:: DruidTlsSecurity , v1alpha1,
4545 } ,
4646} ;
4747
@@ -65,6 +65,11 @@ pub enum Error {
6565 InvalidMetadataDatabaseConnection {
6666 source : stackable_operator:: database_connections:: Error ,
6767 } ,
68+
69+ #[ snafu( display( "failed to resolve authentication classes" ) ) ]
70+ ResolveAuthenticationClasses {
71+ source : crate :: crd:: authentication:: Error ,
72+ } ,
6873}
6974
7075type Result < T , E = Error > = std:: result:: Result < T , E > ;
@@ -323,14 +328,17 @@ pub fn validate(
323328 )
324329 . context ( ResolveProductImageSnafu ) ?;
325330
326- let druid_tls_security = DruidTlsSecurity :: new_from_druid_cluster (
327- druid,
328- & dereferenced_objects. resolved_authentication_classes ,
329- ) ;
331+ let resolved_authentication_classes = AuthenticationClassesResolved :: from_fetched (
332+ & druid. spec . cluster_config ,
333+ & dereferenced_objects. authentication_classes ,
334+ )
335+ . context ( ResolveAuthenticationClassesSnafu ) ?;
336+
337+ let druid_tls_security =
338+ DruidTlsSecurity :: new_from_druid_cluster ( druid, & resolved_authentication_classes) ;
330339
331- let druid_auth_config = DruidAuthenticationConfig :: from_auth_classes (
332- dereferenced_objects. resolved_authentication_classes . clone ( ) ,
333- ) ;
340+ let druid_auth_config =
341+ DruidAuthenticationConfig :: from_auth_classes ( resolved_authentication_classes) ;
334342
335343 let mut role_group_configs: BTreeMap < DruidRole , BTreeMap < RoleGroupName , DruidRoleGroupConfig > > =
336344 BTreeMap :: new ( ) ;
@@ -539,10 +547,7 @@ mod tests {
539547 test_support:: { MINIMAL_DRUID_YAML , druid_from_yaml} ,
540548 validate,
541549 } ;
542- use crate :: {
543- controller:: dereference:: DereferencedObjects ,
544- crd:: { DruidRole , authentication:: AuthenticationClassesResolved } ,
545- } ;
550+ use crate :: { controller:: dereference:: DereferencedObjects , crd:: DruidRole } ;
546551
547552 /// Dereferenced inputs with test defaults: no S3, no OPA, no auth, a fixed ZooKeeper string.
548553 fn dereferenced_objects ( ) -> DereferencedObjects {
@@ -551,9 +556,7 @@ mod tests {
551556 opa_connection_string : None ,
552557 s3_connection : None ,
553558 deep_storage_bucket_name : None ,
554- resolved_authentication_classes : AuthenticationClassesResolved {
555- auth_classes : Vec :: new ( ) ,
556- } ,
559+ authentication_classes : Vec :: new ( ) ,
557560 }
558561 }
559562
0 commit comments