Skip to content

Commit c0b8849

Browse files
committed
fix: Security upgrade SGDbOps can not be created if Postgres version is not final
1 parent 625402d commit c0b8849

1 file changed

Lines changed: 23 additions & 10 deletions

File tree

stackgres-k8s/src/operator/src/main/java/io/stackgres/operator/validation/dbops/DbOpsSecurityUpgradeValidator.java

Lines changed: 23 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,16 +36,29 @@ public void validate(StackGresDbOpsReview review) throws ValidationFailed {
3636
switch (review.getRequest().getOperation()) {
3737
case CREATE:
3838
StackGresDbOps dbOps = review.getRequest().getObject();
39-
if (dbOps.getSpec().isOpSecurityUpgrade()) {
40-
Optional<StackGresCluster> cluster = clusterFinder.findByNameAndNamespace(
41-
dbOps.getSpec().getSgCluster(), dbOps.getMetadata().getNamespace());
42-
if (cluster.map(c -> getPostgresFlavorComponent(c).get(c).streamOrderedVersions()
43-
.noneMatch(c.getSpec().getPostgres().getVersion()::equals))
44-
.orElse(false)) {
45-
fail("Major version upgrade must be performed on SGCluster before performing"
46-
+ " the upgrade since Postgres version " + cluster.get().getSpec().getPostgres()
47-
.getVersion() + " will not be supported after the upgrade is completed");
48-
}
39+
if (!dbOps.getSpec().isOpSecurityUpgrade()) {
40+
return;
41+
}
42+
Optional<StackGresCluster> foundCluster = clusterFinder.findByNameAndNamespace(
43+
dbOps.getSpec().getSgCluster(), dbOps.getMetadata().getNamespace());
44+
if (foundCluster.isEmpty()) {
45+
return;
46+
}
47+
StackGresCluster cluster = foundCluster.get();
48+
Optional<String> foundVersion = getPostgresFlavorComponent(cluster)
49+
.get(cluster)
50+
.findVersion(cluster.getSpec().getPostgres().getVersion());
51+
if (foundVersion.isEmpty()) {
52+
return;
53+
}
54+
String version = foundVersion.get();
55+
if (getPostgresFlavorComponent(cluster)
56+
.get(cluster)
57+
.streamOrderedVersions()
58+
.noneMatch(version::equals)) {
59+
fail("Major version upgrade must be performed on SGCluster before performing"
60+
+ " the upgrade since Postgres version " + version
61+
+ " will not be supported after the upgrade is completed");
4962
}
5063
break;
5164
default:

0 commit comments

Comments
 (0)