Skip to content

Commit 8595208

Browse files
committed
fix pg version types
1 parent fcf9d2f commit 8595208

2 files changed

Lines changed: 16 additions & 21 deletions

File tree

src/controllers/overlay.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,13 +33,13 @@ pub async fn reconcile_overlay(
3333
namespace: &str,
3434
replica: &PostgresPhysicalReplica,
3535
snapshot_size: &Quantity,
36-
) -> Result<(bool, Quantity, String)> {
36+
) -> Result<(bool, Quantity, i32)> {
3737
let replica_name = replica.name_any();
3838
let overlay_config = match &replica.spec.overlay_database {
3939
Some(c) => c,
4040
None => {
4141
debug!(replica = %replica_name, "no overlay database configured, skipping");
42-
return Ok((false, Quantity(String::new()), String::new()));
42+
return Ok((false, Quantity(String::new()), 0));
4343
}
4444
};
4545
debug!(replica = %replica_name, "reconciling overlay database");
@@ -67,7 +67,7 @@ pub async fn reconcile_overlay(
6767
fdw::ensure_fdw_credentials(client, namespace, &replica_name, replica).await?;
6868

6969
let cluster_ready =
70-
cnpg::ensure_cnpg_cluster(client, namespace, replica, storage_size, &pg_version).await?;
70+
cnpg::ensure_cnpg_cluster(client, namespace, replica, storage_size, pg_version).await?;
7171

7272
if cluster_ready
7373
&& let Err(e) = cnpg::ensure_overlay_service_annotations(client, namespace, replica).await

src/controllers/overlay/cnpg.rs

Lines changed: 13 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -35,14 +35,14 @@ const MIN_OVERLAY_PG_VERSION: i32 = 14;
3535
pub async fn resolve_postgres_version(
3636
client: &Client,
3737
replica: &PostgresPhysicalReplica,
38-
) -> Result<String> {
38+
) -> Result<i32> {
3939
let overlay_config = match &replica.spec.overlay_database {
4040
Some(c) => c,
41-
None => return Ok(DEFAULT_PG_VERSION.to_string()),
41+
None => return Ok(DEFAULT_PG_VERSION),
4242
};
4343

44-
let version = if let Some(ref v) = overlay_config.postgres_version {
45-
v.to_string()
44+
let version = if let Some(v) = overlay_config.postgres_version {
45+
v as i32
4646
} else {
4747
let catalog_ref = overlay_config.image_catalog.as_ref();
4848
let catalog_name = catalog_ref.map(|c| c.name.as_str());
@@ -62,12 +62,10 @@ pub async fn resolve_postgres_version(
6262
None
6363
};
6464

65-
from_catalog
66-
.map(|v| v.to_string())
67-
.unwrap_or_else(|| DEFAULT_PG_VERSION.to_string())
65+
from_catalog.unwrap_or(DEFAULT_PG_VERSION)
6866
};
6967

70-
validate_overlay_pg_version(&version)?;
68+
validate_overlay_pg_version(version)?;
7169

7270
Ok(version)
7371
}
@@ -78,12 +76,11 @@ pub async fn resolve_postgres_version(
7876
///
7977
/// The overlay relies on `pg_read_all_data` and `pg_write_all_data` which
8078
/// require PostgreSQL >= 14.
81-
pub fn validate_overlay_pg_version(version: &str) -> Result<()> {
82-
let major: i32 = version.parse().unwrap_or(0);
83-
if major < MIN_OVERLAY_PG_VERSION {
79+
pub fn validate_overlay_pg_version(version: i32) -> Result<()> {
80+
if version < MIN_OVERLAY_PG_VERSION {
8481
return Err(Error::InvalidOverlayConfig(format!(
8582
"overlay database requires PostgreSQL >= {MIN_OVERLAY_PG_VERSION} \
86-
(pg_read_all_data / pg_write_all_data), got \"{version}\""
83+
(pg_read_all_data / pg_write_all_data), got {version}"
8784
)));
8885
}
8986
Ok(())
@@ -117,7 +114,7 @@ pub async fn ensure_cnpg_cluster(
117114
namespace: &str,
118115
replica: &PostgresPhysicalReplica,
119116
storage_size: &Quantity,
120-
pg_version: &str,
117+
pg_version: i32,
121118
) -> Result<bool> {
122119
let replica_name = replica.name_any();
123120
let cluster_name = super::overlay_cluster_name(&replica_name);
@@ -130,15 +127,13 @@ pub async fn ensure_cnpg_cluster(
130127
let api_resource = cnpg::api::cluster_resource();
131128
let api: Api<DynamicObject> = Api::namespaced_with(client.clone(), namespace, &api_resource);
132129

133-
let pg_major: i32 = pg_version.parse().unwrap_or(17);
134-
135130
let image_catalog_ref = overlay_config
136131
.image_catalog
137132
.as_ref()
138133
.map(|cat| CnpgImageCatalogRef {
139134
name: cat.name.clone(),
140135
kind: cat.kind.clone().unwrap_or("ClusterImageCatalog".into()),
141-
major: pg_major,
136+
major: pg_version,
142137
});
143138

144139
let spec = CnpgClusterSpec {
@@ -302,12 +297,12 @@ mod tests {
302297

303298
#[test]
304299
fn validate_pg_version_17_ok() {
305-
assert!(validate_overlay_pg_version("17").is_ok());
300+
assert!(validate_overlay_pg_version(17).is_ok());
306301
}
307302

308303
#[test]
309304
fn validate_pg_version_13_rejected() {
310-
let err = validate_overlay_pg_version("13").unwrap_err();
305+
let err = validate_overlay_pg_version(13).unwrap_err();
311306
let msg = err.to_string();
312307
assert!(msg.contains(">= 14"), "error should mention >= 14: {msg}");
313308
assert!(

0 commit comments

Comments
 (0)