Skip to content

Commit bd9b277

Browse files
committed
move db connection details from dereferenced to the controller and remove derives where they do not exist on the upstream type
1 parent 6db46c1 commit bd9b277

3 files changed

Lines changed: 18 additions & 20 deletions

File tree

rust/operator-binary/src/controller.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -399,7 +399,7 @@ pub async fn reconcile_hive(
399399
&validated.image,
400400
&rolegroup,
401401
&validated_rg_config.product_config_properties,
402-
&dereferenced.metadata_database_connection_details,
402+
&validated.metadata_database_connection_details,
403403
dereferenced.s3_connection_spec.as_ref(),
404404
&validated_rg_config.merged_config,
405405
&client.kubernetes_cluster_info,
@@ -411,7 +411,7 @@ pub async fn reconcile_hive(
411411
&validated.image,
412412
&rolegroup,
413413
&validated_rg_config.product_config_properties,
414-
&dereferenced.metadata_database_connection_details,
414+
&validated.metadata_database_connection_details,
415415
dereferenced.s3_connection_spec.as_ref(),
416416
&validated_rg_config.merged_config,
417417
&rbac_sa.name_any(),

rust/operator-binary/src/controller/dereference.rs

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
use snafu::{ResultExt, Snafu};
2-
use stackable_operator::{
3-
crd::s3, database_connections::drivers::jdbc::JdbcDatabaseConnectionDetails, kube::ResourceExt,
4-
};
2+
use stackable_operator::{crd::s3, kube::ResourceExt};
53

64
use crate::{config::opa::HiveOpaConfig, crd::v1alpha1};
75

@@ -15,11 +13,6 @@ pub enum Error {
1513
source: s3::v1alpha1::ConnectionError,
1614
},
1715

18-
#[snafu(display("invalid metadata database connection"))]
19-
InvalidMetadataDatabaseConnection {
20-
source: stackable_operator::database_connections::Error,
21-
},
22-
2316
#[snafu(display("invalid OPA configuration"))]
2417
InvalidOpaConfig {
2518
source: stackable_operator::commons::opa::Error,
@@ -29,7 +22,6 @@ pub enum Error {
2922
/// External references resolved during the dereference step.
3023
pub struct DereferencedObjects {
3124
pub s3_connection_spec: Option<s3::v1alpha1::ConnectionSpec>,
32-
pub metadata_database_connection_details: JdbcDatabaseConnectionDetails,
3325
pub hive_opa_config: Option<HiveOpaConfig>,
3426
}
3527

@@ -52,13 +44,6 @@ pub async fn dereference(
5244
None
5345
};
5446

55-
let metadata_database_connection_details = hive
56-
.spec
57-
.cluster_config
58-
.metadata_database
59-
.jdbc_connection_details("METADATA")
60-
.context(InvalidMetadataDatabaseConnectionSnafu)?;
61-
6247
let hive_opa_config = match hive.get_opa_config() {
6348
Some(opa_config) => Some(
6449
HiveOpaConfig::from_opa_config(client, hive, opa_config)
@@ -70,7 +55,6 @@ pub async fn dereference(
7055

7156
Ok(DereferencedObjects {
7257
s3_connection_spec,
73-
metadata_database_connection_details,
7458
hive_opa_config,
7559
})
7660
}

rust/operator-binary/src/controller/validate.rs

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ use product_config::{ProductConfigManager, types::PropertyNameKind};
77
use snafu::{OptionExt, ResultExt, Snafu};
88
use stackable_operator::{
99
commons::product_image_selection::{self, ResolvedProductImage},
10+
database_connections::drivers::jdbc::JdbcDatabaseConnectionDetails,
1011
product_config_utils::{transform_all_roles_to_config, validate_all_roles_and_groups_config},
1112
role_utils::GenericRoleConfig,
1213
};
@@ -38,6 +39,11 @@ pub enum Error {
3839

3940
#[snafu(display("failed to resolve and merge config for role and role group"))]
4041
FailedToResolveConfig { source: crate::crd::Error },
42+
43+
#[snafu(display("invalid metadata database connection"))]
44+
InvalidMetadataDatabaseConnection {
45+
source: stackable_operator::database_connections::Error,
46+
},
4147
}
4248

4349
/// Per-role configuration extracted during validation.
@@ -56,11 +62,11 @@ pub struct ValidatedRoleGroupConfig {
5662

5763
/// The validated cluster: proves that product-config validation and config merging
5864
/// succeeded for every role and role group before any resources are created.
59-
#[derive(Clone, Debug)]
6065
pub struct ValidatedHiveCluster {
6166
pub image: ResolvedProductImage,
6267
pub role_groups: BTreeMap<String, ValidatedRoleGroupConfig>,
6368
pub role_config: Option<ValidatedRoleConfig>,
69+
pub metadata_database_connection_details: JdbcDatabaseConnectionDetails,
6470
}
6571

6672
pub fn validate_cluster(
@@ -142,9 +148,17 @@ pub fn validate_cluster(
142148
);
143149
}
144150

151+
let metadata_database_connection_details = hive
152+
.spec
153+
.cluster_config
154+
.metadata_database
155+
.jdbc_connection_details("METADATA")
156+
.context(InvalidMetadataDatabaseConnectionSnafu)?;
157+
145158
Ok(ValidatedHiveCluster {
146159
image: resolved_product_image,
147160
role_groups: group_configs,
148161
role_config,
162+
metadata_database_connection_details,
149163
})
150164
}

0 commit comments

Comments
 (0)