|
1 | 1 | package io.javaoperatorsdk.operator.processing.event.source.informer;
|
2 | 2 |
|
3 | 3 | import java.util.Collections;
|
| 4 | +import java.util.Optional; |
4 | 5 | import java.util.Set;
|
5 | 6 | import java.util.stream.Collectors;
|
6 | 7 |
|
@@ -42,24 +43,36 @@ public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromLabel(
|
42 | 43 | return fromMetadata(nameKey, namespaceKey, true);
|
43 | 44 | }
|
44 | 45 |
|
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); |
47 | 48 | }
|
48 | 49 |
|
49 | 50 | /**
|
50 |
| - * @param clusterScope if the owner is a cluster scoped resource |
| 51 | + * @param clusterScoped if the owner is a cluster scoped resource |
51 | 52 | * @return mapper
|
52 | 53 | * @param <T> type of the secondary resource, where the owner reference is
|
53 | 54 | */
|
54 | 55 | 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); |
58 | 68 | }
|
59 | 69 |
|
60 |
| - public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences( |
| 70 | + public static <T extends HasMetadata> SecondaryToPrimaryMapper<T> fromOwnerReferences(HasMetadata primaryResource, |
61 | 71 | 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())) |
63 | 76 | .map(or -> ResourceID.fromOwnerReference(resource, or, clusterScope))
|
64 | 77 | .collect(Collectors.toSet());
|
65 | 78 | }
|
|
0 commit comments