@@ -7,7 +7,7 @@ use stackable_operator::{
77
88use crate :: {
99 controller:: { RoleGroupName , ValidatedCluster } ,
10- crd:: { HbaseRole , v1alpha1 } ,
10+ crd:: HbaseRole ,
1111} ;
1212
1313/// The rolegroup [`Service`] is a headless service that allows direct access to the instances of a
@@ -16,13 +16,12 @@ use crate::{
1616/// This is mostly useful for internal communication between peers, or for clients that perform
1717/// client-side load balancing.
1818pub fn build_rolegroup_service (
19- hbase : & v1alpha1:: HbaseCluster ,
2019 cluster : & ValidatedCluster ,
2120 hbase_role : & HbaseRole ,
2221 role_group_name : & RoleGroupName ,
2322) -> Service {
2423 let ports = hbase_role
25- . ports ( hbase )
24+ . ports ( cluster . has_https_enabled ( ) )
2625 . into_iter ( )
2726 . map ( |( name, value) | ServicePort {
2827 name : Some ( name) ,
@@ -63,7 +62,6 @@ pub fn build_rolegroup_service(
6362/// The rolegroup metrics [`Service`] is a service that exposes metrics and a prometheus scraping
6463/// label.
6564pub fn build_rolegroup_metrics_service (
66- hbase : & v1alpha1:: HbaseCluster ,
6765 cluster : & ValidatedCluster ,
6866 hbase_role : & HbaseRole ,
6967 role_group_name : & RoleGroupName ,
@@ -86,7 +84,10 @@ pub fn build_rolegroup_metrics_service(
8684 role_group_name,
8785 )
8886 . with_labels ( prometheus_labels ( ) )
89- . with_annotations ( prometheus_annotations ( hbase, hbase_role) )
87+ . with_annotations ( prometheus_annotations (
88+ cluster. has_https_enabled ( ) ,
89+ hbase_role,
90+ ) )
9091 . build ( ) ,
9192 spec : Some ( ServiceSpec {
9293 // Internal communication does not need to be exposed
@@ -115,7 +116,7 @@ fn prometheus_labels() -> Labels {
115116/// These annotations can be used in a ServiceMonitor.
116117///
117118/// see also <https://github.com/prometheus-community/helm-charts/blob/prometheus-27.32.0/charts/prometheus/values.yaml#L983-L1036>
118- fn prometheus_annotations ( hbase : & v1alpha1 :: HbaseCluster , hbase_role : & HbaseRole ) -> Annotations {
119+ fn prometheus_annotations ( https_enabled : bool , hbase_role : & HbaseRole ) -> Annotations {
119120 Annotations :: try_from ( [
120121 ( "prometheus.io/path" . to_owned ( ) , "/prometheus" . to_owned ( ) ) ,
121122 (
@@ -124,7 +125,7 @@ fn prometheus_annotations(hbase: &v1alpha1::HbaseCluster, hbase_role: &HbaseRole
124125 ) ,
125126 (
126127 "prometheus.io/scheme" . to_owned ( ) ,
127- if hbase . has_https_enabled ( ) {
128+ if https_enabled {
128129 "https" . to_owned ( )
129130 } else {
130131 "http" . to_owned ( )
@@ -143,50 +144,13 @@ mod test {
143144 use crate :: test_utils;
144145
145146 #[ rstest]
146- #[ case( "2.6.3" , HbaseRole :: Master , vec![ "master" , "ui-http" ] ) ]
147- #[ case( "2.6.3" , HbaseRole :: RegionServer , vec![ "regionserver" , "ui-http" ] ) ]
148- #[ case( "2.6.3" , HbaseRole :: RestServer , vec![ "rest-http" , "ui-http" ] ) ]
149- #[ case( "2.6.4" , HbaseRole :: Master , vec![ "master" , "ui-http" ] ) ]
150- #[ case( "2.6.4" , HbaseRole :: RegionServer , vec![ "regionserver" , "ui-http" ] ) ]
151- #[ case( "2.6.4" , HbaseRole :: RestServer , vec![ "rest-http" , "ui-http" ] ) ]
152- fn test_rolegroup_service_ports (
153- #[ case] hbase_version : & str ,
154- #[ case] role : HbaseRole ,
155- #[ case] expected_ports : Vec < & str > ,
156- ) {
157- let input = format ! (
158- "
159- apiVersion: hbase.stackable.tech/v1alpha1
160- kind: HbaseCluster
161- metadata:
162- name: hbase
163- uid: c2e98fc1-6b88-4d11-9381-52530e3f431e
164- spec:
165- image:
166- productVersion: {hbase_version}
167- clusterConfig:
168- hdfsConfigMapName: simple-hdfs
169- zookeeperConfigMapName: simple-znode
170- masters:
171- roleGroups:
172- default:
173- replicas: 1
174- regionServers:
175- roleGroups:
176- default:
177- replicas: 1
178- restServers:
179- roleGroups:
180- default:
181- replicas: 1
182- "
183- ) ;
184- let hbase: v1alpha1:: HbaseCluster =
185- serde_yaml:: from_str ( & input) . expect ( "illegal test input" ) ;
186-
147+ #[ case( HbaseRole :: Master , vec![ "master" , "ui-http" ] ) ]
148+ #[ case( HbaseRole :: RegionServer , vec![ "regionserver" , "ui-http" ] ) ]
149+ #[ case( HbaseRole :: RestServer , vec![ "rest-http" , "ui-http" ] ) ]
150+ fn test_rolegroup_service_ports ( #[ case] role : HbaseRole , #[ case] expected_ports : Vec < & str > ) {
187151 let cluster = test_utils:: validated_cluster ( ) ;
188152 let role_group_name = test_utils:: role_group_name ( "default" ) ;
189- let service = build_rolegroup_service ( & hbase , & cluster, & role, & role_group_name) ;
153+ let service = build_rolegroup_service ( & cluster, & role, & role_group_name) ;
190154
191155 assert_eq ! (
192156 expected_ports,
0 commit comments