Find overrides of variables with names in their dots #1048
Closed
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.
Variables in policy templates can have dots in their names. This names are defined as plain strings in yaml files. For example like this:
These variables can be overridden in system tests configuration files, for example like this:
These configuration files are parsed with go-ucfg, configured to use
.as path separator, so variable names containing dots are expanded. Also, when parsed, they are parsed into an opaqueVarVariablestructure, so it is not possible to access their content, so overrides cannot be defined for variables with dots in their names.This happens for example in elastic/integrations#4706.
This issue could be easily solved if
ucfgwould supportpreserveas defined in elastic/go-ucfg#124.This change introduces a hacky workaround to give access to child elements, so they can be also used for overrides.
Alternatives considered:
preserveas defined in Control Structure on unpack go-ucfg#124. Probably a rabbit hole.common.MapStrinstead ofmap[string]VarValue, and generate theVarValues later. This could be cleaner, but require some refactors. I may give it a try though.