Skip to content

Commit bae1e76

Browse files
committed
wip
1 parent e511b1a commit bae1e76

File tree

6 files changed

+57
-64
lines changed

6 files changed

+57
-64
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -146,7 +146,7 @@ protected Optional<R> selectTargetSecondaryResource(
146146
return targetResources.isEmpty() ? Optional.empty() : Optional.of(targetResources.get(0));
147147
}
148148

149-
public ResourceIDMapper<R, ID> getResourceIDMapper() {
149+
public ResourceIDMapper<R, ID> resourceIDMapper() {
150150
return resourceIDMapper;
151151
}
152152

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

Lines changed: 7 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -15,43 +15,19 @@
1515
*/
1616
package io.javaoperatorsdk.operator.processing.dependent;
1717

18-
import java.util.Map;
19-
import java.util.function.Function;
20-
import java.util.function.Predicate;
21-
import java.util.stream.Collectors;
22-
2318
import io.fabric8.kubernetes.api.model.HasMetadata;
24-
import io.javaoperatorsdk.operator.api.reconciler.Context;
25-
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
2619
import io.javaoperatorsdk.operator.processing.ResourceIDMapper;
2720
import io.javaoperatorsdk.operator.processing.ResourceIDProvider;
2821

22+
/**
23+
* Specialized interface for bulk dependent resources where resource implement {@link
24+
* ResourceIDProvider}.
25+
*/
2926
public interface ExternalBulkDependentResource<
3027
R extends ResourceIDProvider<ID>, P extends HasMetadata, ID>
31-
extends BulkDependentResource<R, P, ID>, DependentResource<R, P> {
32-
33-
/**
34-
* Since we can list all the related resources and by assuming the resource extends {{@link
35-
* ResourceIDProvider}} it is trivial to create the target map. The only issue is if there are
36-
* other secondary resources of the target type which are not managed by this bulk dependent
37-
* resources, for those it is enough to override secondaryResourceFilter method.
38-
*/
39-
@Override
40-
default Map<ID, R> getSecondaryResources(P primary, Context<P> context) {
41-
return context
42-
.getSecondaryResourcesAsStream(resourceType())
43-
.filter(secondaryResourceFilter(primary, context))
44-
.collect(
45-
Collectors.toMap(
46-
cm -> ResourceIDMapper.<R, ID>resourceIdProviderMapper().idFor(cm),
47-
Function.identity()));
48-
}
28+
extends ResourceIDMapperBulkDependentResource<R, P, ID> {
4929

50-
/**
51-
* Override if not all the secondary resources of target type are managed by the bulk dependent
52-
* resource.
53-
*/
54-
default Predicate<R> secondaryResourceFilter(P primary, Context<P> context) {
55-
return r -> true;
30+
default ResourceIDMapper<R, ID> resourceIDMapper() {
31+
return ResourceIDMapper.resourceIdProviderMapper();
5632
}
5733
}

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

Lines changed: 3 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,7 @@
1515
*/
1616
package io.javaoperatorsdk.operator.processing.dependent;
1717

18-
import java.util.Map;
19-
import java.util.function.Function;
20-
import java.util.function.Predicate;
21-
import java.util.stream.Collectors;
22-
2318
import io.fabric8.kubernetes.api.model.HasMetadata;
24-
import io.javaoperatorsdk.operator.api.reconciler.Context;
25-
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
2619
import io.javaoperatorsdk.operator.processing.ResourceIDMapper;
2720
import io.javaoperatorsdk.operator.processing.event.ResourceID;
2821

@@ -33,30 +26,10 @@
3326
* BulkDependentResource}.
3427
*/
3528
public interface KubernetesBulkDependentResource<R extends HasMetadata, P extends HasMetadata>
36-
extends BulkDependentResource<R, P, ResourceID>, DependentResource<R, P> {
29+
extends ResourceIDMapperBulkDependentResource<R, P, ResourceID> {
3730

38-
/**
39-
* Since we can list all the related resources and by assuming the ID is type of {@link
40-
* ResourceID} it is trivial to create the target map. The only issue is if there are other
41-
* secondary resources of the target type which are not managed by this bulk dependent resources,
42-
* for those it is enough to override secondaryResourceFilter method.
43-
*/
4431
@Override
45-
default Map<ResourceID, R> getSecondaryResources(P primary, Context<P> context) {
46-
return context
47-
.getSecondaryResourcesAsStream(resourceType())
48-
.filter(secondaryResourceFilter(primary, context))
49-
.collect(
50-
Collectors.toMap(
51-
cm -> ResourceIDMapper.kubernetesResourceIdMapper().idFor(cm),
52-
Function.identity()));
53-
}
54-
55-
/**
56-
* Override if not all the secondary resources of target type are managed by the bulk dependent
57-
* resource.
58-
*/
59-
default Predicate<R> secondaryResourceFilter(P primary, Context<P> context) {
60-
return r -> true;
32+
default ResourceIDMapper<R, ResourceID> resourceIDMapper() {
33+
return ResourceIDMapper.kubernetesResourceIdMapper();
6134
}
6235
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
/*
2+
* Copyright Java Operator SDK Authors
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.javaoperatorsdk.operator.processing.dependent;
17+
18+
import java.util.Map;
19+
import java.util.function.Function;
20+
import java.util.function.Predicate;
21+
import java.util.stream.Collectors;
22+
23+
import io.fabric8.kubernetes.api.model.HasMetadata;
24+
import io.javaoperatorsdk.operator.api.reconciler.Context;
25+
import io.javaoperatorsdk.operator.api.reconciler.dependent.DependentResource;
26+
import io.javaoperatorsdk.operator.processing.ResourceIDMapper;
27+
28+
public interface ResourceIDMapperBulkDependentResource<R, P extends HasMetadata, ID>
29+
extends BulkDependentResource<R, P, ID>, DependentResource<R, P> {
30+
31+
ResourceIDMapper<R, ID> resourceIDMapper();
32+
33+
@Override
34+
default Map<ID, R> getSecondaryResources(P primary, Context<P> context) {
35+
return context
36+
.getSecondaryResourcesAsStream(resourceType())
37+
.filter(secondaryResourceFilter(primary, context))
38+
.collect(Collectors.toMap(cm -> resourceIDMapper().idFor(cm), Function.identity()));
39+
}
40+
41+
default Predicate<R> secondaryResourceFilter(P primary, Context<P> context) {
42+
return r -> true;
43+
}
44+
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ protected ExternalResourceCachingEventSource<R, P, ID> createEventSource(
4747
resourceType(),
4848
context,
4949
new PerResourcePollingConfigurationBuilder<R, P, ID>(this, getPollingPeriod())
50-
.withResourceIDMapper(getResourceIDMapper())
50+
.withResourceIDMapper(resourceIDMapper())
5151
.withName(name())
5252
.build());
5353
}

operator-framework/src/test/java/io/javaoperatorsdk/operator/dependent/bulkdependent/external/SampleExternalBulkDependentResource.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ public Map<String, ExternalResource> desiredResources(
9393
var resource =
9494
new ExternalResource(
9595
toExternalResourceId(primary, key), primary.getSpec().getAdditionalData());
96-
res.put(getResourceIDMapper().idFor(resource), resource);
96+
res.put(resourceIDMapper().idFor(resource), resource);
9797
}
9898
return res;
9999
}

0 commit comments

Comments
 (0)