Skip to content

Commit 71015a5

Browse files
committed
replaced listener-class enum with string
1 parent 550ea47 commit 71015a5

File tree

3 files changed

+31
-179
lines changed

3 files changed

+31
-179
lines changed

deploy/helm/hbase-operator/crds/crds.yaml

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -198,10 +198,6 @@ spec:
198198
type: string
199199
listenerClass:
200200
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose this rolegroup.
201-
enum:
202-
- cluster-internal
203-
- external-unstable
204-
- external-stable
205201
nullable: true
206202
type: string
207203
logging:
@@ -456,10 +452,6 @@ spec:
456452
type: string
457453
listenerClass:
458454
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose this rolegroup.
459-
enum:
460-
- cluster-internal
461-
- external-unstable
462-
- external-stable
463455
nullable: true
464456
type: string
465457
logging:
@@ -695,10 +687,6 @@ spec:
695687
type: string
696688
listenerClass:
697689
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose this rolegroup.
698-
enum:
699-
- cluster-internal
700-
- external-unstable
701-
- external-stable
702690
nullable: true
703691
type: string
704692
logging:
@@ -981,10 +969,6 @@ spec:
981969
type: string
982970
listenerClass:
983971
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose this rolegroup.
984-
enum:
985-
- cluster-internal
986-
- external-unstable
987-
- external-stable
988972
nullable: true
989973
type: string
990974
logging:
@@ -1248,10 +1232,6 @@ spec:
12481232
type: string
12491233
listenerClass:
12501234
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose this rolegroup.
1251-
enum:
1252-
- cluster-internal
1253-
- external-unstable
1254-
- external-stable
12551235
nullable: true
12561236
type: string
12571237
logging:
@@ -1506,10 +1486,6 @@ spec:
15061486
type: string
15071487
listenerClass:
15081488
description: This field controls which [ListenerClass](https://docs.stackable.tech/home/nightly/listener-operator/listenerclass.html) is used to expose this rolegroup.
1509-
enum:
1510-
- cluster-internal
1511-
- external-unstable
1512-
- external-stable
15131489
nullable: true
15141490
type: string
15151491
logging:

rust/operator-binary/src/crd/mod.rs

Lines changed: 7 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -85,9 +85,6 @@ pub const HBASE_REST_UI_PORT: u16 = 8085;
8585
// This port is only used by Hbase prior to version 2.6 with a third-party JMX exporter.
8686
// Newer versions use the same port as the UI because Hbase provides it's own metrics API
8787
pub const METRICS_PORT: u16 = 9100;
88-
89-
pub const DEFAULT_LISTENER_CLASS: SupportedListenerClasses =
90-
SupportedListenerClasses::ClusterInternal;
9188
pub const LISTENER_VOLUME_NAME: &str = "listener";
9289
pub const LISTENER_VOLUME_DIR: &str = "/stackable/listener";
9390

@@ -600,9 +597,6 @@ impl v1alpha1::HbaseCluster {
600597
// Order rolegroups consistently, to avoid spurious downstream rewrites
601598
.collect::<BTreeMap<_, _>>()
602599
.into_iter()
603-
.filter(|(rolegroup_name, _)| {
604-
self.resolved_listener_class_discoverable(role, rolegroup_name)
605-
})
606600
.map(|(rolegroup_name, role_group)| {
607601
(
608602
self.rolegroup_ref(HbaseRole::Master.to_string(), rolegroup_name),
@@ -618,9 +612,6 @@ impl v1alpha1::HbaseCluster {
618612
// Order rolegroups consistently, to avoid spurious downstream rewrites
619613
.collect::<BTreeMap<_, _>>()
620614
.into_iter()
621-
.filter(|(rolegroup_name, _)| {
622-
self.resolved_listener_class_discoverable(role, rolegroup_name)
623-
})
624615
.map(|(rolegroup_name, role_group)| {
625616
(
626617
self.rolegroup_ref(HbaseRole::RegionServer.to_string(), rolegroup_name),
@@ -636,9 +627,6 @@ impl v1alpha1::HbaseCluster {
636627
// Order rolegroups consistently, to avoid spurious downstream rewrites
637628
.collect::<BTreeMap<_, _>>()
638629
.into_iter()
639-
.filter(|(rolegroup_name, _)| {
640-
self.resolved_listener_class_discoverable(role, rolegroup_name)
641-
})
642630
.map(|(rolegroup_name, role_group)| {
643631
(
644632
self.rolegroup_ref(HbaseRole::RestServer.to_string(), rolegroup_name),
@@ -649,19 +637,6 @@ impl v1alpha1::HbaseCluster {
649637
}
650638
}
651639

652-
fn resolved_listener_class_discoverable(
653-
&self,
654-
role: &HbaseRole,
655-
rolegroup_name: &&String,
656-
) -> bool {
657-
let listener_class = self.merged_listener_class(role, rolegroup_name);
658-
if let Some(listener_class) = listener_class {
659-
listener_class.discoverable()
660-
} else {
661-
false
662-
}
663-
}
664-
665640
pub fn pod_refs(
666641
&self,
667642
role: &HbaseRole,
@@ -736,72 +711,6 @@ impl v1alpha1::HbaseCluster {
736711
}))
737712
.await
738713
}
739-
740-
pub fn merged_listener_class(
741-
&self,
742-
role: &HbaseRole,
743-
rolegroup_name: &String,
744-
) -> Option<SupportedListenerClasses> {
745-
match role {
746-
HbaseRole::Master => {
747-
if let Some(masters) = self.spec.masters.as_ref() {
748-
let conf_defaults = Some(SupportedListenerClasses::ClusterInternal);
749-
let mut conf_role = masters.config.config.listener_class.to_owned();
750-
let mut conf_rolegroup = masters
751-
.role_groups
752-
.get(rolegroup_name)
753-
.map(|rg| rg.config.config.listener_class.clone())
754-
.unwrap_or_default();
755-
756-
conf_role.merge(&conf_defaults);
757-
conf_rolegroup.merge(&conf_role);
758-
759-
tracing::debug!("Merged listener-class: {:?} for {role}", conf_rolegroup);
760-
conf_rolegroup
761-
} else {
762-
None
763-
}
764-
}
765-
HbaseRole::RegionServer => {
766-
if let Some(region_servers) = self.spec.region_servers.as_ref() {
767-
let conf_defaults = Some(SupportedListenerClasses::ClusterInternal);
768-
let mut conf_role = region_servers.config.config.listener_class.to_owned();
769-
let mut conf_rolegroup = region_servers
770-
.role_groups
771-
.get(rolegroup_name)
772-
.map(|rg| rg.config.config.listener_class.clone())
773-
.unwrap_or_default();
774-
775-
conf_role.merge(&conf_defaults);
776-
conf_rolegroup.merge(&conf_role);
777-
778-
tracing::debug!("Merged listener-class: {:?} for {role}", conf_rolegroup);
779-
conf_rolegroup
780-
} else {
781-
None
782-
}
783-
}
784-
HbaseRole::RestServer => {
785-
if let Some(rest_servers) = self.spec.rest_servers.as_ref() {
786-
let conf_defaults = Some(SupportedListenerClasses::ClusterInternal);
787-
let mut conf_role = rest_servers.config.config.listener_class.to_owned();
788-
let mut conf_rolegroup = rest_servers
789-
.role_groups
790-
.get(rolegroup_name)
791-
.map(|rg| rg.config.config.listener_class.clone())
792-
.unwrap_or_default();
793-
794-
conf_role.merge(&conf_defaults);
795-
conf_rolegroup.merge(&conf_role);
796-
797-
tracing::debug!("Merged listener-class: {:?} for {role}", conf_rolegroup);
798-
conf_rolegroup
799-
} else {
800-
None
801-
}
802-
}
803-
}
804-
}
805714
}
806715

807716
/// Reference to a single `Pod` that is a component of a [`HbaseCluster`]
@@ -972,7 +881,7 @@ impl HbaseRole {
972881
affinity: get_affinity(cluster_name, self, hdfs_discovery_cm_name),
973882
graceful_shutdown_timeout: Some(graceful_shutdown_timeout),
974883
requested_secret_lifetime: Some(requested_secret_lifetime),
975-
listener_class: Some(DEFAULT_LISTENER_CLASS),
884+
listener_class: Some("cluster-internal".to_string()),
976885
}
977886
}
978887

@@ -1073,7 +982,7 @@ impl AnyConfigFragment {
1073982
cli_opts: None,
1074983
},
1075984
requested_secret_lifetime: Some(HbaseRole::DEFAULT_REGION_SECRET_LIFETIME),
1076-
listener_class: Some(DEFAULT_LISTENER_CLASS),
985+
listener_class: Some("cluster-internal".to_string()),
1077986
})
1078987
}
1079988
HbaseRole::RestServer => AnyConfigFragment::RestServer(HbaseConfigFragment {
@@ -1085,7 +994,7 @@ impl AnyConfigFragment {
1085994
HbaseRole::DEFAULT_REST_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT,
1086995
),
1087996
requested_secret_lifetime: Some(HbaseRole::DEFAULT_REST_SECRET_LIFETIME),
1088-
listener_class: Some(DEFAULT_LISTENER_CLASS),
997+
listener_class: Some("cluster-internal".to_string()),
1089998
}),
1090999
HbaseRole::Master => AnyConfigFragment::Master(HbaseConfigFragment {
10911000
hbase_rootdir: None,
@@ -1096,7 +1005,7 @@ impl AnyConfigFragment {
10961005
HbaseRole::DEFAULT_MASTER_GRACEFUL_SHUTDOWN_TIMEOUT,
10971006
),
10981007
requested_secret_lifetime: Some(HbaseRole::DEFAULT_MASTER_SECRET_LIFETIME),
1099-
listener_class: Some(DEFAULT_LISTENER_CLASS),
1008+
listener_class: Some("cluster-internal".to_string()),
11001009
}),
11011010
}
11021011
}
@@ -1176,7 +1085,7 @@ pub struct HbaseConfig {
11761085
pub requested_secret_lifetime: Option<Duration>,
11771086

11781087
/// This field controls which [ListenerClass](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listenerclass.html) is used to expose this rolegroup.
1179-
pub listener_class: SupportedListenerClasses,
1088+
pub listener_class: String,
11801089
}
11811090

11821091
impl Configuration for HbaseConfigFragment {
@@ -1328,7 +1237,7 @@ pub struct RegionServerConfig {
13281237
pub region_mover: RegionMover,
13291238

13301239
/// This field controls which [ListenerClass](DOCS_BASE_URL_PLACEHOLDER/listener-operator/listenerclass.html) is used to expose this rolegroup.
1331-
pub listener_class: SupportedListenerClasses,
1240+
pub listener_class: String,
13321241
}
13331242

13341243
impl Configuration for RegionServerConfigFragment {
@@ -1396,35 +1305,6 @@ impl Configuration for RegionServerConfigFragment {
13961305
}
13971306
}
13981307

1399-
#[derive(Clone, Debug, Default, Display, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
1400-
#[serde(rename_all = "PascalCase")]
1401-
pub enum SupportedListenerClasses {
1402-
#[default]
1403-
#[serde(rename = "cluster-internal")]
1404-
#[strum(serialize = "cluster-internal")]
1405-
ClusterInternal,
1406-
1407-
#[serde(rename = "external-unstable")]
1408-
#[strum(serialize = "external-unstable")]
1409-
ExternalUnstable,
1410-
1411-
#[serde(rename = "external-stable")]
1412-
#[strum(serialize = "external-stable")]
1413-
ExternalStable,
1414-
}
1415-
1416-
impl Atomic for SupportedListenerClasses {}
1417-
1418-
impl SupportedListenerClasses {
1419-
pub fn discoverable(&self) -> bool {
1420-
match self {
1421-
SupportedListenerClasses::ClusterInternal => false,
1422-
SupportedListenerClasses::ExternalUnstable => true,
1423-
SupportedListenerClasses::ExternalStable => true,
1424-
}
1425-
}
1426-
}
1427-
14281308
#[derive(Clone, Debug, Default, Deserialize, Eq, JsonSchema, PartialEq, Serialize)]
14291309
#[serde(rename_all = "camelCase")]
14301310
pub struct HbaseClusterStatus {
@@ -1479,7 +1359,7 @@ impl AnyServiceConfig {
14791359
}
14801360
}
14811361

1482-
pub fn listener_class(&self) -> SupportedListenerClasses {
1362+
pub fn listener_class(&self) -> String {
14831363
match self {
14841364
AnyServiceConfig::Master(config) => config.listener_class.clone(),
14851365
AnyServiceConfig::RegionServer(config) => config.listener_class.clone(),

rust/operator-binary/src/hbase_controller.rs

Lines changed: 24 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -777,7 +777,7 @@ fn build_rolegroup_service(
777777

778778
let metadata = ObjectMetaBuilder::new()
779779
.name_and_namespace(hbase)
780-
.name(rolegroup.object_name())
780+
.name(format!("{name}-metrics", name = rolegroup.object_name()))
781781
.ownerreference_from_resource(hbase, None, Some(true))
782782
.context(ObjectMissingMetadataForOwnerRefSnafu)?
783783
.with_recommended_labels(build_recommended_labels(
@@ -915,6 +915,12 @@ fn build_rolegroup_statefulset(
915915
let role_name = hbase_role.cli_role_name();
916916
let mut hbase_container = ContainerBuilder::new("hbase").expect("ContainerBuilder not created");
917917

918+
let rest_http_port_name = if hbase.has_https_enabled() {
919+
HBASE_REST_PORT_NAME_HTTPS
920+
} else {
921+
HBASE_REST_PORT_NAME_HTTP
922+
};
923+
918924
hbase_container
919925
.image_from_product_image(resolved_product_image)
920926
.command(command())
@@ -924,11 +930,11 @@ fn build_rolegroup_statefulset(
924930
role = role_name,
925931
domain = hbase_service_domain_name(hbase, rolegroup_ref, cluster_info)?,
926932
port = hbase.service_port(hbase_role).to_string(),
927-
port_name = match hbase_role {
928-
HbaseRole::Master => "master",
929-
HbaseRole::RegionServer => "regionserver",
930-
HbaseRole::RestServer => "rest-http",
931-
}
933+
port_name = match hbase_role {
934+
HbaseRole::Master => "master",
935+
HbaseRole::RegionServer => "regionserver",
936+
HbaseRole::RestServer => rest_http_port_name,
937+
}
932938
}])
933939
.add_env_vars(merged_env)
934940
// Needed for the `containerdebug` process to log it's tracing information to.
@@ -1001,26 +1007,13 @@ fn build_rolegroup_statefulset(
10011007
.security_context(PodSecurityContextBuilder::new().fs_group(1000).build());
10021008

10031009
// externally-reachable listener endpoints should use a pvc volume...
1004-
let pvcs = if merged_config.listener_class().discoverable() {
1005-
let pvc = ListenerOperatorVolumeSourceBuilder::new(
1006-
&ListenerReference::ListenerClass(merged_config.listener_class().to_string()),
1007-
&recommended_labels,
1008-
)
1009-
.context(BuildListenerVolumeSnafu)?
1010-
.build_pvc(LISTENER_VOLUME_NAME.to_string())
1011-
.context(BuildListenerVolumeSnafu)?;
1012-
Some(vec![pvc])
1013-
} else {
1014-
// ...whereas others will use ephemeral volumes
1015-
pod_builder
1016-
.add_listener_volume_by_listener_class(
1017-
LISTENER_VOLUME_NAME,
1018-
&merged_config.listener_class().to_string(),
1019-
&recommended_labels,
1020-
)
1021-
.context(AddVolumeSnafu)?;
1022-
None
1023-
};
1010+
let pvc = ListenerOperatorVolumeSourceBuilder::new(
1011+
&ListenerReference::ListenerClass(merged_config.listener_class().to_string()),
1012+
&recommended_labels,
1013+
)
1014+
.context(BuildListenerVolumeSnafu)?
1015+
.build_pvc(LISTENER_VOLUME_NAME.to_string())
1016+
.context(BuildListenerVolumeSnafu)?;
10241017

10251018
if let Some(ContainerLogConfig {
10261019
choice:
@@ -1124,9 +1117,12 @@ fn build_rolegroup_statefulset(
11241117
match_labels: Some(statefulset_match_labels.into()),
11251118
..LabelSelector::default()
11261119
},
1127-
service_name: Some(rolegroup_ref.object_name()),
1120+
service_name: Some(format!(
1121+
"{name}-metrics",
1122+
name = rolegroup_ref.object_name()
1123+
)),
11281124
template: pod_template,
1129-
volume_claim_templates: pvcs,
1125+
volume_claim_templates: Some(vec![pvc]),
11301126
..StatefulSetSpec::default()
11311127
};
11321128

0 commit comments

Comments
 (0)