Skip to content

Commit 86ac135

Browse files
Use KeyValueConfigOverrides with BTreeMap<String, String>
1 parent 8e8095f commit 86ac135

12 files changed

Lines changed: 68 additions & 132 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.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,6 @@ tracing = "0.1"
3030
tracing-futures = { version = "0.2", features = ["futures-03"] }
3131

3232
[patch."https://github.com/stackabletech/operator-rs.git"]
33-
stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "smooth-operator" }
33+
stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "feat/improve-keyvalueconfigoverrides" }
3434
# stackable-operator = { path = "../operator-rs/crates/stackable-operator" }
3535
# stackable-operator = { git = "https://github.com/stackabletech//operator-rs.git", branch = "main" }

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/config/mod.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,8 +40,8 @@ impl HdfsSiteConfigBuilder {
4040
self
4141
}
4242

43-
pub fn extend(&mut self, properties: &BTreeMap<String, String>) -> &mut Self {
44-
self.config.extend(properties.clone());
43+
pub fn extend(&mut self, properties: impl IntoIterator<Item = (String, String)>) -> &mut Self {
44+
self.config.extend(properties);
4545
self
4646
}
4747

@@ -238,8 +238,8 @@ impl CoreSiteConfigBuilder {
238238
self
239239
}
240240

241-
pub fn extend(&mut self, properties: &BTreeMap<String, String>) -> &mut Self {
242-
self.config.extend(properties.clone());
241+
pub fn extend(&mut self, properties: impl IntoIterator<Item = (String, String)>) -> &mut Self {
242+
self.config.extend(properties);
243243
self
244244
}
245245

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

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
//! Builds the `core-site.xml` config file.
22
3-
use std::collections::BTreeMap;
4-
53
use stackable_operator::{
64
utils::cluster_info::KubernetesClusterInfo, v2::config_overrides::KeyValueConfigOverrides,
75
};
86

97
use crate::{
10-
config::CoreSiteConfigBuilder, controller::build::properties::resolved_overrides,
11-
crd::HdfsNodeRole, hdfs_controller::ValidatedCluster, security::kerberos::KerberosConfig,
8+
config::CoreSiteConfigBuilder, crd::HdfsNodeRole, hdfs_controller::ValidatedCluster,
9+
security::kerberos::KerberosConfig,
1210
};
1311

1412
/// Renders `core-site.xml`: operator defaults + kerberos/OPA security config,
@@ -48,24 +46,21 @@ pub fn build(
4846
opa_config.add_core_site_config(&mut core_site);
4947
}
5048
// the extend with config must come last in order to have overrides working!!!
51-
let overrides: BTreeMap<String, String> = resolved_overrides(overrides).collect();
52-
core_site.extend(&overrides).build_as_xml()
49+
core_site.extend(overrides).build_as_xml()
5350
}
5451

5552
#[cfg(test)]
5653
mod tests {
5754
use super::*;
58-
use crate::controller::build::properties::test_support::{
59-
cluster_info, config_overrides, validated_cluster,
60-
};
55+
use crate::controller::build::properties::test_support::{cluster_info, validated_cluster};
6156

6257
#[test]
6358
fn renders_operator_defaults() {
6459
let xml = build(
6560
&validated_cluster(),
6661
HdfsNodeRole::Name,
6762
&cluster_info(),
68-
config_overrides(&[]),
63+
KeyValueConfigOverrides::default(),
6964
);
7065
assert!(
7166
xml.contains("<name>fs.defaultFS</name>\n <value>hdfs://hdfs/</value>"),
@@ -89,7 +84,7 @@ mod tests {
8984
&validated_cluster(),
9085
HdfsNodeRole::Name,
9186
&cluster_info(),
92-
config_overrides(&[("io.file.buffer.size", "65536")]),
87+
[("io.file.buffer.size", "65536")].into(),
9388
);
9489
assert!(
9590
xml.contains("<name>io.file.buffer.size</name>\n <value>65536</value>"),

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

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,23 @@
33
//! The operator sets no defaults here; the file exists purely so users can
44
//! supply `configOverrides`.
55
6-
use std::collections::BTreeMap;
7-
86
use stackable_operator::v2::{
97
config_file_writer::to_hadoop_xml, config_overrides::KeyValueConfigOverrides,
108
};
119

12-
use crate::controller::build::properties::resolved_overrides;
13-
1410
/// Renders `hadoop-policy.xml` from the user-provided overrides only.
1511
pub fn build(overrides: KeyValueConfigOverrides) -> String {
16-
let config: BTreeMap<String, String> = resolved_overrides(overrides).collect();
17-
to_hadoop_xml(config.iter())
12+
to_hadoop_xml(overrides.iter())
1813
}
1914

2015
#[cfg(test)]
2116
mod tests {
2217
use super::*;
23-
use crate::controller::build::properties::test_support::config_overrides;
2418

2519
#[test]
2620
fn empty_overrides_render_empty_configuration() {
2721
assert_eq!(
28-
build(config_overrides(&[])),
22+
build(KeyValueConfigOverrides::default()),
2923
concat!(
3024
"<?xml version=\"1.0\"?>\n",
3125
"<configuration>\n",
@@ -37,7 +31,7 @@ mod tests {
3731
#[test]
3832
fn overrides_are_rendered_as_properties() {
3933
assert_eq!(
40-
build(config_overrides(&[("security.client.protocol.acl", "*")])),
34+
build([("security.client.protocol.acl", "*")].into()),
4135
concat!(
4236
"<?xml version=\"1.0\"?>\n",
4337
"<configuration>\n",

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,11 @@
11
//! Builds the `hdfs-site.xml` config file.
22
3-
use std::collections::BTreeMap;
4-
53
use stackable_operator::{
64
utils::cluster_info::KubernetesClusterInfo, v2::config_overrides::KeyValueConfigOverrides,
75
};
86

97
use crate::{
108
config::HdfsSiteConfigBuilder,
11-
controller::build::properties::resolved_overrides,
129
crd::{AnyNodeConfig, HdfsNodeRole},
1310
hdfs_controller::ValidatedCluster,
1411
};
@@ -110,16 +107,15 @@ pub fn build(
110107
opa_config.add_hdfs_site_config(&mut hdfs_site);
111108
}
112109
// the extend with config must come last in order to have overrides working!!!
113-
let overrides: BTreeMap<String, String> = resolved_overrides(overrides).collect();
114-
hdfs_site.extend(&overrides).build_as_xml()
110+
hdfs_site.extend(overrides).build_as_xml()
115111
}
116112

117113
#[cfg(test)]
118114
mod tests {
119115
use super::*;
120116
use crate::{
121117
controller::build::properties::test_support::{
122-
cluster_info, config_overrides, minimal_hdfs, validated_cluster,
118+
cluster_info, minimal_hdfs, validated_cluster,
123119
},
124120
crd::{HdfsNodeRole, v1alpha1},
125121
};
@@ -137,7 +133,7 @@ mod tests {
137133
&validated_cluster(),
138134
&cluster_info(),
139135
&merged,
140-
config_overrides(&[]),
136+
KeyValueConfigOverrides::default(),
141137
);
142138
assert!(
143139
xml.contains("<name>dfs.replication</name>\n <value>3</value>"),
@@ -156,7 +152,7 @@ mod tests {
156152
&validated_cluster(),
157153
&cluster_info(),
158154
&merged,
159-
config_overrides(&[("dfs.replication", "5")]),
155+
[("dfs.replication", "5")].into(),
160156
);
161157
assert!(
162158
xml.contains("<name>dfs.replication</name>\n <value>5</value>"),

0 commit comments

Comments
 (0)