Skip to content

Commit ff9b9b5

Browse files
committed
refactor: use v2 ownerref, labes
1 parent 9cea43c commit ff9b9b5

8 files changed

Lines changed: 166 additions & 209 deletions

File tree

rust/operator-binary/src/controller.rs

Lines changed: 16 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@ use stackable_operator::{
2222
},
2323
v2::{
2424
cluster_resources::cluster_resources_new,
25-
types::operator::{ControllerName, OperatorName, ProductName},
25+
kvp::label::recommended_labels,
26+
types::operator::{
27+
ControllerName, OperatorName, ProductName, ProductVersion, RoleGroupName,
28+
},
2629
},
2730
};
2831
use strum::{EnumDiscriminants, IntoStaticStr};
@@ -33,9 +36,7 @@ use crate::{
3336
pdb::build_pdb,
3437
service::{build_rolegroup_headless_service, build_rolegroup_metrics_service},
3538
},
36-
crd::{
37-
APP_NAME, DruidClusterStatus, DruidRole, OPERATOR_NAME, build_recommended_labels, v1alpha1,
38-
},
39+
crd::{APP_NAME, DruidClusterStatus, DruidRole, OPERATOR_NAME, v1alpha1},
3940
internal_secret::create_shared_internal_secret,
4041
};
4142

@@ -158,16 +159,6 @@ pub enum Error {
158159
source: stackable_operator::cluster_resources::Error,
159160
},
160161

161-
#[snafu(display("failed to configure listener"))]
162-
ListenerConfiguration {
163-
source: crate::controller::build::resource::listener::Error,
164-
},
165-
166-
#[snafu(display("failed to configure service"))]
167-
ServiceConfiguration {
168-
source: crate::controller::build::resource::service::Error,
169-
},
170-
171162
#[snafu(display("failed to validate cluster"))]
172163
ValidateCluster { source: validate::Error },
173164

