From 54197b4721de0b94bfdc64c5d079f4e1ffa432c5 Mon Sep 17 00:00:00 2001 From: Asish Kumar <87874775+officialasishkumar@users.noreply.github.com> Date: Mon, 6 Apr 2026 19:54:15 +0530 Subject: [PATCH] Fix: rename statusDetails CUE field to details to match Status struct (#7088) The StatusDetails() function in defkit was rendering the CUE field as "statusDetails:" instead of "details:", which is the actual JSON tag defined on the Details field in the common.Status struct. This mismatch caused CUE rendering failures at runtime because the controller expects the field to be named "details" (matching the json:"details,omitempty" tag in apis/core.oam.dev/common/types.go). Fixed in all four definition types (component, trait, policy, workflow step) and updated corresponding test assertions to verify the correct field name. Signed-off-by: Asish Kumar --- pkg/definition/defkit/component_test.go | 4 ++-- pkg/definition/defkit/cuegen.go | 2 +- pkg/definition/defkit/policy.go | 2 +- pkg/definition/defkit/policy_ginkgo_test.go | 4 ++-- pkg/definition/defkit/trait.go | 2 +- pkg/definition/defkit/trait_test.go | 4 ++-- pkg/definition/defkit/workflow_step.go | 2 +- pkg/definition/defkit/workflow_step_test.go | 4 ++-- 8 files changed, 12 insertions(+), 12 deletions(-) diff --git a/pkg/definition/defkit/component_test.go b/pkg/definition/defkit/component_test.go index 12eee2f97..65ed37c6a 100644 --- a/pkg/definition/defkit/component_test.go +++ b/pkg/definition/defkit/component_test.go @@ -621,7 +621,7 @@ var _ = Describe("ComponentDefinition", func() { cue := c.ToCue() Expect(cue).To(ContainSubstring(`status:`)) - Expect(cue).To(ContainSubstring(`statusDetails:`)) + Expect(cue).To(ContainSubstring(`details:`)) Expect(cue).NotTo(ContainSubstring(`customStatus:`)) Expect(cue).NotTo(ContainSubstring(`healthPolicy:`)) }) @@ -638,7 +638,7 @@ var _ = Describe("ComponentDefinition", func() { Expect(cue).To(ContainSubstring(`status:`)) Expect(cue).To(ContainSubstring(`customStatus:`)) Expect(cue).To(ContainSubstring(`healthPolicy:`)) - Expect(cue).To(ContainSubstring(`statusDetails:`)) + Expect(cue).To(ContainSubstring(`details:`)) }) }) diff --git a/pkg/definition/defkit/cuegen.go b/pkg/definition/defkit/cuegen.go index c3d6db06c..91e339d2e 100644 --- a/pkg/definition/defkit/cuegen.go +++ b/pkg/definition/defkit/cuegen.go @@ -2864,7 +2864,7 @@ func (g *CUEGenerator) writeStatus(sb *strings.Builder, c *ComponentDefinition, } if statusDetails != "" { - sb.WriteString(fmt.Sprintf("%s%sstatusDetails: #\"\"\"\n", indent, g.indent)) + sb.WriteString(fmt.Sprintf("%s%sdetails: #\"\"\"\n", indent, g.indent)) for _, line := range strings.Split(statusDetails, "\n") { sb.WriteString(fmt.Sprintf("%s%s%s%s\n", indent, g.indent, g.indent, line)) } diff --git a/pkg/definition/defkit/policy.go b/pkg/definition/defkit/policy.go index 00c1e71a6..8603d1408 100644 --- a/pkg/definition/defkit/policy.go +++ b/pkg/definition/defkit/policy.go @@ -399,7 +399,7 @@ func (g *PolicyCUEGenerator) GenerateTemplate(p *PolicyDefinition) string { sb.WriteString(fmt.Sprintf("%s\t\"\"\"#\n", innerIndent)) } if p.GetStatusDetails() != "" { - sb.WriteString(fmt.Sprintf("%sstatusDetails: #\"\"\"\n", innerIndent)) + sb.WriteString(fmt.Sprintf("%sdetails: #\"\"\"\n", innerIndent)) for _, line := range strings.Split(p.GetStatusDetails(), "\n") { sb.WriteString(fmt.Sprintf("%s\t%s\n", innerIndent, line)) } diff --git a/pkg/definition/defkit/policy_ginkgo_test.go b/pkg/definition/defkit/policy_ginkgo_test.go index c9994a95d..1ab03811d 100644 --- a/pkg/definition/defkit/policy_ginkgo_test.go +++ b/pkg/definition/defkit/policy_ginkgo_test.go @@ -372,7 +372,7 @@ template: { It("should render statusDetails in CUE template block", func() { cue := defkit.NewPolicy("x").StatusDetails("bar").ToCue() Expect(cue).To(ContainSubstring("status:")) - Expect(cue).To(ContainSubstring("statusDetails:")) + Expect(cue).To(ContainSubstring("details:")) }) It("should render customStatus in CUE template block", func() { @@ -401,7 +401,7 @@ template: { Expect(cue).To(ContainSubstring("status:")) Expect(cue).To(ContainSubstring("customStatus:")) Expect(cue).To(ContainSubstring("healthPolicy:")) - Expect(cue).To(ContainSubstring("statusDetails:")) + Expect(cue).To(ContainSubstring("details:")) }) }) }) diff --git a/pkg/definition/defkit/trait.go b/pkg/definition/defkit/trait.go index 9df3a83bd..a14eaee7a 100644 --- a/pkg/definition/defkit/trait.go +++ b/pkg/definition/defkit/trait.go @@ -596,7 +596,7 @@ func (g *TraitCUEGenerator) writeAttributes(sb *strings.Builder, t *TraitDefinit } if t.GetStatusDetails() != "" { - sb.WriteString(fmt.Sprintf("%sstatusDetails: #\"\"\"\n", innerIndent)) + sb.WriteString(fmt.Sprintf("%sdetails: #\"\"\"\n", innerIndent)) for _, line := range strings.Split(t.GetStatusDetails(), "\n") { sb.WriteString(fmt.Sprintf("%s\t%s\n", innerIndent, line)) } diff --git a/pkg/definition/defkit/trait_test.go b/pkg/definition/defkit/trait_test.go index 9cbcde232..76546224d 100644 --- a/pkg/definition/defkit/trait_test.go +++ b/pkg/definition/defkit/trait_test.go @@ -1771,7 +1771,7 @@ template: { It("should render statusDetails in trait CUE", func() { cue := defkit.NewTrait("t").StatusDetails("phase: context.output.status.phase").ToCue() Expect(cue).To(ContainSubstring("status:")) - Expect(cue).To(ContainSubstring("statusDetails:")) + Expect(cue).To(ContainSubstring("details:")) Expect(cue).To(ContainSubstring("phase: context.output.status.phase")) }) @@ -1801,7 +1801,7 @@ template: { Expect(cue).To(ContainSubstring("status:")) Expect(cue).To(ContainSubstring("customStatus:")) Expect(cue).To(ContainSubstring("healthPolicy:")) - Expect(cue).To(ContainSubstring("statusDetails:")) + Expect(cue).To(ContainSubstring("details:")) }) }) diff --git a/pkg/definition/defkit/workflow_step.go b/pkg/definition/defkit/workflow_step.go index 48edbcee6..bd2319156 100644 --- a/pkg/definition/defkit/workflow_step.go +++ b/pkg/definition/defkit/workflow_step.go @@ -624,7 +624,7 @@ func (g *WorkflowStepCUEGenerator) GenerateTemplate(w *WorkflowStepDefinition) s sb.WriteString(fmt.Sprintf("%s\t\"\"\"#\n", innerIndent)) } if w.GetStatusDetails() != "" { - sb.WriteString(fmt.Sprintf("%sstatusDetails: #\"\"\"\n", innerIndent)) + sb.WriteString(fmt.Sprintf("%sdetails: #\"\"\"\n", innerIndent)) for _, line := range strings.Split(w.GetStatusDetails(), "\n") { sb.WriteString(fmt.Sprintf("%s\t%s\n", innerIndent, line)) } diff --git a/pkg/definition/defkit/workflow_step_test.go b/pkg/definition/defkit/workflow_step_test.go index 632bdb1dc..0f79d6a39 100644 --- a/pkg/definition/defkit/workflow_step_test.go +++ b/pkg/definition/defkit/workflow_step_test.go @@ -414,7 +414,7 @@ template: { It("should render statusDetails in CUE template block", func() { cue := defkit.NewWorkflowStep("x").StatusDetails("foo").ToCue() Expect(cue).To(ContainSubstring("status:")) - Expect(cue).To(ContainSubstring("statusDetails:")) + Expect(cue).To(ContainSubstring("details:")) }) It("should render customStatus in CUE template block", func() { @@ -443,7 +443,7 @@ template: { Expect(cue).To(ContainSubstring("status:")) Expect(cue).To(ContainSubstring("customStatus:")) Expect(cue).To(ContainSubstring("healthPolicy:")) - Expect(cue).To(ContainSubstring("statusDetails:")) + Expect(cue).To(ContainSubstring("details:")) }) })