Skip to content

openstack: document how overlays are matched and merged - #1042

Merged
berendt merged 2 commits into
mainfrom
doc-gap-overlay-exact-names
Aug 31, 2026
Merged

berendt merged 2 commits into
mainfrom
doc-gap-overlay-exact-names

Conversation

@ideaship

@ideaship ideaship commented Jul 27, 2026

Copy link
Copy Markdown
Contributor

What

Two gaps in how the OpenStack configuration guide explains overlays.

  1. Overlay files are matched by exact name and exact path. A file matching none of the supported locations is silently ignored.
  2. An overlay does not replace the file OSISM generates. The two are merged key by key, so an overlay holds only the settings being changed.

Why

Exact matching. The section lists which locations are searched, but not what happens when a file matches none of them. Nothing does: the file is not read, no warning is emitted, and the deployment succeeds while the settings have no effect. Operators get no signal distinguishing "my override was applied" from "my override was ignored", and near-miss names look plausible.

Merging. The section never says what happens to the keys an overlay does not set. It shows single-option examples, which implies a merge, but the only sentence naming the mechanism sits near the end and its job there is to introduce the exception — ending on "In these cases OSISM supports overriding the entire config file". That is the sole occurrence of "entire config file" in the section, so a reader scanning for the rule can come away believing an overlay must be a full drop-in replacement.

That reading is not hypothetical: it came up in review of the neutron change stacked on top of this one, where a two-line [ovn] overlay was read as requiring a maintained copy of the whole generated file.

How

  • Adds the exact-name/exact-path warning next to the existing description of the supported locations, with the two near-miss cases seen in the wild, and suggests confirming the setting arrived by checking /etc/kolla/SERVICENAME/ rather than assuming.
  • States the merge rule before the first example, where it is needed, instead of leaving it to be inferred from them.
  • Rewords the closing sentence so whole-file replacement reads as what it is — the exception for INI files that cannot be merged — rather than as something offered alongside merging.

Markdown-only changes to an existing page; yarn build has not been run locally.

Related

Bottom of a two-PR stack. The neutron change on top cross-references the section this PR repairs, so this one merges first:

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Jul 27, 2026

Copy link
Copy Markdown

⚠️MegaLinter analysis: Success with warnings

Descriptor Linter Files Fixed Errors Max errors Warnings Elapsed time
✅ ACTION actionlint 5 0 0 0.03s
✅ JSON jsonlint 4 0 0 0.07s
✅ JSON prettier 4 0 0 0.43s
✅ JSON v8r 4 0 0 6.77s
✅ MARKDOWN markdownlint 169 0 0 1.95s
✅ MARKDOWN markdown-table-formatter 169 0 0 0.3s
✅ REPOSITORY betterleaks yes no no 0.63s
✅ REPOSITORY checkov yes no no 16.89s
✅ REPOSITORY git_diff yes no no 0.07s
✅ REPOSITORY secretlint yes no no 3.06s
✅ REPOSITORY trufflehog yes no no 3.04s
✅ SPELL codespell 179 0 0 0.52s
⚠️ SPELL lychee 179 3 0 26.92s
✅ YAML prettier 6 0 0 0.29s
✅ YAML v8r 6 0 0 6.48s
✅ YAML yamllint 6 0 0 0.47s

Detailed Issues

⚠️ SPELL / lychee - 3 errors
📝 Summary
---------------------
🔍 Total.........1099
🔗 Unique.........833
✅ Successful....1023
⏳ Timeouts.........0
🔀 Redirected.......5
👻 Excluded........73
❓ Unknown..........0
🚫 Errors...........3
⛔ Unsupported......3

Errors in docs/guides/deploy-guide/services/openstack.md
[ERROR] https://www.openstack.org/software/project-navigator/openstack-components#openstack-services (at 14:5) | Connection failed. Check network connectivity and firewall settings

Errors in docs/release-notes/osism-7.md
[ERROR] https://www.openstack.org/software/openstack-bobcat (at 978:38) | Connection failed. Check network connectivity and firewall settings

