Skip to content

Commit c51bdbd

Browse files
committed
improve: secondaryToPrimary check type of owner reference
Signed-off-by: Attila Mészáros <csviri@gmail.com>
1 parent b77905e commit c51bdbd

File tree

3 files changed

+22
-23
lines changed

3 files changed

+22
-23
lines changed

operator-framework-core/src/main/java/io/javaoperatorsdk/operator/api/config/informer/InformerConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ protected DefaultInformerConfiguration(String labelSelector,
5252
this.primaryToSecondaryMapper = primaryToSecondaryMapper;
5353
this.secondaryToPrimaryMapper =
5454
Objects.requireNonNullElse(secondaryToPrimaryMapper,
55-
Mappers.fromOwnerReference());
55+
Mappers.fromOwnerReferences());
5656
this.onDeleteFilter = onDeleteFilter;
5757
}
5858

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

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -14,20 +14,6 @@ public static ResourceID fromResource(HasMetadata resource) {
1414
resource.getMetadata().getNamespace());
1515
}
1616

17-
public static Optional<ResourceID> fromFirstOwnerReference(HasMetadata resource) {
18-
return fromFirstOwnerReference(resource, false);
19-
}
20-
21-
public static Optional<ResourceID> fromFirstOwnerReference(HasMetadata resource,
22-
boolean clusterScoped) {
23-
var ownerReferences = resource.getMetadata().getOwnerReferences();
24-
if (!ownerReferences.isEmpty()) {
25-
return Optional.of(fromOwnerReference(resource, ownerReferences.get(0), clusterScoped));
26-
} else {
27-
return Optional.empty();
28-
}
29-
}
30-
3117
public static ResourceID fromOwnerReference(HasMetadata resource, OwnerReference ownerReference,
3218
boolean clusterScoped) {
3319
return new ResourceID(ownerReference.getName(),

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

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package io.javaoperatorsdk.operator.processing.event.source.informer;
22

33
import java.util.Collections;
4+
import java.util.Optional;
45
import java.util.Set;
56
import java.util.stream.Collectors;
67

@@ -42,24 +43,36 @@ public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromLabel(
4243
return fromMetadata(nameKey, namespaceKey, true);
4344
}
4445

45-
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReference() {
46-
return fromOwnerReference(false);
46+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReference(HasMetadata primaryResource) {
47+
return fromOwnerReference(false, primaryResource);
4748
}
4849

4950
/**
50-
* @param clusterScope if the owner is a cluster scoped resource
51+
* @param clusterScoped if the owner is a cluster scoped resource
5152
* @return mapper
5253
* @param <T> type of the secondary resource, where the owner reference is
5354
*/
5455
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReference(
55-
boolean clusterScope) {
56-
return resource -> ResourceID.fromFirstOwnerReference(resource, clusterScope).map(Set::of)
57-
.orElseGet(Collections::emptySet);
56+
boolean clusterScoped, HasMetadata primaryResource) {
57+
return resource -> {
58+
var ownerReference = resource.getMetadata().getOwnerReferences().stream().filter(r ->
59+
r.getKind().equals(primaryResource.getKind()) && r.getApiVersion().equals(primaryResource.getApiVersion())
60+
).findAny();
61+
return ownerReference.map(or -> ResourceID.fromOwnerReference(resource, or, clusterScoped))
62+
.stream().collect(Collectors.toSet());
63+
};
64+
}
65+
66+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(HasMetadata primaryResource) {
67+
return fromOwnerReferences(primaryResource,false);
5868
}
5969

60-
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(
70+
public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(HasMetadata primaryResource,
6171
boolean clusterScope) {
62-
return resource -> resource.getMetadata().getOwnerReferences().stream()
72+
return resource -> resource.getMetadata().getOwnerReferences()
73+
.stream()
74+
.filter(r->r.getKind().equals(primaryResource.getKind())
75+
&& r.getApiVersion().equals(primaryResource.getApiVersion()))
6376
.map(or -> ResourceID.fromOwnerReference(resource, or, clusterScope))
6477
.collect(Collectors.toSet());
6578
}

0 commit comments

Comments
 (0)