Skip to content

Commit 68248a5

Browse files
committed
refactor resource access
1 parent 177e018 commit 68248a5

6 files changed

Lines changed: 57 additions & 59 deletions

File tree

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

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,20 +25,18 @@ pub fn get_affinity(cluster_name: &str, role: &ZookeeperRole) -> StackableAffini
2525
#[cfg(test)]
2626
mod tests {
2727

28-
use std::{collections::BTreeMap, str::FromStr};
28+
use std::collections::BTreeMap;
2929

3030
use stackable_operator::{
3131
commons::affinity::StackableAffinity,
3232
k8s_openapi::{
3333
api::core::v1::{PodAffinityTerm, PodAntiAffinity, WeightedPodAffinityTerm},
3434
apimachinery::pkg::apis::meta::v1::LabelSelector,
3535
},
36-
v2::types::operator::RoleGroupName,
3736
};
3837

39-
use crate::{
40-
crd::affinity::ZookeeperRole,
41-
zk_controller::test_support::{minimal_zk, validated_cluster},
38+
use crate::zk_controller::test_support::{
39+
minimal_zk, server_rolegroup_config, validated_cluster,
4240
};
4341

4442
#[test]
@@ -99,9 +97,9 @@ mod tests {
9997
node_selector: None,
10098
};
10199

102-
let default_group = RoleGroupName::from_str("default").expect("valid role group name");
103-
let affinity = validated_cluster(&zk).role_group_configs[&ZookeeperRole::Server]
104-
[&default_group]
100+
let validated = validated_cluster(&zk);
101+
let affinity = server_rolegroup_config(&validated, "default")
102+
.1
105103
.config
106104
.affinity
107105
.clone();

rust/operator-binary/src/zk_controller.rs

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -393,16 +393,18 @@ pub fn error_policy(
393393
/// Shared helpers for building validated test clusters from minimal YAML fixtures.
394394
#[cfg(test)]
395395
pub(crate) mod test_support {
396+
use std::str::FromStr;
397+
396398
use stackable_operator::{
397399
cli::OperatorEnvironmentOptions, commons::networking::DomainName,
398-
utils::cluster_info::KubernetesClusterInfo,
400+
utils::cluster_info::KubernetesClusterInfo, v2::types::operator::RoleGroupName,
399401
};
400402

401403
use crate::{
402-
crd::{authentication::DereferencedAuthenticationClasses, v1alpha1},
404+
crd::{ZookeeperRole, authentication::DereferencedAuthenticationClasses, v1alpha1},
403405
zk_controller::{
404406
dereference::DereferencedObjects,
405-
validate::{ValidatedCluster, validate},
407+
validate::{ValidatedCluster, ZookeeperRoleGroupConfig, validate},
406408
},
407409
};
408410

@@ -471,24 +473,36 @@ pub(crate) mod test_support {
471473
)
472474
.expect("validate should succeed for the test fixture")
473475
}
476+
477+
/// Looks up the validated, merged config of the named `server` role group together with its
478+
/// parsed [`RoleGroupName`] — the standard `(name, config)` inputs to the
479+
/// `build_server_rolegroup_*` functions. Panics if the group does not exist.
480+
pub fn server_rolegroup_config<'a>(
481+
validated: &'a ValidatedCluster,
482+
role_group: &str,
483+
) -> (RoleGroupName, &'a ZookeeperRoleGroupConfig) {
484+
let role_group_name = RoleGroupName::from_str(role_group).expect("valid role group name");
485+
let config = validated
486+
.role_group_configs
487+
.get(&ZookeeperRole::Server)
488+
.and_then(|groups| groups.get(&role_group_name))
489+
.unwrap_or_else(|| panic!("server role group {role_group:?} should exist"));
490+
(role_group_name, config)
491+
}
474492
}
475493

476494
#[cfg(test)]
477495
mod tests {
478-
use std::{
479-
collections::{BTreeMap, BTreeSet},
480-
str::FromStr,
481-
};
496+
use std::collections::{BTreeMap, BTreeSet};
482497

483-
use stackable_operator::{
484-
k8s_openapi::api::core::v1::ConfigMap, v2::types::operator::RoleGroupName,
485-
};
498+
use stackable_operator::k8s_openapi::api::core::v1::ConfigMap;
486499

487500
use super::*;
488501
use crate::zk_controller::{
489502
build::properties::zoo_cfg,
490503
test_support::{
491-
cluster_info, minimal_zk, validated_cluster, validated_cluster_with_client_auth,
504+
cluster_info, minimal_zk, server_rolegroup_config, validated_cluster,
505+
validated_cluster_with_client_auth,
492506
},
493507
validate::ValidatedCluster,
494508
};
@@ -967,9 +981,7 @@ mod tests {
967981
/// pinned separately (`test_server_lines_use_myid_offset_across_rolegroups`,
968982
/// `test_seeded_operator_defaults`).
969983
fn zoo_cfg_map(validated: &ValidatedCluster, role_group: &str) -> BTreeMap<String, String> {
970-
let role_group_name = RoleGroupName::from_str(role_group).expect("valid role group name");
971-
let rolegroup_config =
972-
&validated.role_group_configs[&ZookeeperRole::Server][&role_group_name];
984+
let (_, rolegroup_config) = server_rolegroup_config(validated, role_group);
973985
let server_addresses = zoo_cfg::server_addresses(validated, &cluster_info());
974986
zoo_cfg::build(validated, rolegroup_config, &server_addresses)
975987
}
@@ -1167,9 +1179,8 @@ mod tests {
11671179

11681180
/// Builds the rolegroup `ConfigMap` for the named server role group of a validated cluster.
11691181
fn config_map_for(validated_cluster: &ValidatedCluster, role_group: &str) -> ConfigMap {
1170-
let role_group_name = RoleGroupName::from_str(role_group).expect("valid role group name");
1171-
let rolegroup_config =
1172-
&validated_cluster.role_group_configs[&ZookeeperRole::Server][&role_group_name];
1182+
let (role_group_name, rolegroup_config) =
1183+
server_rolegroup_config(validated_cluster, role_group);
11731184

11741185
config_map::build_server_rolegroup_config_map(
11751186
validated_cluster,

rust/operator-binary/src/zk_controller/build/properties/zoo_cfg.rs

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -177,18 +177,15 @@ impl ValidatedCluster {
177177

178178
#[cfg(test)]
179179
mod tests {
180-
use std::str::FromStr;
181-
182-
use stackable_operator::v2::types::operator::RoleGroupName;
183-
184180
use super::*;
185-
use crate::zk_controller::test_support::{cluster_info, minimal_zk, validated_cluster};
181+
use crate::zk_controller::test_support::{
182+
cluster_info, minimal_zk, server_rolegroup_config, validated_cluster,
183+
};
186184

187185
/// Validates `yaml` into a [`ValidatedCluster`] and returns its `server` `default` role group.
188186
fn validated_with_default_rg(yaml: &str) -> (ValidatedCluster, ZookeeperRoleGroupConfig) {
189187
let validated = validated_cluster(&minimal_zk(yaml));
190-
let rg_name = RoleGroupName::from_str("default").expect("valid role group name");
191-
let rg = validated.role_group_configs[&ZookeeperRole::Server][&rg_name].clone();
188+
let rg = server_rolegroup_config(&validated, "default").1.clone();
192189
(validated, rg)
193190
}
194191

rust/operator-binary/src/zk_controller/build/resource/service.rs

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,9 @@ pub(crate) fn build_server_rolegroup_metrics_service(
118118

119119
#[cfg(test)]
120120
mod tests {
121-
use std::str::FromStr;
122-
123121
use super::*;
124-
use crate::{
125-
crd::ZookeeperRole,
126-
zk_controller::test_support::{minimal_zk, validated_cluster},
122+
use crate::zk_controller::test_support::{
123+
minimal_zk, server_rolegroup_config, validated_cluster,
127124
};
128125

129126
const DEFAULT_ZK: &str = r#"
@@ -157,7 +154,7 @@ mod tests {
157154
#[test]
158155
fn headless_service_shape() {
159156
let validated = validated_cluster(&minimal_zk(DEFAULT_ZK));
160-
let rg = RoleGroupName::from_str("default").expect("valid role group name");
157+
let (rg, _) = server_rolegroup_config(&validated, "default");
161158
let service = build_server_rolegroup_headless_service(&validated, &rg);
162159

163160
assert_eq!(
@@ -193,9 +190,8 @@ mod tests {
193190
#[test]
194191
fn metrics_service_shape_and_prometheus_annotations() {
195192
let validated = validated_cluster(&minimal_zk(DEFAULT_ZK));
196-
let rg = RoleGroupName::from_str("default").expect("valid role group name");
197-
let rg_config = validated.role_group_configs[&ZookeeperRole::Server][&rg].clone();
198-
let service = build_server_rolegroup_metrics_service(&validated, &rg, &rg_config);
193+
let (rg, rg_config) = server_rolegroup_config(&validated, "default");
194+
let service = build_server_rolegroup_metrics_service(&validated, &rg, rg_config);
199195

200196
assert_eq!(
201197
service.metadata.name.as_deref(),

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

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -457,15 +457,16 @@ pub fn build_server_rolegroup_statefulset(
457457
#[cfg(test)]
458458
mod tests {
459459
use super::*;
460-
use crate::zk_controller::test_support::{minimal_zk, validated_cluster};
460+
use crate::zk_controller::test_support::{
461+
minimal_zk, server_rolegroup_config, validated_cluster,
462+
};
461463

462464
/// Builds the `default` server StatefulSet for `yaml` and returns the ConfigMap name mounted by
463465
/// its `log-config` volume.
464466
fn log_config_map_name(yaml: &str) -> String {
465467
let validated = validated_cluster(&minimal_zk(yaml));
466-
let rg_name = RoleGroupName::from_str("default").expect("valid role group name");
467-
let rg = validated.role_group_configs[&ZookeeperRole::Server][&rg_name].clone();
468-
build_server_rolegroup_statefulset(&validated, &rg_name, &rg)
468+
let (rg_name, rg) = server_rolegroup_config(&validated, "default");
469+
build_server_rolegroup_statefulset(&validated, &rg_name, rg)
469470
.expect("statefulset builds")
470471
.spec
471472
.and_then(|spec| spec.template.spec)
@@ -540,9 +541,8 @@ mod tests {
540541

541542
fn build_sts(yaml: &str, role_group: &str) -> StatefulSet {
542543
let validated = validated_cluster(&minimal_zk(yaml));
543-
let rg_name = RoleGroupName::from_str(role_group).expect("valid role group name");
544-
let rg = validated.role_group_configs[&ZookeeperRole::Server][&rg_name].clone();
545-
build_server_rolegroup_statefulset(&validated, &rg_name, &rg).expect("statefulset builds")
544+
let (rg_name, rg) = server_rolegroup_config(&validated, role_group);
545+
build_server_rolegroup_statefulset(&validated, &rg_name, rg).expect("statefulset builds")
546546
}
547547

548548
fn zookeeper_container(

rust/operator-binary/src/zk_controller/validate.rs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -599,7 +599,9 @@ mod tests {
599599
use stackable_operator::k8s_openapi::apimachinery::pkg::api::resource::Quantity;
600600

601601
use super::*;
602-
use crate::zk_controller::test_support::{minimal_zk, try_validate, validated_cluster};
602+
use crate::zk_controller::test_support::{
603+
minimal_zk, server_rolegroup_config, try_validate, validated_cluster,
604+
};
603605

604606
#[test]
605607
fn enabling_vector_without_aggregator_name_fails_validation() {
@@ -658,17 +660,11 @@ mod tests {
658660
}
659661

660662
/// Looks up the validated, merged config of a single server role group by name.
661-
fn server_role_group(
662-
validated: &ValidatedCluster,
663+
fn server_role_group<'a>(
664+
validated: &'a ValidatedCluster,
663665
role_group: &str,
664-
) -> ZookeeperRoleGroupConfig {
665-
let role_group_name = RoleGroupName::from_str(role_group).expect("valid role group name");
666-
validated
667-
.role_group_configs
668-
.get(&ZookeeperRole::Server)
669-
.and_then(|groups| groups.get(&role_group_name))
670-
.unwrap_or_else(|| panic!("server role group {role_group:?} should exist"))
671-
.clone()
666+
) -> &'a ZookeeperRoleGroupConfig {
667+
server_rolegroup_config(validated, role_group).1
672668
}
673669

674670
/// Mirrors the `resources` integration test (which can no longer use >16 character role-group

0 commit comments

Comments
 (0)