@@ -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} ;
5961use 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) ) ,
0 commit comments