@@ -49,7 +49,10 @@ use stackable_operator::{
4949 } ,
5050 } ,
5151 utils:: { COMMON_BASH_TRAP_FUNCTIONS , cluster_info:: KubernetesClusterInfo } ,
52- v2:: { builder:: meta:: ownerreference_from_resource, types:: kubernetes:: VolumeName } ,
52+ v2:: {
53+ builder:: { meta:: ownerreference_from_resource, pod:: container:: new_container_builder} ,
54+ types:: kubernetes:: { ContainerName , VolumeName } ,
55+ } ,
5356} ;
5457
5558use super :: service:: { self , APP_PORT , APP_PORT_NAME } ;
@@ -131,11 +134,6 @@ const MAX_PREPARE_LOG_FILE_SIZE: MemoryQuantity = MemoryQuantity {
131134
132135#[ derive( Snafu , Debug ) ]
133136pub enum Error {
134- #[ snafu( display( "illegal container name" ) ) ]
135- IllegalContainerName {
136- source : stackable_operator:: builder:: pod:: container:: Error ,
137- } ,
138-
139137 #[ snafu( display( "vector agent is enabled but vector aggregator ConfigMap is missing" ) ) ]
140138 VectorAggregatorConfigMapMissing ,
141139
@@ -183,6 +181,13 @@ pub enum Error {
183181
184182type Result < T , E = Error > = std:: result:: Result < T , E > ;
185183
184+ /// The typed [`ContainerName`] for a [`Container`]. The enum's `Display` values are all valid
185+ /// container names, so this conversion is infallible.
186+ fn container_name ( container : & Container ) -> ContainerName {
187+ ContainerName :: from_str ( & container. to_string ( ) )
188+ . expect ( "Container enum variants are valid container names" )
189+ }
190+
186191/// The strict-mode `bash` entrypoint shared by the prepare, bundle-builder, and OPA containers.
187192/// The actual script is passed via `.args(...)`.
188193fn bash_entrypoint_command ( ) -> Vec < String > {
@@ -248,23 +253,21 @@ pub fn build_server_rolegroup_daemonset(
248253
249254 let mut pb = PodBuilder :: new ( ) ;
250255
251- let prepare_container_name = Container :: Prepare . to_string ( ) ;
252- let mut cb_prepare =
253- ContainerBuilder :: new ( & prepare_container_name) . context ( IllegalContainerNameSnafu ) ?;
256+ let prepare_container_name = container_name ( & Container :: Prepare ) ;
257+ let mut cb_prepare = new_container_builder ( & prepare_container_name) ;
254258
255- let bundle_builder_container_name = Container :: BundleBuilder . to_string ( ) ;
256- let mut cb_bundle_builder =
257- ContainerBuilder :: new ( & bundle_builder_container_name) . context ( IllegalContainerNameSnafu ) ?;
259+ let bundle_builder_container_name = container_name ( & Container :: BundleBuilder ) ;
260+ let mut cb_bundle_builder = new_container_builder ( & bundle_builder_container_name) ;
258261
259- let opa_container_name = Container :: Opa . to_string ( ) ;
260- let mut cb_opa =
261- ContainerBuilder :: new ( & opa_container_name) . context ( IllegalContainerNameSnafu ) ?;
262+ let opa_container_name = container_name ( & Container :: Opa ) ;
263+ let mut cb_opa = new_container_builder ( & opa_container_name) ;
262264
263265 cb_prepare
264266 . image_from_product_image ( resolved_product_image)
265267 . command ( bash_entrypoint_command ( ) )
266268 . args ( vec ! [
267- build_prepare_start_command( merged_config, & prepare_container_name) . join( " && " ) ,
269+ build_prepare_start_command( merged_config, prepare_container_name. as_ref( ) )
270+ . join( " && " ) ,
268271 ] )
269272 . add_volume_mount ( BUNDLES_VOLUME_NAME . as_ref ( ) , BUNDLES_DIR )
270273 . context ( AddVolumeMountSnafu ) ?
@@ -278,7 +281,7 @@ pub fn build_server_rolegroup_daemonset(
278281 . command ( bash_entrypoint_command ( ) )
279282 . args ( vec ! [ build_bundle_builder_start_command(
280283 merged_config,
281- & bundle_builder_container_name,
284+ bundle_builder_container_name. as_ref ( ) ,
282285 ) ] )
283286 . add_env_var_from_field_path ( "WATCH_NAMESPACE" , & FieldPathEnvVar :: Namespace )
284287 . add_volume_mount ( BUNDLES_VOLUME_NAME . as_ref ( ) , BUNDLES_DIR )
@@ -313,7 +316,7 @@ pub fn build_server_rolegroup_daemonset(
313316 . command ( bash_entrypoint_command ( ) )
314317 . args ( vec ! [ build_opa_start_command(
315318 merged_config,
316- & opa_container_name,
319+ opa_container_name. as_ref ( ) ,
317320 opa. spec. cluster_config. tls_enabled( ) ,
318321 & rolegroup_config. cli_overrides,
319322 ) ] )
@@ -432,8 +435,8 @@ pub fn build_server_rolegroup_daemonset(
432435 }
433436
434437 if let Some ( user_info) = & opa. spec . cluster_config . user_info {
435- let mut cb_user_info_fetcher =
436- ContainerBuilder :: new ( "user-info-fetcher" ) . context ( IllegalContainerNameSnafu ) ? ;
438+ let user_info_fetcher_container_name = container_name ( & Container :: UserInfoFetcher ) ;
439+ let mut cb_user_info_fetcher = new_container_builder ( & user_info_fetcher_container_name ) ;
437440
438441 cb_user_info_fetcher
439442 . image_from_product_image ( resolved_product_image) // inherit the pull policy and pull secrets, and then...
0 commit comments