11use std:: collections:: BTreeMap ;
22
3- use snafu:: { OptionExt , ResultExt , Snafu } ;
3+ use snafu:: { ResultExt , Snafu } ;
44use stackable_operator:: {
55 builder:: {
66 self ,
@@ -11,14 +11,13 @@ use stackable_operator::{
1111 } ,
1212 } ,
1313 commons:: secret_class:: SecretClassVolumeProvisionParts ,
14- kube:: { ResourceExt , runtime:: reflector:: ObjectRef } ,
1514 shared:: time:: Duration ,
1615 utils:: cluster_info:: KubernetesClusterInfo ,
1716} ;
1817
1918use crate :: {
2019 controller:: ValidatedCluster ,
21- crd:: { TLS_STORE_DIR , TLS_STORE_PASSWORD , TLS_STORE_VOLUME_NAME , v1alpha1 } ,
20+ crd:: { TLS_STORE_DIR , TLS_STORE_PASSWORD , TLS_STORE_VOLUME_NAME } ,
2221} ;
2322
2423/// Mount path of the Kerberos secret volume (keytab + `krb5.conf`).
@@ -31,18 +30,13 @@ const KERBEROS_VOLUME_NAME: &str = "kerberos";
3130
3231#[ derive( Snafu , Debug ) ]
3332pub enum Error {
34- #[ snafu( display( "object {hbase} is missing namespace" ) ) ]
35- ObjectMissingNamespace {
36- hbase : ObjectRef < v1alpha1:: HbaseCluster > ,
37- } ,
38-
39- #[ snafu( display( "failed to add Kerberos secret volume" ) ) ]
40- AddKerberosSecretVolume {
33+ #[ snafu( display( "failed to build Kerberos secret volume" ) ) ]
34+ BuildKerberosSecretVolume {
4135 source : stackable_operator:: builder:: pod:: volume:: SecretOperatorVolumeSourceBuilderError ,
4236 } ,
4337
44- #[ snafu( display( "failed to add TLS secret volume" ) ) ]
45- AddTlsSecretVolume {
38+ #[ snafu( display( "failed to build TLS secret volume" ) ) ]
39+ BuildTlsSecretVolume {
4640 source : stackable_operator:: builder:: pod:: volume:: SecretOperatorVolumeSourceBuilderError ,
4741 } ,
4842
@@ -56,14 +50,11 @@ pub enum Error {
5650}
5751
5852pub fn kerberos_config_properties (
59- hbase : & v1alpha1:: HbaseCluster ,
53+ hbase_name : & str ,
54+ hbase_namespace : & str ,
6055 cluster_info : & KubernetesClusterInfo ,
61- ) -> Result < BTreeMap < String , String > , Error > {
62- if !hbase. has_kerberos_enabled ( ) {
63- return Ok ( BTreeMap :: new ( ) ) ;
64- }
65-
66- let principal_host_part = principal_host_part ( hbase, cluster_info) ?;
56+ ) -> BTreeMap < String , String > {
57+ let principal_host_part = principal_host_part ( hbase_name, hbase_namespace, cluster_info) ;
6758
6859 let mut config = BTreeMap :: from ( [
6960 // Kerberos settings
@@ -126,18 +117,15 @@ pub fn kerberos_config_properties(
126117 ( "hbase.rest.ssl.keystore.type" . to_string ( ) , "pkcs12" . to_string ( ) ) ,
127118 ] ) ;
128119 config. extend ( kerberos_principals ( & principal_host_part) ) ;
129- Ok ( config)
120+ config
130121}
131122
132123pub fn kerberos_discovery_config_properties (
133- hbase : & v1alpha1:: HbaseCluster ,
124+ hbase_name : & str ,
125+ hbase_namespace : & str ,
134126 cluster_info : & KubernetesClusterInfo ,
135- ) -> Result < BTreeMap < String , String > , Error > {
136- if !hbase. has_kerberos_enabled ( ) {
137- return Ok ( BTreeMap :: new ( ) ) ;
138- }
139-
140- let principal_host_part = principal_host_part ( hbase, cluster_info) ?;
127+ ) -> BTreeMap < String , String > {
128+ let principal_host_part = principal_host_part ( hbase_name, hbase_namespace, cluster_info) ;
141129
142130 let mut config = BTreeMap :: from ( [
143131 (
@@ -148,14 +136,10 @@ pub fn kerberos_discovery_config_properties(
148136 ( "hbase.ssl.enabled" . to_string ( ) , "true" . to_string ( ) ) ,
149137 ] ) ;
150138 config. extend ( kerberos_principals ( & principal_host_part) ) ;
151- Ok ( config)
139+ config
152140}
153141
154- pub fn kerberos_ssl_server_settings ( hbase : & v1alpha1:: HbaseCluster ) -> BTreeMap < String , String > {
155- if !hbase. has_https_enabled ( ) {
156- return BTreeMap :: new ( ) ;
157- }
158-
142+ pub fn kerberos_ssl_server_settings ( ) -> BTreeMap < String , String > {
159143 let mut settings = truststore_settings ( "server" ) ;
160144 settings. extend ( [
161145 (
@@ -171,11 +155,7 @@ pub fn kerberos_ssl_server_settings(hbase: &v1alpha1::HbaseCluster) -> BTreeMap<
171155 settings
172156}
173157
174- pub fn kerberos_ssl_client_settings ( hbase : & v1alpha1:: HbaseCluster ) -> BTreeMap < String , String > {
175- if !hbase. has_https_enabled ( ) {
176- return BTreeMap :: new ( ) ;
177- }
178-
158+ pub fn kerberos_ssl_client_settings ( ) -> BTreeMap < String , String > {
179159 truststore_settings ( "client" )
180160}
181161
@@ -197,7 +177,7 @@ pub fn add_kerberos_pod_config(
197177 . with_kerberos_service_name ( kerberos_service_name ( ) )
198178 . with_kerberos_service_name ( "HTTP" )
199179 . build ( )
200- . context ( AddKerberosSecretVolumeSnafu ) ?;
180+ . context ( BuildKerberosSecretVolumeSnafu ) ?;
201181 pb. add_volume (
202182 VolumeBuilder :: new ( KERBEROS_VOLUME_NAME )
203183 . ephemeral ( kerberos_secret_operator_volume)
@@ -230,7 +210,7 @@ pub fn add_kerberos_pod_config(
230210 . with_tls_pkcs12_password ( TLS_STORE_PASSWORD )
231211 . with_auto_tls_cert_lifetime ( requested_secret_lifetime)
232212 . build ( )
233- . context ( AddTlsSecretVolumeSnafu ) ?,
213+ . context ( BuildTlsSecretVolumeSnafu ) ?,
234214 )
235215 . build ( ) ,
236216 )
@@ -279,17 +259,12 @@ fn truststore_settings(role: &str) -> BTreeMap<String, String> {
279259}
280260
281261fn principal_host_part (
282- hbase : & v1alpha1:: HbaseCluster ,
262+ hbase_name : & str ,
263+ hbase_namespace : & str ,
283264 cluster_info : & KubernetesClusterInfo ,
284- ) -> Result < String , Error > {
285- let hbase_name = hbase. name_any ( ) ;
286- let hbase_namespace = hbase. namespace ( ) . context ( ObjectMissingNamespaceSnafu {
287- hbase : ObjectRef :: from_obj ( hbase) ,
288- } ) ?;
265+ ) -> String {
289266 let cluster_domain = & cluster_info. cluster_domain ;
290- Ok ( format ! (
291- "{hbase_name}.{hbase_namespace}.svc.{cluster_domain}@${{env:KERBEROS_REALM}}"
292- ) )
267+ format ! ( "{hbase_name}.{hbase_namespace}.svc.{cluster_domain}@${{env:KERBEROS_REALM}}" )
293268}
294269
295270/// We could have different service names depended on the role (e.g. "hbase-master", "hbase-regionserver" and
0 commit comments