Skip to content

Commit 04bff1f

Browse files
Use constants for environment variable names
1 parent c4c7c75 commit 04bff1f

7 files changed

Lines changed: 120 additions & 80 deletions

File tree

Cargo.lock

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.nix

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

crate-hashes.json

Lines changed: 9 additions & 9 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

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

Lines changed: 39 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,12 @@
11
//! Configuration of an OpenSearch node
22
3+
use std::str::FromStr;
4+
35
use serde_json::json;
46
use stackable_operator::{
57
builder::pod::container::FieldPathEnvVar,
68
commons::networking::DomainName,
9+
constant,
710
k8s_openapi::DeepMerge,
811
v2::{
912
builder::pod::container::{EnvVarName, EnvVarSet},
@@ -140,6 +143,17 @@ const CONFIG_OPTION_TRANSPORT_PUBLISH_HOST: &str = "transport.publish_host";
140143

141144
const DEFAULT_OPENSEARCH_HOME: &str = "/stackable/opensearch";
142145

146+
constant!(ENV_VAR_NAME_DISCOVERY_SEED_HOSTS: EnvVarName = CONFIG_OPTION_DISCOVERY_SEED_HOSTS);
147+
constant!(ENV_VAR_NAME_HTTP_PUBLISH_HOST: EnvVarName = CONFIG_OPTION_HTTP_PUBLISH_HOST);
148+
constant!(ENV_VAR_NAME_INITIAL_CLUSTER_MANAGER_NODES: EnvVarName = CONFIG_OPTION_INITIAL_CLUSTER_MANAGER_NODES);
149+
constant!(ENV_VAR_NAME_NETWORK_PUBLISH_HOST: EnvVarName = CONFIG_OPTION_NETWORK_PUBLISH_HOST);
150+
constant!(ENV_VAR_NAME_NODE_NAME: EnvVarName = CONFIG_OPTION_NODE_NAME);
151+
constant!(ENV_VAR_NAME_NODE_ROLES: EnvVarName = CONFIG_OPTION_NODE_ROLES);
152+
constant!(ENV_VAR_NAME_OPENSEARCH_HOME: EnvVarName = "OPENSEARCH_HOME");
153+
constant!(ENV_VAR_NAME_OPENSEARCH_PATH_CONF: EnvVarName = "OPENSEARCH_PATH_CONF");
154+
constant!(ENV_VAR_NAME_POD_NAME: EnvVarName = "_POD_NAME");
155+
constant!(ENV_VAR_NAME_TRANSPORT_PUBLISH_HOST: EnvVarName = CONFIG_OPTION_TRANSPORT_PUBLISH_HOST);
156+
143157
/// Configuration of an OpenSearch node based on the cluster and role-group configuration
144158
pub struct NodeConfig {
145159
cluster: ValidatedCluster,
@@ -295,36 +309,36 @@ impl NodeConfig {
295309
.with_field_path(
296310
// Prefix with an underscore, so that it occurs before the other environment
297311
// variables which depend on it.
298-
&EnvVarName::from_str_unsafe("_POD_NAME"),
312+
&ENV_VAR_NAME_POD_NAME,
299313
&FieldPathEnvVar::Name,
300314
)
301315
// Set the OpenSearch node name to the Pod name.
302316
// The node name is used e.g. for INITIAL_CLUSTER_MANAGER_NODES.
303317
.with_field_path(
304-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_NODE_NAME),
318+
&ENV_VAR_NAME_NODE_NAME,
305319
&FieldPathEnvVar::Name,
306320
)
307321
.with_value(
308-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_NETWORK_PUBLISH_HOST),
322+
&ENV_VAR_NAME_NETWORK_PUBLISH_HOST,
309323
&fqdn,
310324
)
311325
.with_value(
312-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_TRANSPORT_PUBLISH_HOST),
326+
&ENV_VAR_NAME_TRANSPORT_PUBLISH_HOST,
313327
&fqdn,
314328
)
315329
.with_value(
316-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_HTTP_PUBLISH_HOST),
330+
&ENV_VAR_NAME_HTTP_PUBLISH_HOST,
317331
&fqdn,
318332
)
319333
.with_value(
320-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_DISCOVERY_SEED_HOSTS),
334+
&ENV_VAR_NAME_DISCOVERY_SEED_HOSTS,
321335
format!(
322336
"{}.{}.svc.{}",
323337
self.seed_nodes_service_name, self.cluster.namespace, self.cluster_domain_name
324338
),
325339
)
326340
.with_value(
327-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_NODE_ROLES),
341+
&ENV_VAR_NAME_NODE_ROLES,
328342
Self::to_comma_separated_list(
329343
&self
330344
.role_group_config
@@ -339,7 +353,7 @@ impl NodeConfig {
339353

340354
if let Some(initial_cluster_manager_nodes) = self.initial_cluster_manager_nodes() {
341355
env_vars = env_vars.with_value(
342-
&EnvVarName::from_str_unsafe(CONFIG_OPTION_INITIAL_CLUSTER_MANAGER_NODES),
356+
&ENV_VAR_NAME_INITIAL_CLUSTER_MANAGER_NODES,
343357
initial_cluster_manager_nodes,
344358
);
345359
}
@@ -456,7 +470,7 @@ impl NodeConfig {
456470
/// Return content of the `OPENSEARCH_HOME` environment variable from envOverrides or default to `DEFAULT_OPENSEARCH_HOME`
457471
pub fn opensearch_home(&self) -> String {
458472
self.environment_variables()
459-
.get(&EnvVarName::from_str_unsafe("OPENSEARCH_HOME"))
473+
.get(&ENV_VAR_NAME_OPENSEARCH_HOME)
460474
.and_then(|env_var| env_var.value.clone())
461475
.unwrap_or(DEFAULT_OPENSEARCH_HOME.to_owned())
462476
}
@@ -465,7 +479,7 @@ impl NodeConfig {
465479
pub fn opensearch_path_conf(&self) -> String {
466480
let opensearch_home = self.opensearch_home();
467481
self.environment_variables()
468-
.get(&EnvVarName::from_str_unsafe("OPENSEARCH_PATH_CONF"))
482+
.get(&ENV_VAR_NAME_OPENSEARCH_PATH_CONF)
469483
.and_then(|env_var| env_var.value.clone())
470484
.unwrap_or(format!("{opensearch_home}/config"))
471485
}
@@ -675,6 +689,21 @@ mod tests {
675689
);
676690
}
677691

692+
#[test]
693+
fn test_constants() {
694+
// Test that dereferencing the constants does not panic.
695+
let _ = *ENV_VAR_NAME_DISCOVERY_SEED_HOSTS;
696+
let _ = *ENV_VAR_NAME_HTTP_PUBLISH_HOST;
697+
let _ = *ENV_VAR_NAME_INITIAL_CLUSTER_MANAGER_NODES;
698+
let _ = *ENV_VAR_NAME_NETWORK_PUBLISH_HOST;
699+
let _ = *ENV_VAR_NAME_NODE_NAME;
700+
let _ = *ENV_VAR_NAME_NODE_ROLES;
701+
let _ = *ENV_VAR_NAME_OPENSEARCH_HOME;
702+
let _ = *ENV_VAR_NAME_OPENSEARCH_PATH_CONF;
703+
let _ = *ENV_VAR_NAME_POD_NAME;
704+
let _ = *ENV_VAR_NAME_TRANSPORT_PUBLISH_HOST;
705+
}
706+
678707
#[test]
679708
pub fn test_super_admin_dn() {
680709
let node_config = node_config(TestConfig::default());

rust/operator-binary/src/controller/build/product_logging/config.rs

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
//! OpenSearch specific log configuration
22
3-
use std::{cmp, collections::BTreeMap};
3+
use std::{cmp, collections::BTreeMap, str::FromStr};
44

55
use stackable_operator::{
6+
constant,
67
memory::{BinaryMultiple, MemoryQuantity},
78
product_logging::spec::{AppenderConfig, AutomaticContainerLogConfig, LogLevel, LoggerConfig},
89
v2::{
@@ -23,6 +24,8 @@ pub const MAX_OPENSEARCH_SERVER_LOG_FILES_SIZE: MemoryQuantity = MemoryQuantity
2324
unit: BinaryMultiple::Mebi,
2425
};
2526

27+
constant!(ENV_VAR_NAME_OPENSEARCH_SERVER_LOG_FILE: EnvVarName = "OPENSEARCH_SERVER_LOG_FILE");
28+
2629
/// Create a log4j2 configuration from the given automatic log configuration
2730
pub fn create_log4j2_config(config: &AutomaticContainerLogConfig) -> String {
2831
[
@@ -189,7 +192,7 @@ pub fn vector_config_file_content() -> String {
189192
/// [`crate::framework::product_logging::framework::vector_container`].
190193
pub fn vector_config_file_extra_env_vars() -> EnvVarSet {
191194
EnvVarSet::new().with_value(
192-
&EnvVarName::from_str_unsafe("OPENSEARCH_SERVER_LOG_FILE"),
195+
&ENV_VAR_NAME_OPENSEARCH_SERVER_LOG_FILE,
193196
"opensearch_server.json",
194197
)
195198
}
@@ -200,7 +203,16 @@ mod tests {
200203
AppenderConfig, AutomaticContainerLogConfig, LogLevel, LoggerConfig,
201204
};
202205

203-
use super::{create_log4j2_config, vector_config_file_extra_env_vars};
206+
use super::{
207+
ENV_VAR_NAME_OPENSEARCH_SERVER_LOG_FILE, create_log4j2_config,
208+
vector_config_file_extra_env_vars,
209+
};
210+
211+
#[test]
212+
fn test_constants() {
213+
// Test that dereferencing the constants does not panic.
214+
let _ = *ENV_VAR_NAME_OPENSEARCH_SERVER_LOG_FILE;
215+
}
204216

205217
#[test]
206218
pub fn test_create_log4j2_config() {

0 commit comments

Comments
 (0)