Skip to content

Commit 6ab1979

Browse files
committed
feat: remove automatic observed generation handling
Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent 6d7b71c commit 6ab1979

File tree

17 files changed

+23
-246
lines changed

17 files changed

+23
-246
lines changed
Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package {{groupId}};
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class {{artifactClassId}}Status extends ObservedGenerationAwareStatus {
3+
public class {{artifactClassId}}Status {
64

75
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
package io.javaoperatorsdk.operator.processing.event.source.cache.sample.namespacescope;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class BoundedCacheTestStatus extends ObservedGenerationAwareStatus {
3+
public class BoundedCacheTestStatus {
64
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ObservedGenerationAware.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/ObservedGenerationAwareStatus.java

Lines changed: 0 additions & 19 deletions
This file was deleted.

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcher.java

Lines changed: 6 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,12 @@
1010
import io.fabric8.kubernetes.api.model.KubernetesResourceList;
1111
import io.fabric8.kubernetes.api.model.Namespaced;
1212
import io.fabric8.kubernetes.api.model.ObjectMeta;
13-
import io.fabric8.kubernetes.client.CustomResource;
1413
import io.fabric8.kubernetes.client.KubernetesClientException;
1514
import io.fabric8.kubernetes.client.dsl.MixedOperation;
1615
import io.fabric8.kubernetes.client.dsl.Resource;
1716
import io.fabric8.kubernetes.client.dsl.base.PatchContext;
1817
import io.fabric8.kubernetes.client.dsl.base.PatchType;
1918
import io.javaoperatorsdk.operator.OperatorException;
20-
import io.javaoperatorsdk.operator.api.ObservedGenerationAware;
2119
import io.javaoperatorsdk.operator.api.config.Cloner;
2220
import io.javaoperatorsdk.operator.api.config.ControllerConfiguration;
2321
import io.javaoperatorsdk.operator.api.reconciler.BaseControl;
@@ -170,13 +168,11 @@ private PostExecutionControl<P> reconcileExecution(ExecutionScope<P> executionSc
170168
}
171169
}
172170

173-
// check if status also needs to be updated
174-
final var updateObservedGeneration = updateControl.isNoUpdate()
175-
? shouldUpdateObservedGenerationAutomatically(resourceForExecution)
176-
: shouldUpdateObservedGenerationAutomatically(updatedCustomResource);
171+
172+
177173
// if using SSA the observed generation is updated only if user instructs patching the status
178-
if (updateControl.isPatchStatus() || (updateObservedGeneration && !useSSA)) {
179-
updatedCustomResource = patchStatusGenerationAware(toUpdate, originalResource);
174+
if (updateControl.isPatchStatus()) {
175+
customResourceFacade.patchStatus(toUpdate, originalResource);
180176
}
181177
return createPostExecutionControl(updatedCustomResource, updateControl);
182178
}
@@ -206,9 +202,8 @@ public boolean isLastAttempt() {
206202

207203
P updatedResource = null;
208204
if (errorStatusUpdateControl.getResource().isPresent()) {
209-
updatedResource =
210-
patchStatusGenerationAware(errorStatusUpdateControl.getResource().orElseThrow(),
211-
originalResource);
205+
updatedResource = customResourceFacade
206+
.patchStatus(errorStatusUpdateControl.getResource().orElseThrow(), originalResource);
212207
}
213208
if (errorStatusUpdateControl.isNoRetry()) {
214209
PostExecutionControl<P> postExecutionControl;
@@ -234,38 +229,9 @@ private boolean isErrorStatusHandlerPresent() {
234229
}
235230

236231
private P patchStatusGenerationAware(P resource, P originalResource) {
237-
updateStatusObservedGenerationIfRequired(resource);
238232
return customResourceFacade.patchStatus(resource, originalResource);
239233
}
240234

241-
@SuppressWarnings("rawtypes")
242-
private boolean shouldUpdateObservedGenerationAutomatically(P resource) {
243-
if (configuration().isGenerationAware() && resource instanceof CustomResource<?, ?>) {
244-
var customResource = (CustomResource) resource;
245-
var status = customResource.getStatus();
246-
// Note that if status is null we won't update the observed generation.
247-
if (status instanceof ObservedGenerationAware) {
248-
var observedGen = ((ObservedGenerationAware) status).getObservedGeneration();
249-
var currentGen = resource.getMetadata().getGeneration();
250-
return !currentGen.equals(observedGen);
251-
}
252-
}
253-
return false;
254-
}
255-
256-
@SuppressWarnings("rawtypes")
257-
private void updateStatusObservedGenerationIfRequired(P resource) {
258-
if (configuration().isGenerationAware() && resource instanceof CustomResource<?, ?>) {
259-
var customResource = (CustomResource) resource;
260-
var status = customResource.getStatus();
261-
// Note that if status is null we won't update the observed generation.
262-
if (status instanceof ObservedGenerationAware) {
263-
((ObservedGenerationAware) status)
264-
.setObservedGeneration(resource.getMetadata().getGeneration());
265-
}
266-
}
267-
}
268-
269235
private PostExecutionControl<P> createPostExecutionControl(P updatedCustomResource,
270236
UpdateControl<P> updateControl) {
271237
PostExecutionControl<P> postExecutionControl;

operator-framework-core/src/test/java/io/javaoperatorsdk/operator/processing/event/ReconciliationDispatcherTest.java

Lines changed: 0 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -435,29 +435,6 @@ void reScheduleOnDeleteWithoutFinalizerRemoval() {
435435
.isEqualTo(1000L);
436436
}
437437

438-
@Test
439-
void setObservedGenerationForStatusIfNeeded() throws Exception {
440-
var observedGenResource = createObservedGenCustomResource();
441-
442-
Reconciler<ObservedGenCustomResource> reconciler = mock(Reconciler.class);
443-
ControllerConfiguration<ObservedGenCustomResource> config =
444-
MockControllerConfiguration.forResource(ObservedGenCustomResource.class);
445-
CustomResourceFacade<ObservedGenCustomResource> facade = mock(CustomResourceFacade.class);
446-
var dispatcher = init(observedGenResource, reconciler, config, facade, true);
447-
448-
when(config.isGenerationAware()).thenReturn(true);
449-
450-
when(reconciler.reconcile(any(), any()))
451-
.thenReturn(UpdateControl.patchStatus(observedGenResource));
452-
when(facade.patchStatus(eq(observedGenResource), any())).thenReturn(observedGenResource);
453-
454-
PostExecutionControl<ObservedGenCustomResource> control = dispatcher.handleExecution(
455-
executionScopeWithCREvent(observedGenResource));
456-
assertThat(control.getUpdatedCustomResource().orElseGet(() -> fail("Missing optional"))
457-
.getStatus().getObservedGeneration())
458-
.isEqualTo(1L);
459-
}
460-
461438
@Test
462439
void doesNotUpdatesObservedGenerationIfStatusIsNotPatchedWhenUsingSSA() throws Exception {
463440
var observedGenResource = createObservedGenCustomResource();
@@ -476,28 +453,6 @@ void doesNotUpdatesObservedGenerationIfStatusIsNotPatchedWhenUsingSSA() throws E
476453
assertThat(control.getUpdatedCustomResource()).isEmpty();
477454
}
478455

479-
@Test
480-
void patchObservedGenerationOnCustomResourcePatchIfNoSSA() throws Exception {
481-
var observedGenResource = createObservedGenCustomResource();
482-
483-
Reconciler<ObservedGenCustomResource> reconciler = mock(Reconciler.class);
484-
final var config = MockControllerConfiguration.forResource(ObservedGenCustomResource.class);
485-
CustomResourceFacade<ObservedGenCustomResource> facade = mock(CustomResourceFacade.class);
486-
when(config.isGenerationAware()).thenReturn(true);
487-
when(reconciler.reconcile(any(), any()))
488-
.thenReturn(UpdateControl.patchResource(observedGenResource));
489-
when(facade.patchResource(any(), any())).thenReturn(observedGenResource);
490-
when(facade.patchStatus(eq(observedGenResource), any())).thenReturn(observedGenResource);
491-
initConfigService(false);
492-
var dispatcher = init(observedGenResource, reconciler, config, facade, true);
493-
494-
PostExecutionControl<ObservedGenCustomResource> control = dispatcher.handleExecution(
495-
executionScopeWithCREvent(observedGenResource));
496-
assertThat(control.getUpdatedCustomResource().orElseGet(() -> fail("Missing optional"))
497-
.getStatus().getObservedGeneration())
498-
.isEqualTo(1L);
499-
}
500-
501456
@Test
502457
void doesNotPatchObservedGenerationOnCustomResourcePatch() throws Exception {
503458
var observedGenResource = createObservedGenCustomResource();
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.javaoperatorsdk.operator.sample.observedgeneration;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class ObservedGenStatus extends ObservedGenerationAwareStatus {
3+
public class ObservedGenStatus {
64

75
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/ObservedGenerationHandlingIT.java

Lines changed: 0 additions & 37 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.javaoperatorsdk.operator.sample.createupdateeventfilter;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class CreateUpdateEventFilterTestCustomResourceStatus extends ObservedGenerationAwareStatus {
3+
public class CreateUpdateEventFilterTestCustomResourceStatus {
64

75
}
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,14 @@
11
package io.javaoperatorsdk.operator.sample.gracefulstop;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
3+
public class GracefulStopTestCustomResourceStatus {
44

5-
public class GracefulStopTestCustomResourceStatus extends ObservedGenerationAwareStatus {
5+
private long observedGeneration;
66

7+
public long getObservedGeneration() {
8+
return observedGeneration;
9+
}
10+
11+
public void setObservedGeneration(long observedGeneration) {
12+
this.observedGeneration = observedGeneration;
13+
}
714
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/gracefulstop/GracefulStopTestReconciler.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ public UpdateControl<GracefulStopTestCustomResource> reconcile(
2222

2323
numberOfExecutions.addAndGet(1);
2424
resource.setStatus(new GracefulStopTestCustomResourceStatus());
25+
resource.getStatus().setObservedGeneration(resource.getMetadata().getGeneration());
2526
Thread.sleep(RECONCILER_SLEEP);
2627

2728
return UpdateControl.patchStatus(resource);

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/observedgeneration/ObservedGenerationTestCustomResource.java

Lines changed: 0 additions & 18 deletions
This file was deleted.

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/observedgeneration/ObservedGenerationTestCustomResourceStatus.java

Lines changed: 0 additions & 7 deletions
This file was deleted.

operator-framework/src/test/java/io/javaoperatorsdk/operator/sample/observedgeneration/ObservedGenerationTestReconciler.java

Lines changed: 0 additions & 28 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,5 @@
11
package io.javaoperatorsdk.operator.sample.ratelimit;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class RateLimitCustomResourceStatus extends ObservedGenerationAwareStatus {
3+
public class RateLimitCustomResourceStatus {
64

75
}

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io.javaoperatorsdk.operator.sample;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class SchemaStatus extends ObservedGenerationAwareStatus {
3+
public class SchemaStatus {
64

75
private String url;
86

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

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
package io.javaoperatorsdk.operator.sample.customresource;
22

3-
import io.javaoperatorsdk.operator.api.ObservedGenerationAwareStatus;
4-
5-
public class WebPageStatus extends ObservedGenerationAwareStatus {
3+
public class WebPageStatus {
64

75
private String htmlConfigMap;
86

0 commit comments

Comments
 (0)