-
Notifications
You must be signed in to change notification settings - Fork 237
Open
Labels
area/hydrateenhancementNew feature or requestNew feature or requestp1triagedIssue has been triaged by adding an `area/` labelIssue has been triaged by adding an `area/` label
Description
I've concluded that generators need special treatment.
Preprocessors (#2420) are ok, but are a workaround. #2466 is one issue that has been reported, but there are more issues.
Let's look at a generator like https://github.com/GoogleContainerTools/kpt-functions-sdk/blob/master/ts/demo-functions/src/expand_team_cr.ts.
- The expansion function is associated with the pseudo-resource-type, not really with a particular package. That type may be used in many packages. It would be helpful to have a registry for that type-to-function mapping (versioning TBD).
- I want to use the functions in the Kptfile pipeline similarly to Kubernetes mutating and validating admission control. They should re-run on generated resources. Other functions I'll just invoke imperatively using kpt fn eval.
- I want to be able to edit generated resources and use merge logic similar to kpt pkg update. In this example, Namespaces frequently need to be labeled and annotated, so the function in its current form is useless. One needs to create a separate package just with the Team resource, re-rerun the generator, commit and push that package, then kpt pkg get that into the main package and update that each time the function is run. Because kpt doesn't support local packages AFAIK, there can't really be a review/approval workflow around updates to the package containing generator function's output.
- If resources are no longer generated, they need to be pruned from the filesystem.
cc @justinsb
Metadata
Metadata
Assignees
Labels
area/hydrateenhancementNew feature or requestNew feature or requestp1triagedIssue has been triaged by adding an `area/` labelIssue has been triaged by adding an `area/` label