@@ -57,6 +57,35 @@ pub struct ResolvedAuthenticationClasses {
5757}
5858
5959impl ResolvedAuthenticationClasses {
60+ /// Fetch the referenced AuthenticationClasses from the Kubernetes API without validating them.
61+ ///
62+ /// Call [`Self::validate`] on the result to enforce the constraints documented there.
63+ pub async fn fetch_references (
64+ client : & Client ,
65+ auth_classes : & Vec < v1alpha1:: ZookeeperAuthentication > ,
66+ ) -> Result < ResolvedAuthenticationClasses , Error > {
67+ let mut resolved_authentication_classes: Vec < core:: v1alpha1:: AuthenticationClass > = vec ! [ ] ;
68+
69+ for auth_class in auth_classes {
70+ resolved_authentication_classes. push (
71+ core:: v1alpha1:: AuthenticationClass :: resolve (
72+ client,
73+ & auth_class. authentication_class ,
74+ )
75+ . await
76+ . context ( AuthenticationClassRetrievalSnafu {
77+ authentication_class : ObjectRef :: < core:: v1alpha1:: AuthenticationClass > :: new (
78+ & auth_class. authentication_class ,
79+ ) ,
80+ } ) ?,
81+ ) ;
82+ }
83+
84+ Ok ( ResolvedAuthenticationClasses {
85+ resolved_authentication_classes,
86+ } )
87+ }
88+
6089 /// Return the (first) TLS `AuthenticationClass` if available
6190 pub fn get_tls_authentication_class ( & self ) -> Option < & core:: v1alpha1:: AuthenticationClass > {
6291 self . resolved_authentication_classes . iter ( ) . find ( |auth| {
@@ -101,31 +130,3 @@ impl ResolvedAuthenticationClasses {
101130 }
102131 }
103132}
104-
105- /// Resolve provided AuthenticationClasses via API calls and validate the contents.
106- /// Currently errors out if:
107- /// - AuthenticationClass could not be resolved
108- /// - Validation failed
109- pub async fn resolve_authentication_classes (
110- client : & Client ,
111- auth_classes : & Vec < v1alpha1:: ZookeeperAuthentication > ,
112- ) -> Result < ResolvedAuthenticationClasses , Error > {
113- let mut resolved_authentication_classes: Vec < core:: v1alpha1:: AuthenticationClass > = vec ! [ ] ;
114-
115- for auth_class in auth_classes {
116- resolved_authentication_classes. push (
117- core:: v1alpha1:: AuthenticationClass :: resolve ( client, & auth_class. authentication_class )
118- . await
119- . context ( AuthenticationClassRetrievalSnafu {
120- authentication_class : ObjectRef :: < core:: v1alpha1:: AuthenticationClass > :: new (
121- & auth_class. authentication_class ,
122- ) ,
123- } ) ?,
124- ) ;
125- }
126-
127- ResolvedAuthenticationClasses {
128- resolved_authentication_classes,
129- }
130- . validate ( )
131- }
0 commit comments