Skip to content

Commit 6865a09

Browse files
committed
fix: move catalog configmap to builder module and use ValidatedCluster
1 parent b9ed0d2 commit 6865a09

2 files changed

Lines changed: 45 additions & 61 deletions

File tree

rust/operator-binary/src/controller.rs

Lines changed: 8 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ use const_format::concatcp;
55
use snafu::{OptionExt, ResultExt, Snafu};
66
use stackable_operator::{
77
builder::{
8-
configmap::ConfigMapBuilder,
98
meta::ObjectMetaBuilder,
109
pod::{
1110
PodBuilder,
@@ -27,7 +26,7 @@ use stackable_operator::{
2726
api::{
2827
apps::v1::{StatefulSet, StatefulSetSpec},
2928
core::v1::{
30-
ConfigMap, ConfigMapVolumeSource, ContainerPort, EnvVar, EnvVarSource, ExecAction,
29+
ConfigMapVolumeSource, ContainerPort, EnvVar, EnvVarSource, ExecAction,
3130
HTTPGetAction, Probe, SecretKeySelector, Volume,
3231
},
3332
},
@@ -63,7 +62,6 @@ mod build;
6362
mod dereference;
6463
mod validate;
6564

66-
use stackable_operator::v2::config_file_writer::to_java_properties_string;
6765
pub use validate::{TrinoRoleGroupConfig, ValidatedCluster};
6866

6967
use crate::{
@@ -130,12 +128,6 @@ pub enum Error {
130128
rolegroup: RoleGroupRef<v1alpha1::TrinoCluster>,
131129
},
132130

133-
#[snafu(display("failed to build ConfigMap for {}", rolegroup))]
134-
BuildRoleGroupConfig {
135-
source: stackable_operator::builder::configmap::Error,
136-
rolegroup: RoleGroupRef<v1alpha1::TrinoCluster>,
137-
},
138-
139131
#[snafu(display("failed to build ConfigMap for {}", rolegroup))]
140132
BuildRoleGroupConfigMap {
141133
source: build::config_map::Error,
@@ -159,11 +151,6 @@ pub enum Error {
159151
source: stackable_operator::builder::meta::Error,
160152
},
161153

162-
#[snafu(display("failed to format runtime properties"))]
163-
FailedToWriteJavaProperties {
164-
source: stackable_operator::v2::config_file_writer::PropertiesWriterError,
165-
},
166-
167154
#[snafu(display("internal operator failure: {source}"))]
168155
InternalOperatorFailure { source: crate::crd::Error },
169156

@@ -415,12 +402,14 @@ pub async fn reconcile_trino(
415402
rolegroup: role_group_ref.clone(),
416403
})?;
417404

418-
let rg_catalog_configmap = build_rolegroup_catalog_config_map(
419-
trino,
420-
&validated_cluster.image,
405+
let rg_catalog_configmap = build::config_map::build_rolegroup_catalog_config_map(
406+
&validated_cluster,
421407
&role_group_ref,
422-
&validated_cluster.cluster_config.catalogs,
423-
)?;
408+
&role_group_service_recommended_labels,
409+
)
410+
.with_context(|_| BuildRoleGroupConfigMapSnafu {
411+
rolegroup: role_group_ref.clone(),
412+
})?;
424413

425414
let rg_stateful_set = build_rolegroup_statefulset(
426415
trino,
@@ -533,48 +522,6 @@ pub async fn reconcile_trino(
533522
Ok(Action::await_change())
534523
}
535524

536-
/// The rolegroup catalog [`ConfigMap`] configures the rolegroup catalog based on the configuration
537-
/// given by the administrator
538-
fn build_rolegroup_catalog_config_map(
539-
trino: &v1alpha1::TrinoCluster,
540-
resolved_product_image: &ResolvedProductImage,
541-
rolegroup_ref: &RoleGroupRef<v1alpha1::TrinoCluster>,
542-
catalogs: &[CatalogConfig],
543-
) -> Result<ConfigMap> {
544-
ConfigMapBuilder::new()
545-
.metadata(
546-
ObjectMetaBuilder::new()
547-
.name_and_namespace(trino)
548-
.name(format!("{}-catalog", rolegroup_ref.object_name()))
549-
.ownerreference_from_resource(trino, None, Some(true))
550-
.context(ObjectMissingMetadataForOwnerRefSnafu)?
551-
.with_recommended_labels(&build_recommended_labels(
552-
trino,
553-
&resolved_product_image.app_version_label_value,
554-
&rolegroup_ref.role,
555-
&rolegroup_ref.role_group,
556-
))
557-
.context(MetadataBuildSnafu)?
558-
.build(),
559-
)
560-
.data(
561-
catalogs
562-
.iter()
563-
.map(|catalog| {
564-
Ok((
565-
format!("{}.properties", catalog.name),
566-
to_java_properties_string(catalog.properties.iter())
567-
.context(FailedToWriteJavaPropertiesSnafu)?,
568-
))
569-
})
570-
.collect::<Result<_>>()?,
571-
)
572-
.build()
573-
.with_context(|_| BuildRoleGroupConfigSnafu {
574-
rolegroup: rolegroup_ref.clone(),
575-
})
576-
}
577-
578525
/// The rolegroup [`StatefulSet`] runs the rolegroup, as configured by the administrator.
579526
///
580527
/// The [`Pod`](`stackable_operator::k8s_openapi::api::core::v1::Pod`)s are accessible through the

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

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -211,3 +211,40 @@ pub fn build_rolegroup_config_map(
211211
rolegroup: rolegroup_ref.clone(),
212212
})
213213
}
214+
215+
/// The rolegroup catalog [`ConfigMap`] configures the rolegroup catalog based on the configuration
216+
/// given by the administrator
217+
pub fn build_rolegroup_catalog_config_map(
218+
cluster: &ValidatedCluster,
219+
rolegroup_ref: &RoleGroupRef<v1alpha1::TrinoCluster>,
220+
recommended_labels: &ObjectLabels<'_, v1alpha1::TrinoCluster>,
221+
) -> Result<ConfigMap> {
222+
ConfigMapBuilder::new()
223+
.metadata(
224+
ObjectMetaBuilder::new()
225+
.name(format!("{}-catalog", rolegroup_ref.object_name()))
226+
.namespace(cluster.namespace.to_string())
227+
.ownerreference_from_resource(cluster, None, Some(true))
228+
.context(MetadataSnafu)?
229+
.with_recommended_labels(recommended_labels)
230+
.context(MetadataSnafu)?
231+
.build(),
232+
)
233+
.data(
234+
cluster
235+
.cluster_config
236+
.catalogs
237+
.iter()
238+
.map(|catalog| {
239+
let file = format!("{}.properties", catalog.name);
240+
let rendered = to_java_properties_string(catalog.properties.iter())
241+
.with_context(|_| WritePropertiesSnafu { file: file.clone() })?;
242+
Ok((file, rendered))
243+
})
244+
.collect::<Result<_>>()?,
245+
)
246+
.build()
247+
.with_context(|_| AssembleSnafu {
248+
rolegroup: rolegroup_ref.clone(),
249+
})
250+
}

0 commit comments

Comments
 (0)