Skip to content

Commit c26f157

Browse files
committed
dispatcher improvements, timer skeleton
1 parent be6b165 commit c26f157

File tree

8 files changed

+51
-72
lines changed

8 files changed

+51
-72
lines changed

operator-framework/src/main/java/io/javaoperatorsdk/operator/api/DefaultContext.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,13 @@
99
public class DefaultContext<T extends CustomResource> implements Context<T> {
1010

1111
private final CustomResource customResource;
12-
private final RetryInfo retryInfo;
1312
private final List<Event> events;
1413

15-
public DefaultContext(CustomResource customResource, RetryInfo retryInfo, List<Event> events) {
14+
public DefaultContext(CustomResource customResource, List<Event> events) {
1615
this.customResource = customResource;
17-
this.retryInfo = retryInfo;
1816
this.events = events;
1917
}
2018

21-
public RetryInfo retryInfo() {
22-
return retryInfo;
23-
}
24-
2519
@Override
2620
public EventSourceManager getEventSourceManager() {
2721
return null;

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/EventDispatcher.java

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import io.fabric8.kubernetes.client.dsl.MixedOperation;
66
import io.fabric8.kubernetes.client.dsl.Resource;
77
import io.javaoperatorsdk.operator.api.*;
8+
import io.javaoperatorsdk.operator.processing.event.Event;
9+
import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEvent;
810
import org.slf4j.Logger;
911
import org.slf4j.LoggerFactory;
1012

@@ -55,9 +57,7 @@ private PostExecutionControl handDispatch(ExecutionScope executionScope) {
5557
log.debug("Skipping event dispatching since its marked for deletion but has no default finalizer: {}", executionScope);
5658
return PostExecutionControl.defaultDispatch();
5759
}
58-
// todo
59-
// new RetryInfo(event.getRetryCount(), event.getRetryExecution().isLastExecution())
60-
Context context = new DefaultContext(executionScope.getCustomResource(), null, executionScope.getEvents());
60+
Context context = new DefaultContext(executionScope.getCustomResource(), executionScope.getEvents());
6161
if (markedForDeletion(resource)) {
6262
return handleDelete(resource, context);
6363
} else {
@@ -75,22 +75,31 @@ private PostExecutionControl handleCreateOrUpdate(ExecutionScope executionScope,
7575
updateCustomResourceWithFinalizer(resource);
7676
return PostExecutionControl.onlyFinalizerAdded();
7777
} else {
78-
// todo generation awareness on rescheduled event
79-
// todo test regardless generation
80-
81-
UpdateControl<? extends CustomResource> updateControl = controller.createOrUpdateResource(resource, context);
82-
if (updateControl.isUpdateStatusSubResource()) {
83-
customResourceFacade.updateStatus(updateControl.getCustomResource());
84-
} else if (updateControl.isUpdateCustomResource()) {
85-
updateCustomResource(updateControl.getCustomResource());
78+
if (!skipBecauseOfGenerations(executionScope)) {
79+
UpdateControl<? extends CustomResource> updateControl = controller.createOrUpdateResource(resource, context);
80+
if (updateControl.isUpdateStatusSubResource()) {
81+
customResourceFacade.updateStatus(updateControl.getCustomResource());
82+
} else if (updateControl.isUpdateCustomResource()) {
83+
updateCustomResource(updateControl.getCustomResource());
84+
}
85+
markLastGenerationProcessed(resource);
8686
}
87-
// markLastGenerationProcessed(resource);
8887
return PostExecutionControl.defaultDispatch();
8988
}
9089
}
9190

91+
private boolean skipBecauseOfGenerations(ExecutionScope executionScope) {
92+
if (executionScope.getEvents().size() == 1) {
93+
Event<?> event = executionScope.getEvents().get(0);
94+
if (event instanceof CustomResourceEvent) {
95+
Long actualGeneration = executionScope.getCustomResource().getMetadata().getGeneration();
96+
return actualGeneration <= lastGenerationProcessedSuccessfully.get(executionScope.getCustomResourceUid());
97+
}
98+
}
99+
return false;
100+
}
101+
92102
private PostExecutionControl handleDelete(CustomResource resource, Context context) {
93-
// todo unit test new cases
94103
DeleteControl deleteControl = controller.deleteResource(resource, context);
95104
boolean hasDefaultFinalizer = ControllerUtils.hasDefaultFinalizer(resource, resourceDefaultFinalizer);
96105
if (deleteControl.getRemoveFinalizer() && hasDefaultFinalizer) {

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

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44
import io.javaoperatorsdk.operator.processing.DefaultEventHandler;
55
import io.javaoperatorsdk.operator.processing.ProcessingUtils;
66
import io.javaoperatorsdk.operator.processing.event.internal.CustomResourceEventSource;
7-
import io.javaoperatorsdk.operator.processing.event.internal.DelayedEventSource;
87
import org.slf4j.Logger;
98
import org.slf4j.LoggerFactory;
109

@@ -20,7 +19,6 @@ public class DefaultEventSourceManager implements EventSourceManager {
2019
private Map<String, Map<String, EventSource>> eventSources = new ConcurrentHashMap<>();
2120
private CustomResourceEventSource customResourceEventSource;
2221
private DefaultEventHandler defaultEventHandler;
23-
private DelayedEventSource delayedEventSource = new DelayedEventSource();
2422

2523
public DefaultEventSourceManager(DefaultEventHandler defaultEventHandler) {
2624
this.defaultEventHandler = defaultEventHandler;
@@ -103,7 +101,4 @@ public void cleanup(String customResourceUid) {
103101
eventSources.remove(customResourceUid);
104102
}
105103

106-
public DelayedEventSource getDelayedReprocessEventSource() {
107-
return delayedEventSource;
108-
}
109104
}

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/DelayedEventSource.java

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

operator-framework/src/main/java/io/javaoperatorsdk/operator/processing/event/internal/DelayedReprocessEvent.java

Lines changed: 0 additions & 13 deletions
This file was deleted.
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
package io.javaoperatorsdk.operator.processing.event.internal;
2+
3+
import io.javaoperatorsdk.operator.processing.event.AbstractEvent;
4+
5+
public class TimerEvent extends AbstractEvent<TimerEventSource> {
6+
7+
public TimerEvent(String relatedCustomResourceUid, TimerEventSource eventSource) {
8+
super(relatedCustomResourceUid, eventSource);
9+
}
10+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.javaoperatorsdk.operator.processing.event.internal;
2+
3+
import io.fabric8.kubernetes.client.CustomResource;
4+
import io.javaoperatorsdk.operator.processing.event.AbstractEventSource;
5+
6+
import java.util.Timer;
7+
8+
public class TimerEventSource extends AbstractEventSource {
9+
10+
private final Timer timer = new Timer();
11+
12+
13+
public void schedule(CustomResource customResource ){
14+
15+
};
16+
17+
18+
}

spring-boot-starter/src/test/java/io/javaoperatorsdk/operator/springboot/starter/TestController.java

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,6 @@
33
import io.fabric8.kubernetes.client.CustomResource;
44
import io.javaoperatorsdk.operator.api.*;
55
import io.javaoperatorsdk.operator.springboot.starter.model.TestResource;
6-
import io.fabric8.kubernetes.client.CustomResource;
7-
import io.javaoperatorsdk.operator.api.Context;
8-
import io.javaoperatorsdk.operator.api.Controller;
9-
import io.javaoperatorsdk.operator.api.ResourceController;
10-
import io.javaoperatorsdk.operator.api.UpdateControl;
11-
import io.javaoperatorsdk.operator.springboot.starter.model.TestResource;
126
import org.springframework.stereotype.Component;
137

148
@Component

0 commit comments

Comments
 (0)