Skip to content

Commit 625402d

Browse files
committed
fix: After upgrading the operator to 1.18.3 from any previous 1.18 version the SGCluster can not be updated
1 parent ff343a6 commit 625402d

1 file changed

Lines changed: 59 additions & 0 deletions

File tree

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
/*
2+
* Copyright (C) 2019 OnGres, Inc.
3+
* SPDX-License-Identifier: AGPL-3.0-or-later
4+
*/
5+
6+
package io.stackgres.operator.mutation.cluster;
7+
8+
import java.util.Arrays;
9+
import java.util.Optional;
10+
11+
import io.stackgres.common.StackGresVersion;
12+
import io.stackgres.common.crd.sgcluster.StackGresCluster;
13+
import io.stackgres.common.crd.sgcluster.StackGresClusterPods;
14+
import io.stackgres.common.crd.sgcluster.StackGresClusterSpec;
15+
import io.stackgres.common.crd.sgcluster.StackGresClusterUpdateStrategy;
16+
import io.stackgres.common.crd.sgcluster.StackGresClusterUpdateStrategyType;
17+
import io.stackgres.operator.common.StackGresClusterReview;
18+
import io.stackgres.operatorframework.admissionwebhook.Operation;
19+
import jakarta.enterprise.context.ApplicationScoped;
20+
21+
@ApplicationScoped
22+
public class UpdateStrategyMutator implements ClusterMutator {
23+
24+
@Override
25+
public StackGresCluster mutate(StackGresClusterReview review, StackGresCluster resource) {
26+
if (review.getRequest().getOperation() != Operation.CREATE
27+
&& review.getRequest().getOperation() != Operation.UPDATE) {
28+
return resource;
29+
}
30+
//TODO: remove this mutator when 1.18 reach EOL
31+
if (StackGresVersion.V_1_18.getVersion() != null) {
32+
if (Arrays.asList(StackGresClusterUpdateStrategyType.values())
33+
.stream()
34+
.map(Object::toString)
35+
.noneMatch(
36+
Optional.of(resource)
37+
.map(StackGresCluster::getSpec)
38+
.map(StackGresClusterSpec::getPods)
39+
.map(StackGresClusterPods::getUpdateStrategy)
40+
.map(StackGresClusterUpdateStrategy::getType)
41+
.orElse("")::equals)) {
42+
if (resource.getSpec() == null) {
43+
resource.setSpec(new StackGresClusterSpec());
44+
}
45+
if (resource.getSpec().getPods() == null) {
46+
resource.getSpec().setPods(new StackGresClusterPods());
47+
}
48+
if (resource.getSpec().getPods().getUpdateStrategy() == null) {
49+
resource.getSpec().getPods().setUpdateStrategy(new StackGresClusterUpdateStrategy());
50+
}
51+
resource.getSpec().getPods().getUpdateStrategy().setType(
52+
StackGresClusterUpdateStrategyType.ONLY_DB_OPS.toString());
53+
}
54+
}
55+
56+
return resource;
57+
}
58+
59+
}

0 commit comments

Comments
 (0)