kafka-ops / julie

A solution to help you build automation and gitops in your Apache Kafka deployments. The Kafka gitops!
MIT License
417 stars 113 forks source link

Capture all fields in Other class to enable more powerful roles #584

Open aheiska opened 2 months ago

aheiska commented 2 months ago

This adds unmappedFields map with @JsonAnyGetter / @JsonAnySetter to capture all fields. Extra fields are added to rendering data map at Other::asMap() to allow their usage in roles, which allows more powerful roles because resourceName is not limited to fields in Other.

resourceName in roles limits to fields in Other class (transactionId, idempotence, group, topic, subject, connector).

When rendering a role fields with custom names from yaml becomes available.

Can't think of anything particularly hazardous. None of the previous tests needed fixing. Spotting typos becomes harder and existing fields in Other become somewhat unnecessary.

I know project is in hibernation state, but I made this anyway if community finds this useful. Please let me know what you think about this approach. I wrote initial documentation, I can improve it if you think this can be merged. Name mirrorMaker in tests and in documentation is probably a poor choice; permissions given in those are not particularly good example of mirror maker acls, it was just a first public example of an app that uses several topics and has some naming requirements.