1+ use std:: str:: FromStr ;
2+
13use security:: AuthenticationConfig ;
24use serde:: { Deserialize , Serialize } ;
35use stackable_operator:: {
@@ -22,7 +24,11 @@ use stackable_operator::{
2224 schemars:: { self , JsonSchema } ,
2325 shared:: time:: Duration ,
2426 status:: condition:: { ClusterCondition , HasStatusCondition } ,
25- v2:: { config_overrides:: KeyValueConfigOverrides , role_utils:: JavaCommonConfig } ,
27+ v2:: {
28+ config_overrides:: KeyValueConfigOverrides ,
29+ role_utils:: JavaCommonConfig ,
30+ types:: kubernetes:: { ConfigMapName , ListenerClassName , SecretClassName } ,
31+ } ,
2632 versioned:: versioned,
2733} ;
2834use strum:: { Display , EnumIter , EnumString } ;
@@ -140,23 +146,23 @@ pub mod versioned {
140146 pub rest_servers : Option < RestServerRoleType > ,
141147 }
142148
143- #[ derive( Clone , Debug , Default , Deserialize , Eq , JsonSchema , PartialEq , Serialize ) ]
149+ #[ derive( Clone , Debug , Deserialize , Eq , JsonSchema , PartialEq , Serialize ) ]
144150 #[ serde( rename_all = "camelCase" ) ]
145151 pub struct HbaseClusterConfig {
146152 /// Name of the [discovery ConfigMap](DOCS_BASE_URL_PLACEHOLDER/concepts/service_discovery)
147153 /// for an HDFS cluster.
148- pub hdfs_config_map_name : String ,
154+ pub hdfs_config_map_name : ConfigMapName ,
149155
150156 /// Name of the Vector aggregator [discovery ConfigMap](DOCS_BASE_URL_PLACEHOLDER/concepts/service_discovery).
151157 /// It must contain the key `ADDRESS` with the address of the Vector aggregator.
152158 /// Follow the [logging tutorial](DOCS_BASE_URL_PLACEHOLDER/tutorials/logging-vector-aggregator)
153159 /// to learn how to configure log aggregation with Vector.
154160 #[ serde( skip_serializing_if = "Option::is_none" ) ]
155- pub vector_aggregator_config_map_name : Option < String > ,
161+ pub vector_aggregator_config_map_name : Option < ConfigMapName > ,
156162
157163 /// Name of the [discovery ConfigMap](DOCS_BASE_URL_PLACEHOLDER/concepts/service_discovery)
158164 /// for a ZooKeeper cluster.
159- pub zookeeper_config_map_name : String ,
165+ pub zookeeper_config_map_name : ConfigMapName ,
160166
161167 /// Settings related to user [authentication](DOCS_BASE_URL_PLACEHOLDER/usage-guide/security).
162168 pub authentication : Option < AuthenticationConfig > ,
@@ -207,7 +213,7 @@ impl v1alpha1::HbaseCluster {
207213 self . kerberos_secret_class ( ) . is_some ( )
208214 }
209215
210- pub fn kerberos_secret_class ( & self ) -> Option < String > {
216+ pub fn kerberos_secret_class ( & self ) -> Option < SecretClassName > {
211217 self . spec
212218 . cluster_config
213219 . authentication
@@ -220,7 +226,7 @@ impl v1alpha1::HbaseCluster {
220226 self . https_secret_class ( ) . is_some ( )
221227 }
222228
223- pub fn https_secret_class ( & self ) -> Option < String > {
229+ pub fn https_secret_class ( & self ) -> Option < SecretClassName > {
224230 self . spec
225231 . cluster_config
226232 . authentication
@@ -332,7 +338,10 @@ impl HbaseConfigFragment {
332338 affinity : get_affinity ( cluster_name, role, hdfs_discovery_cm_name) ,
333339 graceful_shutdown_timeout : Some ( graceful_shutdown_timeout) ,
334340 requested_secret_lifetime : Some ( requested_secret_lifetime) ,
335- listener_class : Some ( DEFAULT_LISTENER_CLASS . to_string ( ) ) ,
341+ listener_class : Some (
342+ ListenerClassName :: from_str ( DEFAULT_LISTENER_CLASS )
343+ . expect ( "DEFAULT_LISTENER_CLASS is a valid listener class name" ) ,
344+ ) ,
336345 }
337346 }
338347}
@@ -359,7 +368,10 @@ impl RegionServerConfigFragment {
359368 cli_opts : None ,
360369 } ,
361370 requested_secret_lifetime : Some ( HbaseRole :: DEFAULT_REGION_SECRET_LIFETIME ) ,
362- listener_class : Some ( DEFAULT_LISTENER_CLASS . to_string ( ) ) ,
371+ listener_class : Some (
372+ ListenerClassName :: from_str ( DEFAULT_LISTENER_CLASS )
373+ . expect ( "DEFAULT_LISTENER_CLASS is a valid listener class name" ) ,
374+ ) ,
363375 }
364376 }
365377}
@@ -401,7 +413,7 @@ pub enum Container {
401413 Vector ,
402414}
403415
404- #[ derive( Clone , Debug , Default , Fragment , JsonSchema , PartialEq ) ]
416+ #[ derive( Clone , Debug , Fragment , JsonSchema , PartialEq ) ]
405417#[ fragment_attrs(
406418 derive(
407419 Clone ,
@@ -439,7 +451,7 @@ pub struct HbaseConfig {
439451 pub requested_secret_lifetime : Option < Duration > ,
440452
441453 /// This field controls which [ListenerClass](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listenerclass.html) is used to expose this rolegroup.
442- pub listener_class : String ,
454+ pub listener_class : ListenerClassName ,
443455}
444456
445457#[ derive( Fragment , Clone , Debug , JsonSchema , PartialEq , Serialize , Deserialize ) ]
@@ -524,7 +536,7 @@ pub struct RegionServerConfig {
524536 pub region_mover : RegionMover ,
525537
526538 /// This field controls which [ListenerClass](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listenerclass.html) is used to expose this rolegroup.
527- pub listener_class : String ,
539+ pub listener_class : ListenerClassName ,
528540}
529541
530542#[ derive( Clone , Debug , Default , Deserialize , Eq , JsonSchema , PartialEq , Serialize ) ]
@@ -582,7 +594,7 @@ impl AnyServiceConfig {
582594 }
583595 }
584596
585- pub fn listener_class ( & self ) -> String {
597+ pub fn listener_class ( & self ) -> ListenerClassName {
586598 match self {
587599 AnyServiceConfig :: Master ( config) => config. listener_class . clone ( ) ,
588600 AnyServiceConfig :: RegionServer ( config) => config. listener_class . clone ( ) ,
0 commit comments