@@ -29,7 +29,10 @@ use stackable_operator::{
2929 } ,
3030 client:: Client ,
3131 cluster_resources:: { ClusterResourceApplyStrategy , ClusterResources } ,
32- commons:: { product_image_selection:: ResolvedProductImage , rbac:: build_rbac_resources} ,
32+ commons:: {
33+ product_image_selection:: { self , ResolvedProductImage } ,
34+ rbac:: build_rbac_resources,
35+ } ,
3336 k8s_openapi:: {
3437 DeepMerge ,
3538 api:: {
@@ -62,11 +65,11 @@ use stackable_operator::{
6265 } ,
6366 } ,
6467 role_utils:: { GenericRoleConfig , JavaCommonConfig , Role , RoleGroupRef } ,
68+ shared:: time:: Duration ,
6569 status:: condition:: {
6670 compute_conditions, operations:: ClusterOperationsConditionBuilder ,
6771 statefulset:: StatefulSetConditionBuilder ,
6872 } ,
69- time:: Duration ,
7073 utils:: cluster_info:: KubernetesClusterInfo ,
7174} ;
7275use strum:: { EnumDiscriminants , IntoStaticStr } ;
@@ -366,6 +369,11 @@ pub enum Error {
366369
367370 #[ snafu( display( "failed to configure service" ) ) ]
368371 ServiceConfiguration { source : crate :: service:: Error } ,
372+
373+ #[ snafu( display( "failed to resolve product image" ) ) ]
374+ ResolveProductImage {
375+ source : product_image_selection:: Error ,
376+ } ,
369377}
370378
371379type Result < T , E = Error > = std:: result:: Result < T , E > ;
@@ -389,10 +397,11 @@ pub async fn reconcile_trino(
389397 . context ( InvalidTrinoClusterSnafu ) ?;
390398 let client = & ctx. client ;
391399
392- let resolved_product_image: ResolvedProductImage = trino
400+ let resolved_product_image = trino
393401 . spec
394402 . image
395- . resolve ( DOCKER_IMAGE_BASE_NAME , crate :: built_info:: PKG_VERSION ) ;
403+ . resolve ( DOCKER_IMAGE_BASE_NAME , crate :: built_info:: PKG_VERSION )
404+ . context ( ResolveProductImageSnafu ) ?;
396405
397406 let resolved_authentication_classes =
398407 resolve_authentication_classes ( client, trino. get_authentication ( ) )
@@ -507,7 +516,7 @@ pub async fn reconcile_trino(
507516
508517 let role_group_service_recommended_labels = build_recommended_labels (
509518 trino,
510- & resolved_product_image. app_version_label ,
519+ & resolved_product_image. app_version_label_value ,
511520 & role_group_ref. role ,
512521 & role_group_ref. role_group ,
513522 ) ;
@@ -612,7 +621,7 @@ pub async fn reconcile_trino(
612621 trino,
613622 build_recommended_labels (
614623 trino,
615- & resolved_product_image. app_version_label ,
624+ & resolved_product_image. app_version_label_value ,
616625 & trino_role_str,
617626 "none" ,
618627 ) ,
@@ -852,7 +861,7 @@ fn build_rolegroup_config_map(
852861 . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
853862 . with_recommended_labels ( build_recommended_labels (
854863 trino,
855- & resolved_product_image. app_version_label ,
864+ & resolved_product_image. app_version_label_value ,
856865 & rolegroup_ref. role ,
857866 & rolegroup_ref. role_group ,
858867 ) )
@@ -883,7 +892,7 @@ fn build_rolegroup_catalog_config_map(
883892 . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
884893 . with_recommended_labels ( build_recommended_labels (
885894 trino,
886- & resolved_product_image. app_version_label ,
895+ & resolved_product_image. app_version_label_value ,
887896 & rolegroup_ref. role ,
888897 & rolegroup_ref. role_group ,
889898 ) )
@@ -1198,7 +1207,7 @@ fn build_rolegroup_statefulset(
11981207 let metadata = ObjectMetaBuilder :: new ( )
11991208 . with_recommended_labels ( build_recommended_labels (
12001209 trino,
1201- & resolved_product_image. app_version_label ,
1210+ & resolved_product_image. app_version_label_value ,
12021211 & role_group_ref. role ,
12031212 & role_group_ref. role_group ,
12041213 ) )
@@ -1257,7 +1266,7 @@ fn build_rolegroup_statefulset(
12571266 . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
12581267 . with_recommended_labels ( build_recommended_labels (
12591268 trino,
1260- & resolved_product_image. app_version_label ,
1269+ & resolved_product_image. app_version_label_value ,
12611270 & role_group_ref. role ,
12621271 & role_group_ref. role_group ,
12631272 ) )
@@ -1762,7 +1771,8 @@ mod tests {
17621771 let resolved_product_image = trino
17631772 . spec
17641773 . image
1765- . resolve ( DOCKER_IMAGE_BASE_NAME , "0.0.0-dev" ) ;
1774+ . resolve ( DOCKER_IMAGE_BASE_NAME , "0.0.0-dev" )
1775+ . expect ( "test resolved product image is always valid" ) ;
17661776
17671777 let config_files = vec ! [
17681778 PropertyNameKind :: File ( CONFIG_PROPERTIES . to_string( ) ) ,
0 commit comments