Errors in docs/release-notes/osism-8.md
[ERROR] https://www.openstack.org/software/openstack-caracal (at 223:38) | Connection failed. Check network connectivity and firewall settings

Hint: Followed 5 redirects. You might want to consider replacing redirecting URLs with the resolved URLs. Use verbose mode (`-v`/`-vv`) to see redirection details.

See detailed reports in MegaLinter artifacts

Your project could benefit from a custom flavor, which would allow you to run only the linters you need, and thus improve runtime performances. (Skip this info by defining FLAVOR_SUGGESTIONS: false)

  • Documentation: Custom Flavors
  • Command: npx mega-linter-runner@10.0.0 --custom-flavor-setup --custom-flavor-linters ACTION_ACTIONLINT,JSON_JSONLINT,JSON_V8R,JSON_PRETTIER,MARKDOWN_MARKDOWNLINT,MARKDOWN_MARKDOWN_TABLE_FORMATTER,REPOSITORY_CHECKOV,REPOSITORY_GIT_DIFF,REPOSITORY_BETTERLEAKS,REPOSITORY_SECRETLINT,REPOSITORY_TRUFFLEHOG,SPELL_LYCHEE,SPELL_CODESPELL,YAML_PRETTIER,YAML_YAMLLINT,YAML_V8R

MegaLinter is provided by OX Security
Show us your support by starring ⭐ the repository

@berendt berendt moved this from New to In progress in Human Board Aug 3, 2026
@ideaship ideaship changed the title openstack: warn that overlays match by exact name openstack: document how overlays are matched and merged Aug 30, 2026
The overlay section explains which locations are searched, but not what
happens when a file does not match one of them. Nothing does: the file is
not read, no warning is emitted, and the deployment succeeds while the
settings have no effect. Operators therefore have no signal distinguishing
"my override was applied" from "my override was ignored", and the failure is
easy to hit because near-miss names look plausible.

Both examples given are ones seen in the wild: an ml2_conf.ini placed at the
overlays top level instead of under neutron/, and a neutron/ml2.conf that is
simply a misspelling of ml2_conf.ini. In both cases the DNS and MTU settings
they contained silently did nothing.

Add a warning admonition next to the existing description of the supported
locations, and suggest verifying the rendered configuration under
/etc/kolla/SERVICENAME/ rather than assuming the overlay took effect.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Roger Luethi <luethi@osism.tech>
The customization section never says what happens to the keys an overlay
does not set. It shows single-option examples, which implies a merge, but
the only sentence that names the mechanism is near the end and reads
"This method of merging configuration sections is supported for all
services using oslo.config" -- and its job there is to introduce the
exception, ending on "In these cases OSISM supports overriding the entire
config file". That is the sole occurrence of "entire config file" in the
section, so a reader scanning for the rule can come away believing an
overlay has to be a full drop-in replacement of the generated file.

That reading is not hypothetical. It came up on review of a change that
documents a two-line [ovn] overlay for neutron, from someone who knows
the codebase well: the worry was that setting one key would mean
maintaining a copy of the whole file and losing the generated values.

Say it plainly and up front instead, before the first example, so the
rule is stated where it is needed rather than inferred from the examples.
Kolla merges the role template and the overlay through merge_configs, key
by key, so an overlay carries only the settings being changed.

Reword the closing sentence as well, so whole-file replacement reads as
what it is -- the exception for INI files that cannot be merged -- rather
than as something OSISM offers alongside merging.

Assisted-by: Claude:claude-opus-5
Signed-off-by: Roger Luethi <luethi@osism.tech>
@ideaship
ideaship force-pushed the doc-gap-overlay-exact-names branch from e886970 to 8aa4725 Compare August 30, 2026 11:29
@ideaship ideaship moved this from In progress to Ready for review in Human Board Aug 30, 2026
@ideaship
ideaship marked this pull request as ready for review August 30, 2026 11:33
@berendt
berendt merged commit f84f568 into main Aug 31, 2026
3 checks passed
@berendt
berendt deleted the doc-gap-overlay-exact-names branch August 31, 2026 07:44
@github-project-automation github-project-automation Bot moved this from Ready for review to Done in Human Board Aug 31, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

3 participants