Skip to content

Commit b7312bf

Browse files
committed
feat: desired method aware of actual resource
1 parent e617061 commit b7312bf

File tree

27 files changed

+34
-33
lines changed

27 files changed

+34
-33
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResource.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ public ReconcileResult<R> reconcile(P primary, Context<P> context) {
3333
if (creatable || updatable) {
3434
if (maybeActual.isEmpty()) {
3535
if (creatable) {
36-
var desired = desired(primary, context);
36+
var desired = desired(primary, null, context);
3737
throwIfNull(desired, primary, "Desired");
3838
logForOperation("Creating", primary, desired);
3939
var createdResource = handleCreate(desired, primary, context);
@@ -44,7 +44,7 @@ public ReconcileResult<R> reconcile(P primary, Context<P> context) {
4444
if (updatable) {
4545
final var match = updater.match(actual, primary, context);
4646
if (!match.matched()) {
47-
final var desired = match.computedDesired().orElse(desired(primary, context));
47+
final var desired = match.computedDesired().orElse(desired(primary, actual, context));
4848
throwIfNull(desired, primary, "Desired");
4949
logForOperation("Updating", primary, desired);
5050
var updatedResource = handleUpdate(actual, desired, primary, context);
@@ -114,7 +114,7 @@ protected R handleUpdate(R actual, R desired, P primary, Context<P> context) {
114114
return updated;
115115
}
116116

117-
protected R desired(P primary, Context<P> context) {
117+
protected R desired(P primary, R actual, Context<P> context) {
118118
throw new IllegalStateException(
119119
"desired method must be implemented if this DependentResource can be created and/or updated");
120120
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/DesiredEqualsMatcher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ public DesiredEqualsMatcher(AbstractDependentResource<R, P> abstractDependentRes
1313

1414
@Override
1515
public Result<R> match(R actualResource, P primary, Context<P> context) {
16-
var desired = abstractDependentResource.desired(primary, context);
16+
var desired = abstractDependentResource.desired(primary, actualResource, context);
1717
return Result.computed(actualResource.equals(desired), desired);
1818
}
1919
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesResourceMatcher.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,13 +25,13 @@ static <R extends HasMetadata, P extends HasMetadata> Matcher<R, P> matcherFor(
2525
Class<R> resourceType, KubernetesDependentResource<R, P> dependentResource) {
2626
if (Secret.class.isAssignableFrom(resourceType)) {
2727
return (actual, primary, context) -> {
28-
final var desired = dependentResource.desired(primary, context);
28+
final var desired = dependentResource.desired(primary, actual, context);
2929
return Result.computed(
3030
ResourceComparators.compareSecretData((Secret) desired, (Secret) actual), desired);
3131
};
3232
} else if (ConfigMap.class.isAssignableFrom(resourceType)) {
3333
return (actual, primary, context) -> {
34-
final var desired = dependentResource.desired(primary, context);
34+
final var desired = dependentResource.desired(primary, actual, context);
3535
return Result.computed(
3636
ResourceComparators.compareConfigMapData((ConfigMap) desired, (ConfigMap) actual),
3737
desired);
@@ -68,7 +68,7 @@ public Result<R> match(R actualResource, P primary, Context<P> context) {
6868
public static <R extends HasMetadata, P extends HasMetadata> Result<R> match(
6969
KubernetesDependentResource<R, P> dependentResource, R actualResource, P primary,
7070
Context<P> context, boolean considerMetadata) {
71-
final var desired = dependentResource.desired(primary, context);
71+
final var desired = dependentResource.desired(primary, actualResource, context);
7272
if (considerMetadata) {
7373
final var desiredMetadata = desired.getMetadata();
7474
final var actualMetadata = actualResource.getMetadata();

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/KubernetesDependentResource.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -224,8 +224,8 @@ public KubernetesClient getKubernetesClient() {
224224
}
225225

226226
@Override
227-
protected R desired(P primary, Context<P> context) {
228-
return super.desired(primary, context);
227+
protected R desired(P primary, R actual, Context<P> context) {
228+
return super.desired(primary, actual, context);
229229
}
230230

231231
private void prepareEventFiltering(R desired, ResourceID resourceID) {

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/AbstractDependentResourceTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,8 @@ protected void onCreated(ResourceID primaryResourceId, ConfigMap created) {}
9191
protected void onUpdated(ResourceID primaryResourceId, ConfigMap updated, ConfigMap actual) {}
9292

9393
@Override
94-
protected ConfigMap desired(TestCustomResource primary, Context<TestCustomResource> context) {
94+
protected ConfigMap desired(TestCustomResource primary, ConfigMap actual,
95+
Context<TestCustomResource> context) {
9596
return desired;
9697
}
9798

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/external/AbstractSimpleDependentResourceTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public SampleExternalResource update(
137137

138138
@Override
139139
protected SampleExternalResource desired(TestCustomResource primary,
140-
Context<TestCustomResource> context) {
140+
SampleExternalResource actual, Context<TestCustomResource> context) {
141141
return SampleExternalResource.testResource1();
142142
}
143143

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/dependent/kubernetes/GenericKubernetesResourceMatcherTest.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public TestDependentResource(Deployment desired) {
9393
}
9494

9595
@Override
96-
protected Deployment desired(HasMetadata primary, Context context) {
96+
protected Deployment desired(HasMetadata primary, Deployment actual, Context context) {
9797
final var currentCase = Optional.ofNullable(primary)
9898
.map(p -> p.getMetadata().getLabels().get("case"))
9999
.orElse(null);

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/cleanermanageddependent/ConfigMapDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public ConfigMapDependentResource() {
2525

2626
@Override
2727
protected ConfigMap desired(CleanerForManagedDependentCustomResource primary,
28-
Context<CleanerForManagedDependentCustomResource> context) {
28+
ConfigMap actual, Context<CleanerForManagedDependentCustomResource> context) {
2929

3030
ConfigMap configMap = new ConfigMap();
3131
configMap.setMetadata(new ObjectMeta());

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentannotationsecondarymapper/DependentAnnotationSecondaryMapperReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public ConfigMapDependentResource() {
4444

4545
@Override
4646
protected ConfigMap desired(DependentAnnotationSecondaryMapperResource primary,
47-
Context<DependentAnnotationSecondaryMapperResource> context) {
47+
ConfigMap actual, Context<DependentAnnotationSecondaryMapperResource> context) {
4848
ConfigMap configMap = new ConfigMap();
4949
configMap.setMetadata(new ObjectMetaBuilder()
5050
.withName(primary.getMetadata().getName())

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentfilter/FilteredDependentConfigMap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public FilteredDependentConfigMap() {
2020

2121
@Override
2222
protected ConfigMap desired(DependentFilterTestCustomResource primary,
23-
Context<DependentFilterTestCustomResource> context) {
23+
ConfigMap actual, Context<DependentFilterTestCustomResource> context) {
2424
ConfigMap configMap = new ConfigMap();
2525
configMap.setMetadata(new ObjectMetaBuilder()
2626
.withName(primary.getMetadata().getName())

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentoperationeventfiltering/ConfigMapDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ public ConfigMapDependentResource() {
1818

1919
@Override
2020
protected ConfigMap desired(DependentOperationEventFilterCustomResource primary,
21-
Context<DependentOperationEventFilterCustomResource> context) {
21+
ConfigMap actual, Context<DependentOperationEventFilterCustomResource> context) {
2222

2323
ConfigMap configMap = new ConfigMap();
2424
configMap.setMetadata(new ObjectMeta());

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/dependentresourcecrossref/DependentResourceCrossRefReconciler.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ public SecretDependentResource() {
6060

6161
@Override
6262
protected Secret desired(DependentResourceCrossRefResource primary,
63-
Context<DependentResourceCrossRefResource> context) {
63+
Secret actual, Context<DependentResourceCrossRefResource> context) {
6464
Secret secret = new Secret();
6565
secret.setMetadata(new ObjectMetaBuilder()
6666
.withName(primary.getMetadata().getName())
@@ -80,7 +80,7 @@ public ConfigMapDependentResource() {
8080

8181
@Override
8282
protected ConfigMap desired(DependentResourceCrossRefResource primary,
83-
Context<DependentResourceCrossRefResource> context) {
83+
ConfigMap actual, Context<DependentResourceCrossRefResource> context) {
8484
var secret = context.getSecondaryResource(Secret.class);
8585
if (secret.isEmpty()) {
8686
throw new IllegalStateException("Secret is empty");

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/kubernetesdependentgarbagecollection/DependentGarbageCollectionTestReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public ConfigMapDependentResource() {
8989

9090
@Override
9191
protected ConfigMap desired(DependentGarbageCollectionTestCustomResource primary,
92-
Context<DependentGarbageCollectionTestCustomResource> context) {
92+
ConfigMap actual, Context<DependentGarbageCollectionTestCustomResource> context) {
9393
ConfigMap configMap = new ConfigMap();
9494
configMap.setMetadata(new ObjectMetaBuilder()
9595
.withName(primary.getMetadata().getName())

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/multipledependentresource/MultipleDependentResourceConfigMap.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public MultipleDependentResourceConfigMap(int value) {
2323

2424
@Override
2525
protected ConfigMap desired(MultipleDependentResourceCustomResource primary,
26-
Context<MultipleDependentResourceCustomResource> context) {
26+
ConfigMap actual, Context<MultipleDependentResourceCustomResource> context) {
2727
Map<String, String> data = new HashMap<>();
2828
data.put(DATA_KEY, String.valueOf(value));
2929

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource1.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public ReconcileResult<ConfigMap> reconcile(OrderedManagedDependentCustomResourc
2727

2828
@Override
2929
protected ConfigMap desired(OrderedManagedDependentCustomResource primary,
30-
Context<OrderedManagedDependentCustomResource> context) {
30+
ConfigMap actual, Context<OrderedManagedDependentCustomResource> context) {
3131

3232
ConfigMap configMap = new ConfigMap();
3333
configMap.setMetadata(new ObjectMeta());

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/orderedmanageddependent/ConfigMapDependentResource2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ public ReconcileResult<ConfigMap> reconcile(OrderedManagedDependentCustomResourc
2727

2828
@Override
2929
protected ConfigMap desired(OrderedManagedDependentCustomResource primary,
30-
Context<OrderedManagedDependentCustomResource> context) {
30+
ConfigMap actual, Context<OrderedManagedDependentCustomResource> context) {
3131

3232
ConfigMap configMap = new ConfigMap();
3333
configMap.setMetadata(new ObjectMeta());

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/standalonedependent/StandaloneDependentTestReconciler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ public DeploymentDependentResource() {
9595

9696
@Override
9797
protected Deployment desired(StandaloneDependentTestCustomResource primary,
98-
Context<StandaloneDependentTestCustomResource> context) {
98+
Deployment actual, Context<StandaloneDependentTestCustomResource> context) {
9999
Deployment deployment =
100100
ReconcilerUtils.loadYaml(Deployment.class, StandaloneDependentResourceIT.class,
101101
"nginx-deployment.yaml");

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/workflowallfeature/ConfigMapDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public ConfigMapDependentResource() {
3131

3232
@Override
3333
protected ConfigMap desired(WorkflowAllFeatureCustomResource primary,
34-
Context<WorkflowAllFeatureCustomResource> context) {
34+
ConfigMap actual, Context<WorkflowAllFeatureCustomResource> context) {
3535
ConfigMap configMap = new ConfigMap();
3636
configMap.setMetadata(new ObjectMetaBuilder()
3737
.withName(primary.getMetadata().getName())

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/workflowallfeature/DeploymentDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public DeploymentDependentResource() {
1515

1616
@Override
1717
protected Deployment desired(WorkflowAllFeatureCustomResource primary,
18-
Context<WorkflowAllFeatureCustomResource> context) {
18+
Deployment actual, Context<WorkflowAllFeatureCustomResource> context) {
1919
Deployment deployment =
2020
ReconcilerUtils.loadYaml(Deployment.class, WorkflowAllFeatureIT.class,
2121
"nginx-deployment.yaml");

sample-operators/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/dependent/SchemaDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void configureWith(ResourcePollerConfig config) {
4646
}
4747

4848
@Override
49-
public Schema desired(MySQLSchema primary, Context<MySQLSchema> context) {
49+
public Schema desired(MySQLSchema primary, Schema actual, Context<MySQLSchema> context) {
5050
return new Schema(primary.getMetadata().getName(), primary.getSpec().getEncoding());
5151
}
5252

sample-operators/mysql-schema/src/main/java/io/javaoperatorsdk/operator/sample/dependent/SecretDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ private static String encode(String value) {
3333
}
3434

3535
@Override
36-
protected Secret desired(MySQLSchema schema, Context<MySQLSchema> context) {
36+
protected Secret desired(MySQLSchema schema, Secret actual, Context<MySQLSchema> context) {
3737
final var password = RandomStringUtils
3838
.randomAlphanumeric(16); // NOSONAR: we don't need cryptographically-strong randomness here
3939
final var name = schema.getMetadata().getName();

sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ private static String tomcatImage(Tomcat tomcat) {
2121
}
2222

2323
@Override
24-
protected Deployment desired(Tomcat tomcat, Context<Tomcat> context) {
24+
protected Deployment desired(Tomcat tomcat, Deployment actual, Context<Tomcat> context) {
2525
Deployment deployment =
2626
ReconcilerUtils.loadYaml(Deployment.class, getClass(), "deployment.yaml");
2727
final ObjectMeta tomcatMetadata = tomcat.getMetadata();

sample-operators/tomcat-operator/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public ServiceDependentResource() {
1616
}
1717

1818
@Override
19-
protected Service desired(Tomcat tomcat, Context<Tomcat> context) {
19+
protected Service desired(Tomcat tomcat, Service actual, Context<Tomcat> context) {
2020
final ObjectMeta tomcatMetadata = tomcat.getMetadata();
2121
return new ServiceBuilder(ReconcilerUtils.loadYaml(Service.class, getClass(), "service.yaml"))
2222
.editMetadata()

sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ConfigMapDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public ConfigMapDependentResource() {
2929
}
3030

3131
@Override
32-
protected ConfigMap desired(WebPage webPage, Context<WebPage> context) {
32+
protected ConfigMap desired(WebPage webPage, ConfigMap actual, Context<WebPage> context) {
3333
Map<String, String> data = new HashMap<>();
3434
data.put("index.html", webPage.getSpec().getHtml());
3535
Map<String, String> labels = new HashMap<>();

sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/DeploymentDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public DeploymentDependentResource() {
2424
}
2525

2626
@Override
27-
protected Deployment desired(WebPage webPage, Context<WebPage> context) {
27+
protected Deployment desired(WebPage webPage, Deployment actual, Context<WebPage> context) {
2828
Map<String, String> labels = new HashMap<>();
2929
labels.put(SELECTOR, "true");
3030
var deploymentName = deploymentName(webPage);

sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/IngressDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public IngressDependentResource() {
1616
}
1717

1818
@Override
19-
protected Ingress desired(WebPage webPage, Context<WebPage> context) {
19+
protected Ingress desired(WebPage webPage, Ingress actual, Context<WebPage> context) {
2020
return makeDesiredIngress(webPage);
2121
}
2222

sample-operators/webpage/src/main/java/io/javaoperatorsdk/operator/sample/ServiceDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public ServiceDependentResource() {
2222
}
2323

2424
@Override
25-
protected Service desired(WebPage webPage, Context<WebPage> context) {
25+
protected Service desired(WebPage webPage, Service actual, Context<WebPage> context) {
2626
Map<String, String> serviceLabels = new HashMap<>();
2727
serviceLabels.put(SELECTOR, "true");
2828
Service service = loadYaml(Service.class, getClass(), "service.yaml");

0 commit comments

Comments
 (0)