Repository navigation
Conversation
Load `*.toml` fragments from a drop-in directory and merge them over the base gateway config in lexical order. Tables merge key by key; scalars and arrays replace. The merged result is validated once, and errors name the first fragment that causes them. The directory is selected with `--config-dir` or `OPENSHELL_GATEWAY_CONFIG_DIR`, and defaults to `gateway.d` next to the base file when it exists. `config preflight` loads the same merged result and lists the files it merged. Refs #5446 Signed-off-by: Evan Lezar <elezar@nvidia.com>
Install /etc/openshell-test/gateway-overrides.toml as gateway.d/90-test-overrides.toml next to the gateway's base file instead of rewriting the base file with merge-gateway-toml.py. The gateway merges the fragment, so the package's gateway.toml stays untouched and the merge script and its tests are removed. A package with no default configuration still gets a minimal version = 2 base file, since a fragment does not declare a version. Refs #5446 Signed-off-by: Evan Lezar <elezar@nvidia.com>
|
🌿 Preview your docs: https://nvidia-preview-pr-5489.docs.buildwithfern.com/openshell |
Compatibility review (advisory)New or updated breaking changes; see the full report for all findings. 1. cli — No explicit risk acceptance foundFor
Review details
Advisory review; publication gates are unchanged. |
This branch has not been deployed
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
The gateway now merges
*.tomlfragments from a drop-in directory over its base config file, so operators and test harnesses can customize a package-seededgateway.tomlwithout editing it. Test environments use the same mechanism instead of a merge script.Related Issue
Closes #5446
Changes
load_layeredinconfig_file.rs: load the base file and the fragments, merge them in lexical order, and validate the merged result once. Tables merge key by key; scalars and arrays replace. A fragment can omit[openshell] version; the merged result must declare it.--config-dir/OPENSHELL_GATEWAY_CONFIG_DIR. Without them, the gateway usesgateway.d/next to the base file when it exists. An explicit directory must exist.--configand--config-dircompose rather than exclude each other, as in CRI-O and kubelet.config preflightload the same merged result, list the files it merged, and fail on the same errors as startup. A legacy schema version still reports its version, not an unknown-field error.configuration.mdx, the RPM guide and the man page.gateway.d/90-test-overrides.tomland removemerge-gateway-toml.pyand its tests.Not covered: the Helm ConfigMap and Secret mapping from the issue's open questions, and the
config preflightusage line in the man page, which does not yet list--config-dir. The e2e additional-CA overrides still edit the base file, becausee2e/rust/tests/additional_ca.rsrewrites it in place.Release Notes
Gateway configuration can be split across a base
gateway.tomland*.tomlfragments ingateway.d/. Later fragments override earlier ones, andconfig preflightreports the merged result.Testing
cargo clippy -p openshell-server --all-targetsis clean and theopenshell-serverlib tests pass (2686 tests); the pre-commit lint hook passed.Checklist