11//! Build the per-rolegroup `StatefulSet` for the HbaseCluster.
22
3- use std:: { collections :: BTreeMap , str:: FromStr } ;
3+ use std:: str:: FromStr ;
44
55use indoc:: formatdoc;
66use snafu:: { OptionExt , ResultExt , Snafu } ;
@@ -16,16 +16,16 @@ use stackable_operator::{
1616 api:: {
1717 apps:: v1:: { StatefulSet , StatefulSetSpec } ,
1818 core:: v1:: {
19- ConfigMapVolumeSource , ContainerPort , EnvVar , Probe , ServiceAccount ,
20- TCPSocketAction , Volume ,
19+ ConfigMapVolumeSource , ContainerPort , Probe , ServiceAccount , TCPSocketAction ,
20+ Volume ,
2121 } ,
2222 } ,
2323 apimachinery:: pkg:: { apis:: meta:: v1:: LabelSelector , util:: intstr:: IntOrString } ,
2424 } ,
2525 kube:: ResourceExt ,
2626 product_logging,
2727 v2:: {
28- builder:: pod:: container:: EnvVarSet ,
28+ builder:: pod:: container:: { EnvVarName , EnvVarSet } ,
2929 product_logging:: framework:: { ValidatedContainerLogConfigChoice , vector_container} ,
3030 types:: {
3131 kubernetes:: { ContainerName , VolumeName } ,
@@ -43,9 +43,7 @@ use crate::{
4343 properties:: logging:: { MAX_HBASE_LOG_FILES_SIZE , STACKABLE_LOG_DIR } ,
4444 } ,
4545 } ,
46- crd:: {
47- CONFIG_DIR_NAME , HbaseRole , LISTENER_VOLUME_DIR , LISTENER_VOLUME_NAME , merged_env, v1alpha1,
48- } ,
46+ crd:: { CONFIG_DIR_NAME , HbaseRole , LISTENER_VOLUME_DIR , LISTENER_VOLUME_NAME , v1alpha1} ,
4947} ;
5048
5149stackable_operator:: constant!( VECTOR_CONTAINER_NAME : ContainerName = "vector" ) ;
@@ -149,33 +147,30 @@ pub fn build_rolegroup_statefulset(
149147 ..probe_template
150148 } ;
151149
152- let mut env_map: BTreeMap < String , String > = BTreeMap :: from ( [
153- ( "HBASE_CONF_DIR" . to_string ( ) , CONFIG_DIR_NAME . to_string ( ) ) ,
150+ let merged_env = EnvVarSet :: new ( )
151+ . with_value (
152+ & EnvVarName :: from_str_unsafe ( "HBASE_CONF_DIR" ) ,
153+ CONFIG_DIR_NAME ,
154+ )
154155 // required by phoenix (for cases where Kerberos is enabled): see https://issues.apache.org/jira/browse/PHOENIX-2369
155- ( "HADOOP_CONF_DIR" . to_string ( ) , CONFIG_DIR_NAME . to_string ( ) ) ,
156- ] ) ;
157- for env_var in validated_rg_config. env_overrides . clone ( ) {
158- env_map. insert ( env_var. name , env_var. value . unwrap_or_default ( ) ) ;
159- }
160- let mut merged_env = merged_env ( & env_map) ;
161- // This env var is set for all roles to avoid bash's "unbound variable" errors
162- merged_env. extend ( [
163- EnvVar {
164- name : "REGION_MOVER_OPTS" . to_string ( ) ,
165- value : Some ( merged_config. region_mover_args ( ) ) ,
166- ..EnvVar :: default ( )
167- } ,
168- EnvVar {
169- name : "RUN_REGION_MOVER" . to_string ( ) ,
170- value : Some ( merged_config. run_region_mover ( ) . to_string ( ) ) ,
171- ..EnvVar :: default ( )
172- } ,
173- EnvVar {
174- name : "STACKABLE_LOG_DIR" . to_string ( ) ,
175- value : Some ( STACKABLE_LOG_DIR . to_string ( ) ) ,
176- ..EnvVar :: default ( )
177- } ,
178- ] ) ;
156+ . with_value (
157+ & EnvVarName :: from_str_unsafe ( "HADOOP_CONF_DIR" ) ,
158+ CONFIG_DIR_NAME ,
159+ )
160+ . merge ( validated_rg_config. env_overrides . clone ( ) )
161+ // These env vars are set for all roles to avoid bash's "unbound variable" errors.
162+ . with_value (
163+ & EnvVarName :: from_str_unsafe ( "REGION_MOVER_OPTS" ) ,
164+ merged_config. region_mover_args ( ) ,
165+ )
166+ . with_value (
167+ & EnvVarName :: from_str_unsafe ( "RUN_REGION_MOVER" ) ,
168+ merged_config. run_region_mover ( ) . to_string ( ) ,
169+ )
170+ . with_value (
171+ & EnvVarName :: from_str_unsafe ( "STACKABLE_LOG_DIR" ) ,
172+ STACKABLE_LOG_DIR ,
173+ ) ;
179174
180175 let role_name = hbase_role. cli_role_name ( ) ;
181176 let mut hbase_container = ContainerBuilder :: new ( "hbase" ) . expect ( "ContainerBuilder not created" ) ;
0 commit comments