operator-framework / java-operator-sdk

Java SDK for building Kubernetes Operators
https://javaoperatorsdk.io/
Apache License 2.0
797 stars 215 forks source link

Ability to extend functionality of existing matchers like `SSABasedGenericKubernetesResourceMatcher` #2553

Open murillio4 opened 2 weeks ago

murillio4 commented 2 weeks ago

Is your feature request related to a problem? Please describe. While addressing the issue discussed in #2509 regarding matching Quantity values, I created a custom matcher to extend the functionality of SSABasedGenericKubernetesResourceMatcher. My goal was to build upon the original matcher, preserving much of its existing functionality. However, when I attempted to override the matches function, I found that the other necessary methods were private, preventing me from utilizing them in my override. This forced me to clone the entire class to achieve the desired functionality.

Describe the solution you'd like I would like to be able to create custom SSABased matchers by extending SSABasedGenericKubernetesResourceMatcher without needing to clone it entirely.

Describe alternatives you've considered One alternative is to make certain helper methods—such as checkIfFieldManagerExists, sanitizeState, keepOnlyManagedFields, and removeIrrelevantValues—protected instead of private. Doing this may also require that some constants be readable at the subclass level, allowing for greater flexibility and customization when extending the base class.

csviri commented 2 weeks ago

Absolutely, feel free to come up with a PR, we can have a default set also of such rules. Would be nice to make it extensible maybe to have custom functions that normalises the resources.

murillio4 commented 2 days ago

Sorry for the delay! 😊 I’ll aim to create a PR for this within the week.

csviri commented 1 day ago

thx @murillio4 ! note that there is an other related PR: https://github.com/operator-framework/java-operator-sdk/pull/2565