crossplane / function-sdk-go

The Go SDK for composition functions
https://crossplane.io
Apache License 2.0
19 stars 13 forks source link

Make Extra Resources convertable to json and yaml #148

Open Avarei opened 2 months ago

Avarei commented 2 months ago

What problem are you facing?

Currently extra resources have a few problems that make them more difficult to work with for composition functions which convert the RunFunctionRequest into Yaml.

I ran into this issue in function-pkl and I also saw that function-go-templating had to implement a workaround. In both Projects we re-implement the struct to be able to convert it to and from yaml.

function-go-templating's workaround

function-pkl's workaround

How could Crossplane help solve your problem?

I currently see two potential ways this could be solved

Option 1 (Breaking)

  1. add camelCased json tags to Requirements and sub structs
  2. allow for both match_name and match_labels to be ANDed similar to K8s LabelSelector.

This would make them possible to be represented in yaml.

It would be breaking though. However I think currently most composition functions have not yet implemented this. So this would hopefully not affect most users.

Option 2 (Non breaking (i think))

implement custom methods for Marshalling und Unmarshalling

A non-breaking option could be to provide a Another option could be to provide

negz commented 1 day ago

@Avarei Could you elaborate a little bit more on what the problems are? It's not immediately obvious to me from skimming the linked workarounds.

Is it just that the protobufs are producing snake_case rather than camelCase field names when converted to YAML?