Skip to content

Commit f14e138

Browse files
committed
refactor: move ConfigFileName enum
1 parent 9d3411d commit f14e138

8 files changed

Lines changed: 77 additions & 75 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ use stackable_operator::{
66
utils::COMMON_BASH_TRAP_FUNCTIONS,
77
};
88

9+
use super::properties::ConfigFileName;
910
use crate::crd::{
10-
BROKER_ID_POD_MAP_DIR, ConfigFileName, KafkaPodDescriptor, STACKABLE_CONFIG_DIR,
11-
STACKABLE_KERBEROS_KRB5_PATH, STACKABLE_LOG_CONFIG_DIR, STACKABLE_LOG_DIR,
12-
security::KafkaTlsSecurity,
11+
BROKER_ID_POD_MAP_DIR, KafkaPodDescriptor, STACKABLE_CONFIG_DIR, STACKABLE_KERBEROS_KRB5_PATH,
12+
STACKABLE_LOG_CONFIG_DIR, STACKABLE_LOG_DIR, security::KafkaTlsSecurity,
1313
};
1414

1515
/// The JVM options selecting the Kafka log4j/log4j2 config file. Kafka 3.x uses log4j,

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,8 @@ use stackable_operator::{
44
v2::jvm_argument_overrides::JvmArgumentOverrides,
55
};
66

7-
use crate::crd::{ConfigFileName, METRICS_PORT, STACKABLE_CONFIG_DIR, role::AnyConfig};
7+
use super::properties::ConfigFileName;
8+
use crate::crd::{METRICS_PORT, STACKABLE_CONFIG_DIR, role::AnyConfig};
89

910
const JAVA_HEAP_FACTOR: f32 = 0.8;
1011

rust/operator-binary/src/controller/build/properties/logging.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,9 @@ use stackable_operator::{
1212
role_utils::RoleGroupRef,
1313
};
1414

15+
use super::ConfigFileName;
1516
use crate::crd::{
16-
ConfigFileName, STACKABLE_LOG_DIR,
17+
STACKABLE_LOG_DIR,
1718
role::{AnyConfig, broker::BrokerContainer, controller::ControllerContainer},
1819
v1alpha1,
1920
};

rust/operator-binary/src/controller/build/properties/mod.rs

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,45 @@ pub mod listener;
66
pub mod logging;
77
pub mod security_properties;
88

9-
use crate::crd::{KafkaPodDescriptor, role::KafkaRole};
9+
use crate::crd::{
10+
KafkaPodDescriptor,
11+
role::{AnyConfig, KafkaRole},
12+
};
13+
14+
/// The names of the config files assembled into the rolegroup `ConfigMap`.
15+
///
16+
/// A single source of truth for the on-disk file names, used by the config-map
17+
/// builder, the per-file property builders and the JVM/command builders.
18+
#[derive(Clone, Copy, Debug, PartialEq, Eq, strum::Display)]
19+
pub enum ConfigFileName {
20+
#[strum(serialize = "broker.properties")]
21+
BrokerProperties,
22+
#[strum(serialize = "controller.properties")]
23+
ControllerProperties,
24+
#[strum(serialize = "security.properties")]
25+
Security,
26+
#[strum(serialize = "client.properties")]
27+
Client,
28+
/// JAAS configuration for Kerberos authentication. It has the `.properties`
29+
/// extension but is not a Java properties file.
30+
#[strum(serialize = "jaas.properties")]
31+
Jaas,
32+
/// Used by Kafka 3.x.
33+
#[strum(serialize = "log4j.properties")]
34+
Log4j,
35+
/// Used by Kafka 4.0 and later.
36+
#[strum(serialize = "log4j2.properties")]
37+
Log4j2,
38+
}
39+
40+
/// The product config-file name for a role group, derived from its role
41+
/// (`broker.properties` for brokers, `controller.properties` for controllers).
42+
pub fn config_file_name(config: &AnyConfig) -> ConfigFileName {
43+
match config {
44+
AnyConfig::Broker(_) => ConfigFileName::BrokerProperties,
45+
AnyConfig::Controller(_) => ConfigFileName::ControllerProperties,
46+
}
47+
}
1048

