Skip to content

Commit 064e3f4

Browse files
committed
chore: cleanup constants
1 parent c941688 commit 064e3f4

4 files changed

Lines changed: 46 additions & 54 deletions

File tree

rust/operator-binary/src/controller/build/jvm.rs

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ use stackable_operator::{
44
v2::jvm_argument_overrides::JvmArgumentOverrides,
55
};
66

7-
use crate::crd::{AnyServiceConfig, CONFIG_DIR_NAME, JVM_SECURITY_PROPERTIES_FILE, v1alpha1};
7+
use crate::{
8+
controller::build::kerberos::KRB5_CONFIG_PATH,
9+
crd::{AnyServiceConfig, CONFIG_DIR_NAME, JVM_SECURITY_PROPERTIES_FILE, v1alpha1},
10+
};
811

912
const JAVA_HEAP_FACTOR: f32 = 0.8;
1013

@@ -24,7 +27,7 @@ pub fn construct_global_jvm_args(kerberos_enabled: bool) -> String {
2427
let mut jvm_args = Vec::new();
2528

2629
if kerberos_enabled {
27-
jvm_args.push("-Djava.security.krb5.conf=/stackable/kerberos/krb5.conf");
30+
jvm_args.push(format!("-Djava.security.krb5.conf={KRB5_CONFIG_PATH}"));
2831
}
2932

3033
// We do *not* add user overrides to the global JVM args, but only the role specific JVM arguments.
@@ -54,8 +57,7 @@ pub fn construct_role_specific_non_heap_jvm_args(
5457
)];
5558

5659
if hbase.has_kerberos_enabled() {
57-
operator_generated
58-
.push("-Djava.security.krb5.conf=/stackable/kerberos/krb5.conf".to_owned());
60+
operator_generated.push(format!("-Djava.security.krb5.conf={KRB5_CONFIG_PATH}"));
5961
}
6062

6163
let mut jvm_args = merged_jvm_argument_overrides.apply_to(operator_generated);

rust/operator-binary/src/controller/build/kerberos.rs

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,14 @@ use stackable_operator::{
1818

1919
use crate::crd::{TLS_STORE_DIR, TLS_STORE_PASSWORD, TLS_STORE_VOLUME_NAME, v1alpha1};
2020

21+
/// Mount path of the Kerberos secret volume (keytab + `krb5.conf`).
22+
pub const STACKABLE_KERBEROS_DIR: &str = "/stackable/kerberos";
23+
/// Path of the `krb5.conf` rendered into the Kerberos secret volume. Referenced both here (the
24+
/// `KRB5_CONFIG` env var) and by the JVM args builder.
25+
pub const KRB5_CONFIG_PATH: &str = const_format::concatcp!(STACKABLE_KERBEROS_DIR, "/krb5.conf");
26+
/// Name of the Kerberos secret volume.
27+
const KERBEROS_VOLUME_NAME: &str = "kerberos";
28+
2129
#[derive(Snafu, Debug)]
2230
pub enum Error {
2331
#[snafu(display("object {hbase} is missing namespace"))]
@@ -188,16 +196,16 @@ pub fn add_kerberos_pod_config(
188196
.build()
189197
.context(AddKerberosSecretVolumeSnafu)?;
190198
pb.add_volume(
191-
VolumeBuilder::new("kerberos")
199+
VolumeBuilder::new(KERBEROS_VOLUME_NAME)
192200
.ephemeral(kerberos_secret_operator_volume)
193201
.build(),
194202
)
195203
.context(AddVolumeSnafu)?;
196-
cb.add_volume_mount("kerberos", "/stackable/kerberos")
204+
cb.add_volume_mount(KERBEROS_VOLUME_NAME, STACKABLE_KERBEROS_DIR)
197205
.context(AddVolumeMountSnafu)?;
198206

199207
// Needed env vars
200-
cb.add_env_var("KRB5_CONFIG", "/stackable/kerberos/krb5.conf");
208+
cb.add_env_var("KRB5_CONFIG", KRB5_CONFIG_PATH);
201209
}
202210

203211
if let Some(https_secret_class) = hbase.https_secret_class() {

rust/operator-binary/src/controller/build/resource/statefulset.rs

Lines changed: 28 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Build the per-rolegroup `StatefulSet` for the HbaseCluster.
22
3-
use std::{collections::BTreeMap, str::FromStr};
3+
use std::str::FromStr;
44

55
use indoc::formatdoc;
66
use 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

5149
stackable_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");

rust/operator-binary/src/crd/mod.rs

Lines changed: 1 addition & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::collections::BTreeMap;
2-
31
use security::AuthenticationConfig;
42
use serde::{Deserialize, Serialize};
53
use shell_escape::escape;
@@ -24,7 +22,7 @@ use stackable_operator::{
2422
},
2523
deep_merger::ObjectOverrides,
2624
k8s_openapi::{
27-
api::core::v1::{EnvVar, PersistentVolumeClaim, Volume},
25+
api::core::v1::{PersistentVolumeClaim, Volume},
2826
apimachinery::pkg::api::resource::Quantity,
2927
},
3028
kube::CustomResource,
@@ -263,17 +261,6 @@ impl v1alpha1::HbaseCluster {
263261
}
264262
}
265263

266-
pub fn merged_env(rolegroup_config: &BTreeMap<String, String>) -> Vec<EnvVar> {
267-
rolegroup_config
268-
.iter()
269-
.map(|(env_name, env_value)| EnvVar {
270-
name: env_name.clone(),
271-
value: Some(env_value.to_owned()),
272-
value_from: None,
273-
})
274-
.collect()
275-
}
276-
277264
#[derive(
278265
Clone,
279266
Debug,

0 commit comments

Comments
 (0)