@@ -238,19 +229,15 @@ pub async fn reconcile_druid(
238229
let mut ss_cond_builder = StatefulSetConditionBuilder::default();
239230

240231
for (druid_role, groups) in validated_cluster.role_group_configs.iter() {
241-
let role_name = druid_role.to_string();
242-
243232
create_shared_internal_secret(druid, client, DRUID_CONTROLLER_NAME)
244233
.await
245234
.context(FailedInternalSecretCreationSnafu)?;
246235

247236
for (rolegroup_name, rg) in groups.iter() {
248237
let rg_headless_service =
249-
build_rolegroup_headless_service(&validated_cluster, druid_role, rolegroup_name)
250-
.context(ServiceConfigurationSnafu)?;
238+
build_rolegroup_headless_service(&validated_cluster, druid_role, rolegroup_name);
251239
let rg_metrics_service =
252-
build_rolegroup_metrics_service(&validated_cluster, druid_role, rolegroup_name)
253-
.context(ServiceConfigurationSnafu)?;
240+
build_rolegroup_metrics_service(&validated_cluster, druid_role, rolegroup_name);
254241

255242
let rg_configmap = build::resource::config_map::build_rolegroup_config_map(
256243
&validated_cluster,
@@ -305,18 +292,20 @@ pub async fn reconcile_druid(
305292
{
306293
let role_group_listener = build_group_listener(
307294
&validated_cluster,
308-
build_recommended_labels(
295+
recommended_labels(
309296
&validated_cluster,
310-
DRUID_CONTROLLER_NAME,
311-
&validated_cluster.image.app_version_label_value,
312-
&role_name,
313-
"none",
297+
&product_name(),
298+
&ProductVersion::from_str(&validated_cluster.image.app_version_label_value)
299+
.expect("a valid product version"),
300+
&operator_name(),
301+
&controller_name(),
302+
&druid_role.to_role_name(),
303+
&RoleGroupName::from_str("none").expect("a valid role group name"),
314304
),
315305
listener_class.to_string(),
316306
listener_group_name,
317307
druid_role,
318-
)
319-
.context(ListenerConfigurationSnafu)?;
308+
);
320309

321310
let listener = cluster_resources
322311
.add(client, role_group_listener)

rust/operator-binary/src/controller/build/resource/config_map.rs

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
//! The builder does not read the raw [`v1alpha1::DruidCluster`] at all: everything it needs is
1212
//! carried on `ValidatedCluster` (resolved during the validate step).
1313
14-
use std::collections::BTreeMap;
14+
use std::{collections::BTreeMap, str::FromStr};
1515

1616
use snafu::{ResultExt, Snafu};
1717
use stackable_operator::{
@@ -20,14 +20,15 @@ use stackable_operator::{
2020
k8s_openapi::api::core::v1::{ConfigMap, EnvVar},
2121
product_logging::framework::VECTOR_CONFIG_FILE,
2222
v2::{
23-
builder::meta::ownerreference_from_resource, config_file_writer::to_java_properties_string,
24-
types::operator::RoleGroupName,
23+
builder::meta::ownerreference_from_resource,
24+
config_file_writer::to_java_properties_string,
25+
kvp::label::recommended_labels,
26+
types::operator::{ProductVersion, RoleGroupName},
2527
},
2628
};
2729

2830
use crate::{
2931
controller::{
30-
DRUID_CONTROLLER_NAME,
3132
build::{
3233
jvm::construct_jvm_args,
3334
properties::{
@@ -36,12 +37,12 @@ use crate::{
3637
runtime_properties, security_properties,
3738
},
3839
},
40+
controller_name, operator_name, product_name,
3941
validate::{DruidRoleGroupConfig, ValidatedCluster},
4042
},
4143
crd::{
4244
DruidConfigOverrides, DruidRole, STACKABLE_TRUST_STORE, STACKABLE_TRUST_STORE_PASSWORD,
43-
STACKABLE_TRUST_STORE_TYPE, build_recommended_labels, build_string_list, env_var_reference,
44-
file_reference,
45+
STACKABLE_TRUST_STORE_TYPE, build_string_list, env_var_reference, file_reference,
4546
},
4647
};
4748

@@ -83,11 +84,6 @@ pub enum Error {
8384
#[snafu(display("failed to update Druid config from resources"))]
8485
UpdateDruidConfigFromResources { source: crate::crd::resource::Error },
8586

86-
#[snafu(display("failed to build metadata"))]
87-
MetadataBuild {
88-
source: stackable_operator::builder::meta::Error,
89-
},
90-
9187
#[snafu(display("there was an error generating the authentication runtime settings"))]
9288
GenerateAuthenticationRuntimeSettings {
9389
source: crate::authentication::Error,
@@ -330,14 +326,16 @@ pub fn build_rolegroup_config_map(
330326
.name_and_namespace(cluster)
331327
.name(resource_names.role_group_config_map().to_string())
332328
.ownerreference(ownerreference_from_resource(cluster, None, Some(true)))
333-
.with_recommended_labels(&build_recommended_labels(
329+
.with_labels(recommended_labels(
334330
cluster,
335-
DRUID_CONTROLLER_NAME,
336-
&cluster.image.app_version_label_value,
337-
&role.to_string(),
338-
role_group_name.as_ref(),
331+
&product_name(),
332+
&ProductVersion::from_str(&cluster.image.app_version_label_value)
333+
.expect("a valid product version"),
334+
&operator_name(),
335+
&controller_name(),
336+
&role.to_role_name(),
337+
role_group_name,
339338
))
340-
.context(MetadataBuildSnafu)?
341339
.build(),
342340
);
343341

rust/operator-binary/src/controller/build/resource/discovery.rs

Lines changed: 18 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
//! Discovery for Druid. We make Druid discoverable by putting a connection string to the router service
22
//! inside a config map. We only provide a connection string to the router service, since it serves as
33
//! a gateway to the cluster for client queries.
4+
use std::str::FromStr;
5+
46
use snafu::{ResultExt, Snafu};
57
use stackable_operator::{
68
builder::{configmap::ConfigMapBuilder, meta::ObjectMetaBuilder},
79
crd::listener::v1alpha1::Listener,
810
k8s_openapi::api::core::v1::ConfigMap,
9-
v2::builder::meta::ownerreference_from_resource,
11+
v2::{
12+
builder::meta::ownerreference_from_resource,
13+
kvp::label::recommended_labels,
14+
types::operator::{ProductVersion, RoleGroupName},
15+
},
1016
};
1117

1218
use crate::{
13-
DRUID_CONTROLLER_NAME,
1419
controller::{
15-
build::resource::listener::build_listener_connection_string, validate::ValidatedCluster,
20+
build::resource::listener::build_listener_connection_string, controller_name,
21+
operator_name, product_name, validate::ValidatedCluster,
1622
},
17-
crd::{DruidRole, build_recommended_labels},
23+
crd::DruidRole,
1824
};
1925

2026
#[derive(Snafu, Debug)]
@@ -24,11 +30,6 @@ pub enum Error {
2430
source: stackable_operator::builder::configmap::Error,
2531
},
2632

27-
#[snafu(display("failed to add recommended labels"))]
28-
AddRecommendedLabels {
29-
source: stackable_operator::builder::meta::Error,
30-
},
31-
3233
#[snafu(display("failed to configure listener discovery configmap"))]
3334
ListenerConfiguration {
3435
source: crate::controller::build::resource::listener::Error,
@@ -65,14 +66,16 @@ fn build_discovery_configmap(
6566
ObjectMetaBuilder::new()
6667
.name_and_namespace(cluster)
6768
.ownerreference(ownerreference_from_resource(cluster, None, Some(true)))
68-
.with_recommended_labels(&build_recommended_labels(
69+
.with_labels(recommended_labels(
6970
cluster,
70-
DRUID_CONTROLLER_NAME,
71-
&cluster.image.app_version_label_value,
72-
&DruidRole::Router.to_string(),
73-
"discovery",
71+
&product_name(),
72+
&ProductVersion::from_str(&cluster.image.app_version_label_value)
73+
.expect("a valid product version"),
74+
&operator_name(),
75+
&controller_name(),
76+
&DruidRole::Router.to_role_name(),
77+
&RoleGroupName::from_str("discovery").expect("a valid role group name"),
7478
))
75-
.context(AddRecommendedLabelsSnafu)?
7679
.build(),
7780
)
7881
.add_data("DRUID_ROUTER", router_host)

rust/operator-binary/src/controller/build/resource/listener.rs

Lines changed: 11 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
use std::str::FromStr;
22

3-
use snafu::{OptionExt, ResultExt, Snafu};
3+
use snafu::{OptionExt, Snafu};
44
use stackable_operator::{
55
builder::meta::ObjectMetaBuilder,
66
crd::listener::{self, v1alpha1::Listener},
77
k8s_openapi::api::core::v1::PersistentVolumeClaim,
8-
kvp::{Labels, ObjectLabels},
8+
kvp::Labels,
99
v2::{
10-
builder::pod::volume::{
11-
ListenerReference, listener_operator_volume_source_builder_build_pvc,
10+
builder::{
11+
meta::ownerreference_from_resource,
12+
pod::volume::{ListenerReference, listener_operator_volume_source_builder_build_pvc},
1213
},
1314
types::kubernetes::{ListenerName, PersistentVolumeClaimName},
1415
},
@@ -27,16 +28,6 @@ pub const LISTENER_VOLUME_DIR: &str = "/stackable/listener";
2728

2829
#[derive(Snafu, Debug)]
2930
pub enum Error {
30-
#[snafu(display("listener object is missing metadata to build owner reference"))]
31-
ObjectMissingMetadataForOwnerRef {
32-
source: stackable_operator::builder::meta::Error,
33-
},
34-
35-
#[snafu(display("failed to build listener object meta data"))]
36-
BuildObjectMeta {
37-
source: stackable_operator::builder::meta::Error,
38-
},
39-
4031
#[snafu(display("{role_name} listener has no adress"))]
4132
RoleListenerHasNoAddress { role_name: String },
4233

@@ -49,19 +40,17 @@ pub enum Error {
4940

5041
pub fn build_group_listener(
5142
cluster: &ValidatedCluster,
52-
object_labels: ObjectLabels<ValidatedCluster>,
43+
object_labels: Labels,
5344
listener_class: String,
5445
listener_group_name: ListenerName,
5546
druid_role: &DruidRole,
56-
) -> Result<Listener, Error> {
57-
Ok(Listener {
47+
) -> Listener {
48+
Listener {
5849
metadata: ObjectMetaBuilder::new()
5950
.name_and_namespace(cluster)
6051
.name(listener_group_name.to_string())
61-
.ownerreference_from_resource(cluster, None, Some(true))
62-
.context(ObjectMissingMetadataForOwnerRefSnafu)?
63-
.with_recommended_labels(&object_labels)
64-
.context(BuildObjectMetaSnafu)?
52+
.ownerreference(ownerreference_from_resource(cluster, None, Some(true)))
53+
.with_labels(object_labels)
6554
.build(),
6655
spec: listener::v1alpha1::ListenerSpec {
6756
class_name: Some(listener_class),
@@ -74,7 +63,7 @@ pub fn build_group_listener(
7463
..listener::v1alpha1::ListenerSpec::default()
7564
},
7665
status: None,
77-
})
66+
}
7867
}
7968

8069
pub fn build_group_listener_pvc(

0 commit comments

Comments
 (0)