Add render status conditions to Kptfile#4418
Conversation
✅ Deploy Preview for kptdocs ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
Signed-off-by: aravind.est <aravindhan.a@est.tech>
880acd5 to
c94ece2
Compare
|
Related Documentation 4 document(s) may need updating based on files changed in this PR: kpt _index
|
There was a problem hiding this comment.
Pull request overview
This PR records the outcome of kpt fn render by writing a Rendered condition into status.conditions of the root Kptfile after render, capturing success (RenderSuccess) or failure (RenderFailed, with an error message). It also updates extensive E2E fixtures to expect the new status output and to keep failure messages deterministic by rewriting absolute root paths to ..
Changes:
- Add
Renderedcondition constants and a helper constructor in the Kptfile API. - Update the render executor to write/update the root Kptfile
status.conditionson success/failure (in-place only). - Update unit tests and E2E expected outputs to include the new
Renderedcondition behavior.
Reviewed changes
Copilot reviewed 83 out of 90 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| pkg/api/kptfile/v1/types.go | Adds Rendered condition constants and NewRenderedCondition helper. |
| internal/util/render/executor.go | Writes the Rendered condition to the root Kptfile after render (in-place only) and normalizes root paths in error messages. |
| pkg/kptfile/kptfileutil/util.go | Adds WriteKptfileToFS and refactors marshaling into marshalKptfile. |
| internal/util/render/executor_test.go | Adds unit tests covering render status updates (success/failure/replace/root-only) and updates constants. |
| e2e/testdata/fn-render/validate-resource-failure/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False on failure. |
| e2e/testdata/fn-render/validate-generated-resource/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True on success. |
| e2e/testdata/fn-render/success-stdout/.expected/diff.patch | Updates expected outputs (note: stdout mode should not write status to disk). |
| e2e/testdata/fn-render/subpkgs/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True on success. |
| e2e/testdata/fn-render/subpkgs-with-krmignore/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True on success. |
| e2e/testdata/fn-render/subpkg-resource-deletion/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True on success. |
| e2e/testdata/fn-render/subpkg-has-samename-subdir/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True on success. |
| e2e/testdata/fn-render/subpkg-has-invalid-kptfile/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False with normalized path in message. |
| e2e/testdata/fn-render/subpkg-fn-failure/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/structured-results-from-muiltiple-fns/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/short-image-path/.expected/results.yaml | Updates expected results formatting. |
| e2e/testdata/fn-render/short-image-path/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/selectors/selectors-with-exclude/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/selectors/generator/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/selectors/exclude/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/selectors/basicpipeline/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/save-on-render-failure/no-save-on-render-failure/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-subpkg-validator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-subpkg-mutator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-parent-validator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-parent-mutator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-parent-and-subpkg-both-fail/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-multiple-subpkgs-one-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-deep-nested-middle-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/dfs-basicpipeline/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-subpkg-validator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-subpkg-mutator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-parent-validator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-parent-mutator-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-parent-and-subpkg-both-fail/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-multiple-subpkgs-one-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-deep-nested-middle-fails/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/save-on-render-failure/bfs-basicpipeline/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/resource-has-pkgname-prefix/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/resource-deletion/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/preserve-order-null-values/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/preserve-comments/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/path-index-outofpackage/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/path-index-duplicate/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/path-index-descendent/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/path-index-current/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/path-index-ancestor/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/non-krm-resource/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/non-krm-resource-no-pipeline/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/no-resources/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/no-pipeline-in-subpackage/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/no-op/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/no-fnconfig/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/mutate-path-index/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/mutate-legacy-path-index/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/modify-path-annotation/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/modify-legacy-path-annotation/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/missing-fn-image/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/kubeval-failure/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/krm-check-exclude-kustomize/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/image-pull-policy-never/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/generator/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/generator-absolute-path/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/format-on-success/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fnresult-fn-success/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fnresult-fn-failure/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/fnconfig/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fnconfig-updated-in-render/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fnconfig-pkgfn-refers-subdir/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fnconfig-in-subdir/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fnconfig-cannot-refer-subpkgs/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/fnconfig-ancestorfn-not-mutate-subpkg-config/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fn-success-with-stderr/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/fn-failure/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/fn-failure-output-no-truncate/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/exec-without-permissions/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=False. |
| e2e/testdata/fn-render/exec-function-with-args/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/exec-function-stderr/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/default-runtime/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/basicpipeline/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/basicpipeline-wasm/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/basicpipeline-symlink/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/basicpipeline-semver/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-render/all-resource-deletion/.expected/diff.patch | Updates expected root Kptfile diff to include Rendered=True. |
| e2e/testdata/fn-eval/simple-function-with-tag/.expected/diff.patch | Updates expected diff formatting (unrelated fixture normalization). |
| e2e/testdata/fn-eval/save-fn/preserve-kptfile-comments/.expected/diff.patch | Updates expected diff formatting (fixture normalization). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Signed-off-by: aravind.est <aravindhan.a@est.tech>
7e87f5c to
1af1873
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 87 out of 94 changed files in this pull request and generated no new comments.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
After every
kpt fn renderexecution, aRenderedstatus condition is recorded in the root Kptfile indicating whether rendering succeeded or failed.Note
86 of the 94 changed files are E2E test data and test scenarios. The core implementation changes are in 8 files.
What
Renderedcondition tostatus.conditionsin the root Kptfile after renderstatus: "True",reason: RenderSuccessstatus: "False",reason: RenderFailed,message: <error details>.(e.g./tmp/kpt-pipeline-e2e-123/my-pkg/subpkg→./subpkg) to keep messages deterministic and portableSuccess Case:
Render failure Case:
Behaviour
kpt fn render): status condition is written to the Kptfilekpt fn render -o <dir>): status condition is not written, same as stdout/unwrap modekpt fn render -o stdout,-o unwrap): status condition is not written since there is no on-disk package to updatekpt.dev/save-on-render-failureannotationChanges
Core implementation:
pkg/api/kptfile/v1/types.go- Constants and helpers addedinternal/util/render/executor.go- Functions to update the render status addedpkg/kptfile/kptfileutil/util.go- Helpers to write in a kpt file added.Tests: