diff --git a/resource/resource.go b/resource/resource.go index c72e4c0..94616cd 100644 --- a/resource/resource.go +++ b/resource/resource.go @@ -39,6 +39,8 @@ type ConnectionDetails map[string][]byte type Composite struct { Resource *composite.Unstructured ConnectionDetails ConnectionDetails + + Ready Ready } // A Name uniquely identifies a composed resource within a Composition Function diff --git a/response/response.go b/response/response.go index cc58f3f..83f4f9b 100644 --- a/response/response.go +++ b/response/response.go @@ -64,8 +64,20 @@ func SetDesiredCompositeResource(rsp *v1.RunFunctionResponse, xr *resource.Compo rsp.Desired = &v1.State{} } s, err := resource.AsStruct(xr.Resource) - rsp.Desired.Composite = &v1.Resource{Resource: s, ConnectionDetails: xr.ConnectionDetails} - return errors.Wrapf(err, "cannot convert %T to desired composite resource", xr.Resource) + r := &v1.Resource{Resource: s, ConnectionDetails: xr.ConnectionDetails} + if err != nil { + return errors.Wrapf(err, "cannot convert %T to desired composite resource", xr.Resource) + } + switch xr.Ready { + case resource.ReadyUnspecified: + r.Ready = v1.Ready_READY_UNSPECIFIED + case resource.ReadyFalse: + r.Ready = v1.Ready_READY_FALSE + case resource.ReadyTrue: + r.Ready = v1.Ready_READY_TRUE + } + rsp.Desired.Composite = r + return nil } // SetDesiredComposedResources sets the desired composed resources in the