@@ -26,7 +26,10 @@ use stackable_operator::{
2626 } ,
2727 } ,
2828 cluster_resources:: { ClusterResourceApplyStrategy , ClusterResources } ,
29- commons:: { product_image_selection:: ResolvedProductImage , rbac:: build_rbac_resources} ,
29+ commons:: {
30+ product_image_selection:: { self , ResolvedProductImage } ,
31+ rbac:: build_rbac_resources,
32+ } ,
3033 k8s_openapi:: {
3134 api:: {
3235 apps:: v1:: { StatefulSet , StatefulSetSpec } ,
@@ -55,11 +58,11 @@ use stackable_operator::{
5558 } ,
5659 } ,
5760 role_utils:: { GenericRoleConfig , RoleGroupRef } ,
61+ shared:: time:: Duration ,
5862 status:: condition:: {
5963 compute_conditions, operations:: ClusterOperationsConditionBuilder ,
6064 statefulset:: StatefulSetConditionBuilder ,
6165 } ,
62- time:: Duration ,
6366 utils:: cluster_info:: KubernetesClusterInfo ,
6467} ;
6568use strum:: { EnumDiscriminants , IntoStaticStr , ParseError } ;
@@ -321,6 +324,11 @@ pub enum Error {
321324
322325 #[ snafu( display( "failed to build listener persistent volume claim" ) ) ]
323326 ListenerPersistentVolumeClaim { source : crate :: crd:: Error } ,
327+
328+ #[ snafu( display( "failed to resolve product image" ) ) ]
329+ ResolveProductImage {
330+ source : product_image_selection:: Error ,
331+ } ,
324332}
325333
326334type Result < T , E = Error > = std:: result:: Result < T , E > ;
@@ -348,15 +356,16 @@ pub async fn reconcile_hbase(
348356 let resolved_product_image = hbase
349357 . spec
350358 . image
351- . resolve ( DOCKER_IMAGE_BASE_NAME , crate :: built_info:: PKG_VERSION ) ;
359+ . resolve ( DOCKER_IMAGE_BASE_NAME , crate :: built_info:: PKG_VERSION )
360+ . context ( ResolveProductImageSnafu ) ?;
352361 let zookeeper_connection_information = ZookeeperConnectionInformation :: retrieve ( hbase, client)
353362 . await
354363 . context ( RetrieveZookeeperConnectionInformationSnafu ) ?;
355364
356365 let roles = hbase. build_role_properties ( ) . context ( RolePropertiesSnafu ) ?;
357366
358367 let validated_config = validate_all_roles_and_groups_config (
359- & resolved_product_image. app_version_label ,
368+ & resolved_product_image. app_version_label_value ,
360369 & transform_all_roles_to_config ( hbase, roles) . context ( GenerateProductConfigSnafu ) ?,
361370 & ctx. product_config ,
362371 false ,
@@ -676,7 +685,7 @@ fn build_rolegroup_config_map(
676685 . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
677686 . with_recommended_labels ( build_recommended_labels (
678687 hbase,
679- & resolved_product_image. app_version_label ,
688+ & resolved_product_image. app_version_label_value ,
680689 & rolegroup. role ,
681690 & rolegroup. role_group ,
682691 ) )
@@ -740,7 +749,7 @@ fn build_rolegroup_service(
740749 . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
741750 . with_recommended_labels ( build_recommended_labels (
742751 hbase,
743- & resolved_product_image. app_version_label ,
752+ & resolved_product_image. app_version_label_value ,
744753 & rolegroup. role ,
745754 & rolegroup. role_group ,
746755 ) )
@@ -782,7 +791,7 @@ fn build_rolegroup_statefulset(
782791 resolved_product_image : & ResolvedProductImage ,
783792 service_account : & ServiceAccount ,
784793) -> Result < StatefulSet > {
785- let hbase_version = & resolved_product_image. app_version_label ;
794+ let hbase_version = & resolved_product_image. app_version_label_value ;
786795
787796 let ports = hbase
788797 . ports ( hbase_role)
@@ -1244,7 +1253,9 @@ mod test {
12441253
12451254 let resolved_image = ResolvedProductImage {
12461255 image : format ! ( "oci.stackable.tech/sdp/hbase:{hbase_version}-stackable0.0.0-dev" ) ,
1247- app_version_label : hbase_version. to_string ( ) ,
1256+ app_version_label_value : hbase_version
1257+ . parse ( )
1258+ . expect ( "test: hbase version is always valid" ) ,
12481259 product_version : hbase_version. to_string ( ) ,
12491260 image_pull_policy : "Never" . to_string ( ) ,
12501261 pull_secrets : None ,
0 commit comments