1149
pub(crate) fn kraft_controllers(pod_descriptors: &[KafkaPodDescriptor]) -> Vec<String> {
1250
pod_descriptors
@@ -21,3 +59,25 @@ pub(crate) fn kraft_controllers(pod_descriptors: &[KafkaPodDescriptor]) -> Vec<S
2159
})
2260
.collect::<Vec<String>>()
2361
}
62+
63+
#[cfg(test)]
64+
mod tests {
65+
use super::*;
66+
67+
#[test]
68+
fn file_names_match_the_kafka_on_disk_names() {
69+
assert_eq!(
70+
ConfigFileName::BrokerProperties.to_string(),
71+
"broker.properties"
72+
);
73+
assert_eq!(
74+
ConfigFileName::ControllerProperties.to_string(),
75+
"controller.properties"
76+
);
77+
assert_eq!(ConfigFileName::Security.to_string(), "security.properties");
78+
assert_eq!(ConfigFileName::Client.to_string(), "client.properties");
79+
assert_eq!(ConfigFileName::Jaas.to_string(), "jaas.properties");
80+
assert_eq!(ConfigFileName::Log4j.to_string(), "log4j.properties");
81+
assert_eq!(ConfigFileName::Log4j2.to_string(), "log4j2.properties");
82+
}
83+
}

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@ use stackable_operator::{
1313
use crate::{
1414
controller::{
1515
RoleGroupName, ValidatedCluster, ValidatedRoleGroupConfig,
16-
build::properties::logging::role_group_config_map_data,
16+
build::properties::{
17+
ConfigFileName, config_file_name, logging::role_group_config_map_data,
18+
},
1719
},
1820
crd::{
19-
ConfigFileName, STACKABLE_LISTENER_BOOTSTRAP_DIR, STACKABLE_LISTENER_BROKER_DIR,
21+
STACKABLE_LISTENER_BOOTSTRAP_DIR, STACKABLE_LISTENER_BROKER_DIR,
2022
listener::{KafkaListenerConfig, node_address_cmd},
2123
role::AnyConfig,
2224
},
@@ -70,7 +72,7 @@ pub fn build_rolegroup_config_map(
7072
let cluster_config = &validated_cluster.cluster_config;
7173
let kafka_security = &cluster_config.kafka_security;
7274
let resolved_product_image = &validated_cluster.image;
73-
let kafka_config_file_name = validated_rg.config.config_file_name().to_string();
75+
let kafka_config_file_name = config_file_name(&validated_rg.config).to_string();
7476
let config_overrides = validated_rg
7577
.config_overrides
7678
.config_file_overrides()

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

Lines changed: 0 additions & 50 deletions
This file was deleted.

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
pub mod affinity;
22
pub mod authentication;
33
pub mod authorization;
4-
pub mod config_file;
54
pub mod listener;
65
pub mod role;
76
pub mod security;
87
pub mod tls;
98

109
use authentication::KafkaAuthentication;
11-
pub use config_file::ConfigFileName;
1210
use serde::{Deserialize, Serialize};
1311
use snafu::{OptionExt, Snafu};
1412
use stackable_operator::{

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

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -15,13 +15,10 @@ use stackable_operator::{
1515
use strum::{Display, EnumIter, EnumString, IntoEnumIterator};
1616

1717
use crate::{
18-
crd::{
19-
ConfigFileName,
20-
role::{
21-
broker::BrokerConfig,
22-
commons::{CommonConfig, Storage},
23-
controller::ControllerConfig,
24-
},
18+
crd::role::{
19+
broker::BrokerConfig,
20+
commons::{CommonConfig, Storage},
21+
controller::ControllerConfig,
2522
},
2623
v1alpha1,
2724
};
@@ -228,13 +225,6 @@ impl AnyConfig {
228225
AnyConfig::Controller(_) => None,
229226
}
230227
}
231-
232-
pub fn config_file_name(&self) -> ConfigFileName {
233-
match self {
234-
AnyConfig::Broker(_) => ConfigFileName::BrokerProperties,
235-
AnyConfig::Controller(_) => ConfigFileName::ControllerProperties,
236-
}
237-
}
238228
}
239229

240230
/// Merged role/role-group `configOverrides` for a role group of an unknown type.

0 commit comments

Comments
 (0)