1- use std:: collections:: BTreeMap ;
1+ use std:: { collections:: BTreeMap , str :: FromStr } ;
22
33use indoc:: formatdoc;
44use snafu:: { ResultExt , Snafu } ;
@@ -17,11 +17,20 @@ use stackable_operator::{
1717 commons:: secret_class:: SecretClassVolumeProvisionParts ,
1818 kube:: ResourceExt ,
1919 utils:: cluster_info:: KubernetesClusterInfo ,
20+ v2:: types:: kubernetes:: VolumeName ,
2021} ;
2122
2223use super :: properties:: ConfigFileName ;
2324use crate :: crd:: { HiveRole , STACKABLE_CONFIG_DIR , v1alpha1} ;
2425
26+ // Typed name for the Kerberos secret-operator volume, reusing the existing `"kerberos"` string
27+ // value so the produced volume/mount name is unchanged.
28+ stackable_operator:: constant!( pub ( crate ) KERBEROS_VOLUME_NAME : VolumeName = "kerberos" ) ;
29+
30+ /// The directory the Kerberos secret-operator volume is mounted at. `krb5.conf` and `keytab`
31+ /// sub-paths are derived from this.
32+ pub ( crate ) const STACKABLE_KERBEROS_DIR : & str = "/stackable/kerberos" ;
33+
2534#[ derive( Snafu , Debug ) ]
2635#[ allow( clippy:: enum_variant_names) ] // all variants have the same prefix: `Add`
2736pub enum Error {
@@ -57,16 +66,16 @@ pub fn add_kerberos_pod_config(
5766 . build ( )
5867 . context ( AddKerberosSecretVolumeSnafu ) ?;
5968 pb. add_volume (
60- VolumeBuilder :: new ( "kerberos" )
69+ VolumeBuilder :: new ( & * KERBEROS_VOLUME_NAME )
6170 . ephemeral ( kerberos_secret_operator_volume)
6271 . build ( ) ,
6372 )
6473 . context ( AddVolumeSnafu ) ?;
65- cb. add_volume_mount ( "kerberos" , "/stackable/kerberos" )
74+ cb. add_volume_mount ( & * KERBEROS_VOLUME_NAME , STACKABLE_KERBEROS_DIR )
6675 . context ( AddVolumeMountSnafu ) ?;
6776
6877 // Needed env vars
69- cb. add_env_var ( "KRB5_CONFIG" , "/stackable/kerberos/ krb5.conf") ;
78+ cb. add_env_var ( "KRB5_CONFIG" , format ! ( "{STACKABLE_KERBEROS_DIR}/ krb5.conf") ) ;
7079 }
7180
7281 Ok ( ( ) )
@@ -97,7 +106,7 @@ pub fn kerberos_config_properties(
97106 ) ,
98107 (
99108 "hive.metastore.kerberos.keytab.file" . to_string ( ) ,
100- "/stackable/kerberos/ keytab". to_string ( ) ,
109+ format ! ( "{STACKABLE_KERBEROS_DIR}/ keytab") ,
101110 ) ,
102111 (
103112 "hive.metastore.sasl.enabled" . to_string ( ) ,
@@ -113,15 +122,17 @@ pub fn kerberos_container_start_commands(hive: &v1alpha1::HiveCluster) -> String
113122
114123 let hive_site_xml = ConfigFileName :: HiveSite ;
115124 let mut args = vec ! [ formatdoc! { "
116- export KERBEROS_REALM=$(grep -oP 'default_realm = \\ K.*' /stackable/kerberos /krb5.conf)
125+ export KERBEROS_REALM=$(grep -oP 'default_realm = \\ K.*' {STACKABLE_KERBEROS_DIR} /krb5.conf)
117126 sed -i -e 's/${{env.KERBEROS_REALM}}/'\" $KERBEROS_REALM/g\" {STACKABLE_CONFIG_DIR}/{hive_site_xml}" ,
118127 } ] ;
119128
120129 if hive. spec . cluster_config . hdfs . is_some ( ) {
130+ let core_site_xml = ConfigFileName :: CoreSite ;
131+ let hdfs_site_xml = ConfigFileName :: HdfsSite ;
121132 args. extend ( [
122133 formatdoc ! { "
123- sed -i -e 's/${{env.KERBEROS_REALM}}/'\" $KERBEROS_REALM/g\" {STACKABLE_CONFIG_DIR}/core-site.xml
124- sed -i -e 's/${{env.KERBEROS_REALM}}/'\" $KERBEROS_REALM/g\" {STACKABLE_CONFIG_DIR}/hdfs-site.xml " ,
134+ sed -i -e 's/${{env.KERBEROS_REALM}}/'\" $KERBEROS_REALM/g\" {STACKABLE_CONFIG_DIR}/{core_site_xml}
135+ sed -i -e 's/${{env.KERBEROS_REALM}}/'\" $KERBEROS_REALM/g\" {STACKABLE_CONFIG_DIR}/{hdfs_site_xml} " ,
125136 }
126137 ] ) ;
127138 }
0 commit comments