Skip to content

Commit cebb131

Browse files
committed
feat: update to new StepMeta API with nested CompositionMeta
The crossplane-runtime API changed StepMeta to use a oneof Context field containing CompositionMeta. Update code to access composite resource fields through meta.GetCompositionMeta() and update tests to use the new nested structure.
1 parent dacd756 commit cebb131

File tree

4 files changed

+64
-45
lines changed

4 files changed

+64
-45
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ go 1.24.9
44

55
require (
66
github.com/alecthomas/kong v1.10.0
7-
github.com/crossplane/crossplane-runtime/v2 v2.2.0-rc.0.0.20260130110818-b375c81880a3
7+
github.com/crossplane/crossplane-runtime/v2 v2.2.0-rc.0.0.20260203080537-a4cdda495567
88
github.com/go-logr/zapr v1.3.0
99
github.com/google/go-cmp v0.7.0
1010
go.uber.org/zap v1.27.1

go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ github.com/alecthomas/repr v0.4.0 h1:GhI2A8MACjfegCPVq9f1FLvIBS+DrQ2KQBFZP1iFzXc
66
github.com/alecthomas/repr v0.4.0/go.mod h1:Fr0507jx4eOXV7AlPV6AVZLYrLIuIeSOWtW57eE/O/4=
77
github.com/crossplane/crossplane-runtime/v2 v2.2.0-rc.0.0.20260130110818-b375c81880a3 h1:MJuAjQSIhOhqFB//iEOqeQtFRA85QHQjJODKWRkFbCg=
88
github.com/crossplane/crossplane-runtime/v2 v2.2.0-rc.0.0.20260130110818-b375c81880a3/go.mod h1:WVVus9FBbAVjAmFxrOGDdZBFuUv9TqR916JmVl3PVRk=
9+
github.com/crossplane/crossplane-runtime/v2 v2.2.0-rc.0.0.20260203080537-a4cdda495567 h1:60ausbiH3JG45NYMg4EhMEJhpfNo0URZt8inmGvvKAk=
10+
github.com/crossplane/crossplane-runtime/v2 v2.2.0-rc.0.0.20260203080537-a4cdda495567/go.mod h1:WVVus9FBbAVjAmFxrOGDdZBFuUv9TqR916JmVl3PVRk=
911
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
1012
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1113
github.com/go-logr/logr v1.4.3 h1:CjnDlHq8ikf6E492q6eKboGOC0T8CDaOvkHCIg8idEI=

server/server.go

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -142,12 +142,13 @@ func (i *Inspector) logJSON(eventType string, meta *pipelinev1alpha1.StepMeta, p
142142

143143
func (i *Inspector) logText(eventType string, meta *pipelinev1alpha1.StepMeta, payload any, errMsg string) {
144144
_, _ = fmt.Fprintf(i.out, "=== %s ===\n", eventType)
145-
_, _ = fmt.Fprintf(i.out, " XR: %s/%s (%s)\n", meta.GetCompositeResourceApiVersion(), meta.GetCompositeResourceKind(), meta.GetCompositeResourceName())
146-
_, _ = fmt.Fprintf(i.out, " XR UID: %s\n", meta.GetCompositeResourceUid())
147-
if ns := meta.GetCompositeResourceNamespace(); ns != "" {
145+
cm := meta.GetCompositionMeta()
146+
_, _ = fmt.Fprintf(i.out, " XR: %s/%s (%s)\n", cm.GetCompositeResourceApiVersion(), cm.GetCompositeResourceKind(), cm.GetCompositeResourceName())
147+
_, _ = fmt.Fprintf(i.out, " XR UID: %s\n", cm.GetCompositeResourceUid())
148+
if ns := cm.GetCompositeResourceNamespace(); ns != "" {
148149
_, _ = fmt.Fprintf(i.out, " XR NS: %s\n", ns)
149150
}
150-
_, _ = fmt.Fprintf(i.out, " Composition: %s\n", meta.GetCompositionName())
151+
_, _ = fmt.Fprintf(i.out, " Composition: %s\n", cm.GetCompositionName())
151152
_, _ = fmt.Fprintf(i.out, " Step: %s (index %d, iteration %d)\n", meta.GetStepName(), meta.GetStepIndex(), meta.GetIteration())
152153
_, _ = fmt.Fprintf(i.out, " Function: %s\n", meta.GetFunctionName())
153154
_, _ = fmt.Fprintf(i.out, " Trace ID: %s\n", meta.GetTraceId())

server/server_test.go

Lines changed: 56 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,22 @@ func TestEmitRequest_JSON(t *testing.T) {
3434
inspector := NewInspector("json", WithOutput(&buf))
3535

3636
meta := &pipelinev1alpha1.StepMeta{
37-
TraceId: "trace-123",
38-
SpanId: "span-456",
39-
StepIndex: 0,
40-
Iteration: 0,
41-
FunctionName: "function-patch-and-transform",
42-
CompositionName: "my-composition",
43-
CompositeResourceUid: "uid-789",
44-
CompositeResourceName: "my-xr",
45-
CompositeResourceNamespace: "default",
46-
CompositeResourceApiVersion: "example.org/v1",
47-
CompositeResourceKind: "XDatabase",
48-
Timestamp: timestamppb.New(time.Now()),
37+
TraceId: "trace-123",
38+
SpanId: "span-456",
39+
StepIndex: 0,
40+
Iteration: 0,
41+
FunctionName: "function-patch-and-transform",
42+
Timestamp: timestamppb.New(time.Now()),
43+
Context: &pipelinev1alpha1.StepMeta_CompositionMeta{
44+
CompositionMeta: &pipelinev1alpha1.CompositionMeta{
45+
CompositionName: "my-composition",
46+
CompositeResourceUid: "uid-789",
47+
CompositeResourceName: "my-xr",
48+
CompositeResourceNamespace: "default",
49+
CompositeResourceApiVersion: "example.org/v1",
50+
CompositeResourceKind: "XDatabase",
51+
},
52+
},
4953
}
5054

5155
req := &pipelinev1alpha1.EmitRequestRequest{
@@ -139,19 +143,23 @@ func TestEmitRequest_Text(t *testing.T) {
139143
inspector := NewInspector("text", WithOutput(&buf))
140144

141145
meta := &pipelinev1alpha1.StepMeta{
142-
CompositeResourceApiVersion: "example.org/v1",
143-
CompositeResourceKind: "XDatabase",
144-
CompositeResourceName: "my-xr",
145-
CompositeResourceUid: "uid-123",
146-
CompositeResourceNamespace: "my-namespace",
147-
CompositionName: "my-composition",
148-
StepName: "my-step",
149-
FunctionName: "my-function",
150-
TraceId: "trace-abc",
151-
SpanId: "span-def",
152-
StepIndex: 1,
153-
Iteration: 2,
154-
Timestamp: timestamppb.New(time.Date(2026, 1, 15, 10, 30, 0, 0, time.UTC)),
146+
StepName: "my-step",
147+
FunctionName: "my-function",
148+
TraceId: "trace-abc",
149+
SpanId: "span-def",
150+
StepIndex: 1,
151+
Iteration: 2,
152+
Timestamp: timestamppb.New(time.Date(2026, 1, 15, 10, 30, 0, 0, time.UTC)),
153+
Context: &pipelinev1alpha1.StepMeta_CompositionMeta{
154+
CompositionMeta: &pipelinev1alpha1.CompositionMeta{
155+
CompositeResourceApiVersion: "example.org/v1",
156+
CompositeResourceKind: "XDatabase",
157+
CompositeResourceName: "my-xr",
158+
CompositeResourceUid: "uid-123",
159+
CompositeResourceNamespace: "my-namespace",
160+
CompositionName: "my-composition",
161+
},
162+
},
155163
}
156164

157165
req := &pipelinev1alpha1.EmitRequestRequest{
@@ -187,15 +195,19 @@ func TestEmitRequest_Text_NoNamespace(t *testing.T) {
187195

188196
// Cluster-scoped resource has empty namespace.
189197
meta := &pipelinev1alpha1.StepMeta{
190-
CompositeResourceApiVersion: "example.org/v1",
191-
CompositeResourceKind: "XClusterDatabase",
192-
CompositeResourceName: "my-cluster-xr",
193-
CompositeResourceUid: "uid-456",
194-
CompositeResourceNamespace: "", // Empty for cluster-scoped.
195-
CompositionName: "cluster-composition",
196-
StepName: "my-step",
197-
FunctionName: "my-function",
198-
Timestamp: timestamppb.New(time.Date(2026, 1, 15, 10, 30, 0, 0, time.UTC)),
198+
StepName: "my-step",
199+
FunctionName: "my-function",
200+
Timestamp: timestamppb.New(time.Date(2026, 1, 15, 10, 30, 0, 0, time.UTC)),
201+
Context: &pipelinev1alpha1.StepMeta_CompositionMeta{
202+
CompositionMeta: &pipelinev1alpha1.CompositionMeta{
203+
CompositeResourceApiVersion: "example.org/v1",
204+
CompositeResourceKind: "XClusterDatabase",
205+
CompositeResourceName: "my-cluster-xr",
206+
CompositeResourceUid: "uid-456",
207+
CompositeResourceNamespace: "", // Empty for cluster-scoped.
208+
CompositionName: "cluster-composition",
209+
},
210+
},
199211
}
200212

201213
req := &pipelinev1alpha1.EmitRequestRequest{
@@ -227,12 +239,16 @@ func TestEmitResponse_Text_WithError(t *testing.T) {
227239
inspector := NewInspector("text", WithOutput(&buf))
228240

229241
meta := &pipelinev1alpha1.StepMeta{
230-
CompositeResourceApiVersion: "example.org/v1",
231-
CompositeResourceKind: "XDatabase",
232-
CompositeResourceName: "my-xr",
233-
StepName: "failing-step",
234-
FunctionName: "failing-function",
235-
Timestamp: timestamppb.New(time.Date(2026, 1, 15, 10, 30, 0, 0, time.UTC)),
242+
StepName: "failing-step",
243+
FunctionName: "failing-function",
244+
Timestamp: timestamppb.New(time.Date(2026, 1, 15, 10, 30, 0, 0, time.UTC)),
245+
Context: &pipelinev1alpha1.StepMeta_CompositionMeta{
246+
CompositionMeta: &pipelinev1alpha1.CompositionMeta{
247+
CompositeResourceApiVersion: "example.org/v1",
248+
CompositeResourceKind: "XDatabase",
249+
CompositeResourceName: "my-xr",
250+
},
251+
},
236252
}
237253

238254
req := &pipelinev1alpha1.EmitResponseRequest{

0 commit comments

Comments
 (0)