Skip to content

Commit 5237798

Browse files
committed
wip
1 parent 3f1ce02 commit 5237798

File tree

11 files changed

+89
-45
lines changed

11 files changed

+89
-45
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,14 +11,17 @@ public interface Context<P extends HasMetadata> {
1111

1212
Optional<RetryInfo> getRetryInfo();
1313

14-
default <T> Optional<T> getSecondaryResource(Class<T> expectedType) {
15-
return getSecondaryResource(expectedType, null);
14+
default <R> Optional<R> getSecondaryResource(Class<R> expectedType) {
15+
return getSecondaryResource(expectedType, (String) null);
1616
}
1717

18-
<T> Set<T> getSecondaryResources(Class<T> expectedType);
18+
<R> Set<R> getSecondaryResources(Class<R> expectedType);
1919

2020
@Deprecated(forRemoval = true)
21-
<T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventSourceName);
21+
<R> Optional<R> getSecondaryResource(Class<R> expectedType, String eventSourceName);
22+
23+
<R> Optional<R> getSecondaryResource(Class<R> expectedType,
24+
ResourceDiscriminator<R, P> discriminator);
2225

2326
ControllerConfiguration<P> getControllerConfiguration();
2427

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,13 @@ public <T> Optional<T> getSecondaryResource(Class<T> expectedType, String eventS
4747
.getSecondaryResource(primaryResource);
4848
}
4949

50+
// todo implement
51+
@Override
52+
public <R> Optional<R> getSecondaryResource(Class<R> expectedType,
53+
ResourceDiscriminator<R, P> discriminator) {
54+
return Optional.empty();
55+
}
56+
5057
@Override
5158
public ControllerConfiguration<P> getControllerConfiguration() {
5259
return controllerConfiguration;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package io.javaoperatorsdk.operator.api.reconciler;
2+
3+
import java.util.Optional;
4+
5+
import io.fabric8.kubernetes.api.model.HasMetadata;
6+
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
7+
8+
// todo is discriminator a good name? it not just discriminates but also reads from cache
9+
public interface ResourceDiscriminator<R, P extends HasMetadata> {
10+
11+
Optional<R> distinguish(Class<R> resource, Context<P> context,
12+
EventSourceRetriever<P> eventSourceManager);
13+
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.javaoperatorsdk.operator.api.reconciler;
2+
3+
import java.util.Optional;
4+
import java.util.Set;
5+
6+
import io.fabric8.kubernetes.api.model.HasMetadata;
7+
import io.javaoperatorsdk.operator.processing.event.EventSourceRetriever;
8+
9+
public abstract class ResourceListDiscriminator<R, P extends HasMetadata>
10+
implements ResourceDiscriminator<R, P> {
11+
@Override
12+
public Optional<R> distinguish(Class<R> resource, Context<P> context,
13+
EventSourceRetriever<P> eventSourceManager) {
14+
var resources = context.getSecondaryResources(resource);
15+
return distinguish(resources);
16+
}
17+
18+
abstract Optional<R> distinguish(Set<R> resourceList);
19+
}

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/reconciler/dependent/DependentResource.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
import io.fabric8.kubernetes.api.model.HasMetadata;
44
import io.javaoperatorsdk.operator.api.reconciler.Context;
5-
import io.javaoperatorsdk.operator.processing.ResourceOwner;
65

76
/**
87
* An interface to implement and provide dependent resource support.

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

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

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

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@
2323
import io.javaoperatorsdk.operator.processing.event.source.controller.ResourceAction;
2424
import io.javaoperatorsdk.operator.processing.event.source.timer.TimerEventSource;
2525

26-
public class EventSourceManager<P extends HasMetadata> implements LifecycleAware {
26+
public class EventSourceManager<P extends HasMetadata>
27+
implements LifecycleAware, EventSourceRetriever<P> {
2728

2829
private static final Logger log = LoggerFactory.getLogger(EventSourceManager.class);
2930

@@ -171,17 +172,24 @@ public ControllerResourceEventSource<P> getControllerResourceEventSource() {
171172
return eventSources.controllerResourceEventSource();
172173
}
173174

174-
<S> ResourceEventSource<S, P> getResourceEventSourceFor(
175-
Class<S> dependentType) {
175+
@Override
176+
public <R> ResourceEventSource<R, P> getResourceEventSourceFor(
177+
Class<R> dependentType) {
176178
return getResourceEventSourceFor(dependentType, null);
177179
}
178180

179-
public <S> List<ResourceEventSource<S, P>> getEventSourcesFor(Class<S> dependentType) {
181+
public <R> List<ResourceEventSource<R, P>> getResourceEventSourcesFor(Class<R> dependentType) {
180182
return eventSources.getEventSources(dependentType);
181183
}
182184

183-
public <S> ResourceEventSource<S, P> getResourceEventSourceFor(
184-
Class<S> dependentType, String qualifier) {
185+
@Deprecated
186+
public <R> List<ResourceEventSource<R, P>> getEventSourcesFor(Class<R> dependentType) {
187+
return eventSources.getEventSources(dependentType);
188+
}
189+
190+
@Override
191+
public <R> ResourceEventSource<R, P> getResourceEventSourceFor(
192+
Class<R> dependentType, String qualifier) {
185193
Objects.requireNonNull(dependentType, "dependentType is Mandatory");
186194
return eventSources.get(dependentType, qualifier);
187195
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package io.javaoperatorsdk.operator.processing.event;
2+
3+
import java.util.List;
4+
5+
import io.fabric8.kubernetes.api.model.HasMetadata;
6+
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
7+
8+
public interface EventSourceRetriever<P extends HasMetadata> {
9+
10+
<R> ResourceEventSource<R, P> getResourceEventSourceFor(
11+
Class<R> dependentType);
12+
13+
<R> ResourceEventSource<R, P> getResourceEventSourceFor(
14+
Class<R> dependentType, String qualifier);
15+
16+
<R> List<ResourceEventSource<R, P>> getResourceEventSourcesFor(Class<R> dependentType);
17+
18+
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@
88

99
import io.fabric8.kubernetes.api.model.HasMetadata;
1010
import io.javaoperatorsdk.operator.processing.Controller;
11-
import io.javaoperatorsdk.operator.processing.ResourceOwner;
1211
import io.javaoperatorsdk.operator.processing.event.source.EventSource;
1312
import io.javaoperatorsdk.operator.processing.event.source.ResourceEventSource;
1413
import io.javaoperatorsdk.operator.processing.event.source.controller.ControllerResourceEventSource;
@@ -86,8 +85,8 @@ public void add(String name, EventSource eventSource) {
8685

8786
@SuppressWarnings("rawtypes")
8887
private Class<?> getResourceType(EventSource source) {
89-
return source instanceof ResourceOwner
90-
? ((ResourceOwner) source).resourceType()
88+
return source instanceof ResourceEventSource
89+
? ((ResourceEventSource) source).resourceType()
9190
: source.getClass();
9291
}
9392

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

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,19 @@
44
import java.util.Set;
55

66
import io.fabric8.kubernetes.api.model.HasMetadata;
7-
import io.javaoperatorsdk.operator.processing.ResourceOwner;
87
import io.javaoperatorsdk.operator.processing.event.source.filter.GenericFilter;
98
import io.javaoperatorsdk.operator.processing.event.source.filter.OnAddFilter;
109
import io.javaoperatorsdk.operator.processing.event.source.filter.OnDeleteFilter;
1110
import io.javaoperatorsdk.operator.processing.event.source.filter.OnUpdateFilter;
1211

13-
public interface ResourceEventSource<R, P extends HasMetadata> extends EventSource,
14-
ResourceOwner<R, P> {
12+
public interface ResourceEventSource<R, P extends HasMetadata> extends EventSource {
13+
14+
/**
15+
* Retrieves the resource type associated with this ResourceOwner
16+
*
17+
* @return the resource type associated with this ResourceOwner
18+
*/
19+
Class<R> resourceType();
1520

1621
default Optional<R> getSecondaryResource(P primary) {
1722
var resources = getSecondaryResources(primary);

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

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,4 @@ private void initDependentResources(KubernetesClient client) {
9393
});
9494
}
9595

96-
97-
9896
}

0 commit comments

Comments
 (0)