Skip to content

Commit 227853e

Browse files
committed
fix: consolidate method redundant parameters
1 parent 1ce777e commit 227853e

3 files changed

Lines changed: 29 additions & 73 deletions

File tree

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

Lines changed: 24 additions & 63 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ use stackable_operator::{
1818
self,
1919
pod::{
2020
PodBuilder,
21-
container::ContainerBuilder,
2221
resources::ResourceRequirementsBuilder,
2322
volume::{
2423
ListenerOperatorVolumeSourceBuilder, ListenerOperatorVolumeSourceBuilderError,
@@ -27,10 +26,7 @@ use stackable_operator::{
2726
},
2827
},
2928
},
30-
commons::{
31-
product_image_selection::ResolvedProductImage,
32-
secret_class::SecretClassVolumeProvisionParts,
33-
},
29+
commons::secret_class::SecretClassVolumeProvisionParts,
3430
constant,
3531
k8s_openapi::{
3632
api::core::v1::{
@@ -54,7 +50,13 @@ use stackable_operator::{
5450
},
5551
role_utils::RoleGroupRef,
5652
utils::{COMMON_BASH_TRAP_FUNCTIONS, cluster_info::KubernetesClusterInfo},
57-
v2::types::{common::Port, kubernetes::VolumeName},
53+
v2::{
54+
builder::pod::container::new_container_builder,
55+
types::{
56+
common::Port,
57+
kubernetes::{ContainerName, VolumeName},
58+
},
59+
},
5860
};
5961
use strum::{Display, EnumDiscriminants, IntoStaticStr};
6062

@@ -116,12 +118,6 @@ pub enum Error {
116118
))]
117119
UnrecognizedContainerName { container_name: String },
118120

