11use snafu:: { ResultExt , Snafu } ;
22use stackable_operator:: {
33 builder:: meta:: ObjectMetaBuilder ,
4- commons:: product_image_selection:: ResolvedProductImage ,
54 k8s_openapi:: api:: core:: v1:: { Service , ServicePort , ServiceSpec } ,
65 kvp:: { Annotations , Labels } ,
76 role_utils:: RoleGroupRef ,
7+ v2:: builder:: meta:: ownerreference_from_resource,
88} ;
99
1010use crate :: {
11- controller:: build_recommended_labels,
11+ controller:: { ValidatedCluster , build_recommended_labels} ,
1212 crd:: { APP_NAME , HIVE_PORT , HIVE_PORT_NAME , METRICS_PORT , METRICS_PORT_NAME , v1alpha1} ,
1313} ;
1414
1515#[ derive( Debug , Snafu ) ]
1616pub enum Error {
17- #[ snafu( display( "object is missing metadata to build owner reference" ) ) ]
18- ObjectMissingMetadataForOwnerRef {
19- source : stackable_operator:: builder:: meta:: Error ,
20- } ,
2117 #[ snafu( display( "failed to build Metadata" ) ) ]
2218 MetadataBuild {
2319 source : stackable_operator:: builder:: meta:: Error ,
@@ -32,19 +28,17 @@ pub enum Error {
3228///
3329/// This is mostly useful for internal communication between peers, or for clients that perform client-side load balancing.
3430pub fn build_rolegroup_headless_service (
35- hive : & v1alpha1:: HiveCluster ,
36- resolved_product_image : & ResolvedProductImage ,
31+ cluster : & ValidatedCluster ,
3732 rolegroup : & RoleGroupRef < v1alpha1:: HiveCluster > ,
3833) -> Result < Service , Error > {
3934 let headless_service = Service {
4035 metadata : ObjectMetaBuilder :: new ( )
41- . name_and_namespace ( hive )
36+ . name_and_namespace ( cluster )
4237 . name ( rolegroup. rolegroup_headless_service_name ( ) )
43- . ownerreference_from_resource ( hive, None , Some ( true ) )
44- . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
38+ . ownerreference ( ownerreference_from_resource ( cluster, None , Some ( true ) ) )
4539 . with_recommended_labels ( & build_recommended_labels (
46- hive ,
47- & resolved_product_image . app_version_label_value ,
40+ cluster ,
41+ & cluster . image . app_version_label_value ,
4842 & rolegroup. role ,
4943 & rolegroup. role_group ,
5044 ) )
@@ -57,9 +51,14 @@ pub fn build_rolegroup_headless_service(
5751 // Expecting same ports as on listener service, just as a headless, internal service
5852 ports : Some ( service_ports ( ) ) ,
5953 selector : Some (
60- Labels :: role_group_selector ( hive, APP_NAME , & rolegroup. role , & rolegroup. role_group )
61- . context ( LabelBuildSnafu ) ?
62- . into ( ) ,
54+ Labels :: role_group_selector (
55+ cluster,
56+ APP_NAME ,
57+ & rolegroup. role ,
58+ & rolegroup. role_group ,
59+ )
60+ . context ( LabelBuildSnafu ) ?
61+ . into ( ) ,
6362 ) ,
6463 publish_not_ready_addresses : Some ( true ) ,
6564 ..ServiceSpec :: default ( )
@@ -71,19 +70,17 @@ pub fn build_rolegroup_headless_service(
7170
7271/// The rolegroup metrics [`Service`] is a service that exposes metrics and a prometheus scraping label
7372pub fn build_rolegroup_metrics_service (
74- hive : & v1alpha1:: HiveCluster ,
75- resolved_product_image : & ResolvedProductImage ,
73+ cluster : & ValidatedCluster ,
7674 rolegroup : & RoleGroupRef < v1alpha1:: HiveCluster > ,
7775) -> Result < Service , Error > {
7876 let metrics_service = Service {
7977 metadata : ObjectMetaBuilder :: new ( )
80- . name_and_namespace ( hive )
78+ . name_and_namespace ( cluster )
8179 . name ( rolegroup. rolegroup_metrics_service_name ( ) )
82- . ownerreference_from_resource ( hive, None , Some ( true ) )
83- . context ( ObjectMissingMetadataForOwnerRefSnafu ) ?
80+ . ownerreference ( ownerreference_from_resource ( cluster, None , Some ( true ) ) )
8481 . with_recommended_labels ( & build_recommended_labels (
85- hive ,
86- & resolved_product_image . app_version_label_value ,
82+ cluster ,
83+ & cluster . image . app_version_label_value ,
8784 & rolegroup. role ,
8885 & rolegroup. role_group ,
8986 ) )
@@ -97,9 +94,14 @@ pub fn build_rolegroup_metrics_service(
9794 cluster_ip : Some ( "None" . to_string ( ) ) ,
9895 ports : Some ( metrics_ports ( ) ) ,
9996 selector : Some (
100- Labels :: role_group_selector ( hive, APP_NAME , & rolegroup. role , & rolegroup. role_group )
101- . context ( LabelBuildSnafu ) ?
102- . into ( ) ,
97+ Labels :: role_group_selector (
98+ cluster,
99+ APP_NAME ,
100+ & rolegroup. role ,
101+ & rolegroup. role_group ,
102+ )
103+ . context ( LabelBuildSnafu ) ?
104+ . into ( ) ,
103105 ) ,
104106 publish_not_ready_addresses : Some ( true ) ,
105107 ..ServiceSpec :: default ( )
0 commit comments