From fce65c0f3fae8065ea3ff878b89a618e2ab88d9b Mon Sep 17 00:00:00 2001 From: Nic Cope Date: Fri, 15 Sep 2023 19:01:21 -0700 Subject: [PATCH] Make desired resources map values pointers to struct This makes it possible to mutate struct values while iterating over the map of composed resources. I found myself naturally wanting to do this while writing a Function. e.g.: desired, _ = request.GetDesiredComposedResources(req) for _, dr := range desired { dr.Ready = resource.ReadyTrue } _ = response.SetDesiredComposedResources(desired) I haven't made the same change for observed resources, since they're supposed to be read-only to a Function. Signed-off-by: Nic Cope --- request/request.go | 6 +++--- response/response.go | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/request/request.go b/request/request.go index a3e911b..740632d 100644 --- a/request/request.go +++ b/request/request.go @@ -67,10 +67,10 @@ func GetDesiredCompositeResource(req *v1beta1.RunFunctionRequest) (*resource.Com } // GetDesiredComposedResources from the supplied request. -func GetDesiredComposedResources(req *v1beta1.RunFunctionRequest) (map[resource.Name]resource.DesiredComposed, error) { - dcds := map[resource.Name]resource.DesiredComposed{} +func GetDesiredComposedResources(req *v1beta1.RunFunctionRequest) (map[resource.Name]*resource.DesiredComposed, error) { + dcds := map[resource.Name]*resource.DesiredComposed{} for name, r := range req.GetDesired().GetResources() { - dcd := resource.DesiredComposed{Resource: composed.New()} + dcd := &resource.DesiredComposed{Resource: composed.New()} if err := resource.AsObject(r.GetResource(), dcd.Resource); err != nil { return nil, err } diff --git a/response/response.go b/response/response.go index 71129e5..7b98996 100644 --- a/response/response.go +++ b/response/response.go @@ -61,7 +61,7 @@ func SetDesiredCompositeResource(rsp *v1beta1.RunFunctionResponse, xr *resource. // supplied response. The caller must be sure to avoid overwriting the desired // state that may have been accumulated by previous Functions in the pipeline, // unless they intend to. -func SetDesiredComposedResources(rsp *v1beta1.RunFunctionResponse, dcds map[resource.Name]resource.DesiredComposed) error { +func SetDesiredComposedResources(rsp *v1beta1.RunFunctionResponse, dcds map[resource.Name]*resource.DesiredComposed) error { if rsp.Desired == nil { rsp.Desired = &v1beta1.State{} }