119-
#[snafu(display("invalid container name {name:?}"))]
120-
InvalidContainerName {
121-
source: stackable_operator::builder::pod::container::Error,
122-
name: String,
123-
},
124-
125121
#[snafu(display("failed to build secret volume for {volume_name:?}"))]
126122
BuildSecretVolume {
127123
source: SecretOperatorVolumeSourceBuilderError,
@@ -220,9 +216,6 @@ impl ContainerConfig {
220216
rolegroup_config: &ValidatedRoleGroupConfig,
221217
labels: &Labels,
222218
) -> Result<(), Error> {
223-
// These are all already resolved on the validated cluster.
224-
let resolved_product_image = &cluster.image;
225-
let zk_config_map_name = cluster.cluster_config.zookeeper_config_map_name.as_ref();
226219
let namenode_podrefs = build::pod_refs(cluster, &HdfsNodeRole::Name);
227220

228221
// HDFS main container
@@ -236,10 +229,7 @@ impl ContainerConfig {
236229
cluster,
237230
cluster_info,
238231
role,
239-
resolved_product_image,
240-
zk_config_map_name,
241232
rolegroup_config,
242-
merged_config,
243233
labels,
244234
)?);
245235

@@ -253,7 +243,7 @@ impl ContainerConfig {
253243
Some(vector_aggregator_config_map_name) => {
254244
pb.add_container(
255245
product_logging::framework::vector_container(
256-
resolved_product_image,
246+
&cluster.image,
257247
ContainerConfig::HDFS_CONFIG_VOLUME_MOUNT_NAME,
258248
ContainerConfig::STACKABLE_LOG_VOLUME_MOUNT_NAME,
259249
Some(&merged_config.vector_logging()),
@@ -340,10 +330,7 @@ impl ContainerConfig {
340330
cluster,
341331
cluster_info,
342332
role,
343-
resolved_product_image,
344-
zk_config_map_name,
345333
rolegroup_config,
346-
merged_config,
347334
labels,
348335
)?);
349336

@@ -360,11 +347,8 @@ impl ContainerConfig {
360347
cluster,
361348
cluster_info,
362349
role,
363-
resolved_product_image,
364-
zk_config_map_name,
365350
rolegroup_config,
366351
&namenode_podrefs,
367-
merged_config,
368352
labels,
369353
)?);
370354

@@ -381,11 +365,8 @@ impl ContainerConfig {
381365
cluster,
382366
cluster_info,
383367
role,
384-
resolved_product_image,
385-
zk_config_map_name,
386368
rolegroup_config,
387369
&namenode_podrefs,
388-
merged_config,
389370
labels,
390371
)?);
391372
}
@@ -403,11 +384,8 @@ impl ContainerConfig {
403384
cluster,
404385
cluster_info,
405386
role,
406-
resolved_product_image,
407-
zk_config_map_name,
408387
rolegroup_config,
409388
&namenode_podrefs,
410-
merged_config,
411389
labels,
412390
)?);
413391
}
@@ -465,35 +443,23 @@ impl ContainerConfig {
465443
/// - Namenode ZooKeeper fail over controller (ZKFC)
466444
/// - Datanode main process
467445
/// - Journalnode main process
468-
#[allow(clippy::too_many_arguments)]
469446
fn main_container(
470447
&self,
471448
cluster: &ValidatedCluster,
472449
cluster_info: &KubernetesClusterInfo,
473450
role: &HdfsNodeRole,
474-
resolved_product_image: &ResolvedProductImage,
475-
zookeeper_config_map_name: &str,
476451
rolegroup_config: &ValidatedRoleGroupConfig,
477-
merged_config: &AnyNodeConfig,
478452
labels: &Labels,
479453
) -> Result<Container, Error> {
480-
let mut cb =
481-
ContainerBuilder::new(self.name()).with_context(|_| InvalidContainerNameSnafu {
482-
name: self.name().to_string(),
483-
})?;
454+
let merged_config = &rolegroup_config.config;
455+
let mut cb = new_container_builder(&self.container_name());
484456

485457
let resources = self.resources(merged_config);
486458

487-
cb.image_from_product_image(resolved_product_image)
459+
cb.image_from_product_image(&cluster.image)
488460
.command(Self::command())
489461
.args(self.args(cluster, cluster_info, role, merged_config, &[])?)
490-
.add_env_vars(self.env(
491-
cluster,
492-
role,
493-
zookeeper_config_map_name,
494-
rolegroup_config,
495-
resources.as_ref(),
496-
)?)
462+
.add_env_vars(self.env(cluster, role, rolegroup_config, resources.as_ref())?)
497463
.add_volume_mounts(self.volume_mounts(cluster, merged_config, labels)?)
498464
.context(AddVolumeMountSnafu)?
499465
.add_container_ports(self.container_ports(cluster));
@@ -525,32 +491,22 @@ impl ContainerConfig {
525491
/// Creates respective init containers for:
526492
/// - Namenode (format-namenodes, format-zookeeper)
527493
/// - Datanode (wait-for-namenodes)
528-
#[allow(clippy::too_many_arguments)]
529494
fn init_container(
530495
&self,
531496
cluster: &ValidatedCluster,
532497
cluster_info: &KubernetesClusterInfo,
533498
role: &HdfsNodeRole,
534-
resolved_product_image: &ResolvedProductImage,
535-
zookeeper_config_map_name: &str,
536499
rolegroup_config: &ValidatedRoleGroupConfig,
537500
namenode_podrefs: &[HdfsPodRef],
538-
merged_config: &AnyNodeConfig,
539501
labels: &Labels,
540502
) -> Result<Container, Error> {
541-
let mut cb = ContainerBuilder::new(self.name())
542-
.with_context(|_| InvalidContainerNameSnafu { name: self.name() })?;
503+
let merged_config = &rolegroup_config.config;
504+
let mut cb = new_container_builder(&self.container_name());
543505

544-
cb.image_from_product_image(resolved_product_image)
506+
cb.image_from_product_image(&cluster.image)
545507
.command(Self::command())
546508
.args(self.args(cluster, cluster_info, role, merged_config, namenode_podrefs)?)
547-
.add_env_vars(self.env(
548-
cluster,
549-
role,
550-
zookeeper_config_map_name,
551-
rolegroup_config,
552-
None,
553-
)?)
509+
.add_env_vars(self.env(cluster, role, rolegroup_config, None)?)
554510
.add_volume_mounts(self.volume_mounts(cluster, merged_config, labels)?)
555511
.context(AddVolumeMountSnafu)?;
556512

@@ -575,6 +531,12 @@ impl ContainerConfig {
575531
}
576532
}
577533

534+
/// Return the type-safe container name.
535+
fn container_name(&self) -> ContainerName {
536+
ContainerName::from_str(self.name())
537+
.expect("a ContainerConfig name is a valid container name")
538+
}
539+
578540
/// Return volume mount directories depending on the container.
579541
fn volume_mount_dirs(&self) -> &ContainerVolumeDirs {
580542
match &self {
@@ -870,7 +832,6 @@ impl ContainerConfig {
870832
&self,
871833
cluster: &ValidatedCluster,
872834
role: &HdfsNodeRole,
873-
zookeeper_config_map_name: &str,
874835
rolegroup_config: &ValidatedRoleGroupConfig,
875836
resources: Option<&ResourceRequirements>,
876837
) -> Result<Vec<EnvVar>, Error> {
@@ -881,7 +842,7 @@ impl ContainerConfig {
881842
env.extend(
882843
Self::shared_env_vars(
883844
self.volume_mount_dirs().final_config(),
884-
zookeeper_config_map_name,
845+
cluster.cluster_config.zookeeper_config_map_name.as_ref(),
885846
)
886847
.into_iter()
887848
.map(|env_var| (env_var.name.clone(), env_var)),

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

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ use std::{
44
};
55

66
use stackable_operator::{
7-
commons::pdb::PdbConfig,
87
k8s_openapi::api::policy::v1::PodDisruptionBudget,
98
v2::{builder::pdb::pod_disruption_budget_builder_with_role, types::operator::RoleName},
109
};
@@ -14,12 +13,10 @@ use crate::{
1413
crd::HdfsNodeRole,
1514
};
1615

17-
/// Builds the [`PodDisruptionBudget`] for the given `role`, or `None` if PDBs are disabled.
18-
pub fn build_pdb(
19-
pdb: &PdbConfig,
20-
cluster: &ValidatedCluster,
21-
role: &HdfsNodeRole,
22-
) -> Option<PodDisruptionBudget> {
16+
/// Builds the [`PodDisruptionBudget`] for the given `role`, or `None` if the role
17+
/// has no validated config or PDBs are disabled.
18+
pub fn build_pdb(cluster: &ValidatedCluster, role: &HdfsNodeRole) -> Option<PodDisruptionBudget> {
19+
let pdb = &cluster.role_configs.get(role)?.pdb;
2320
if !pdb.enabled {
2421
return None;
2522
}

rust/operator-binary/src/hdfs_controller.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -328,9 +328,7 @@ pub async fn reconcile_hdfs(
328328
}
329329
}
330330

331-
if let Some(validated_role_config) = validated_cluster.role_configs.get(&role)
332-
&& let Some(pdb) = build_pdb(&validated_role_config.pdb, &validated_cluster, &role)
333-
{
331+
if let Some(pdb) = build_pdb(&validated_cluster, &role) {
334332
cluster_resources
335333
.add(client, pdb)
336334
.await

0 commit comments

Comments
 (0)