feat: support -ext-str and -ext-code flags for jsonnet std.extVar#283
Open
takaishi wants to merge 2 commits into
Open
feat: support -ext-str and -ext-code flags for jsonnet std.extVar#283takaishi wants to merge 2 commits into
takaishi wants to merge 2 commits into
Conversation
0f71600 to
933d672
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR adds top-level
-ext-strand-ext-codeflags that bind values tostr.extVar()references then the configuration filer is a Jsonnet file. There flags are mirroring the upstream jsonnet CLI. Also fixes the Plugin struct so plugins declared in Jsonnet configs are decoded correctly.Background
Until now, Jsonnet configurations could only be evaluated with values hard-coded in the file (or imported via libsonnet). There was no way to inject values from the CLI or the environment at evaluation time, which made it awkward to share a single Jsonnet template across environments (e.g. region, cluster name, task counts).
The upstream jsonnet CLI exposes --ext-str / --ext-code for exactly this purpose, and ecschedule users expect the same ergonomics when running ecschedule apply / diff / dump / run.
Separately, the Plugin struct only had yaml tags. When a Jsonnet config went through the Jsonnet → JSON → YAML path, the plugins block decoded into empty Plugin values, so plugins declared in Jsonnet did not work.
Changes
forwarded to jsonnet.VM.ExtVar / ExtCode when the config file has a .jsonnet extension.