function-sdk-go icon indicating copy to clipboard operation
function-sdk-go copied to clipboard

Make Extra Resources convertable to json and yaml

Open Avarei opened this issue 7 months ago • 1 comments

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

  • MarshalJSON
  • UnmarshalJSON
  • MarshalYAML
  • UnmarshalYAML

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

Avarei avatar Jun 29 '24 14:06 Avarei