Repository navigation
Refuse a Domain without upstream before domains.yml changes any server - #129
Merged
Merged
Conversation
Contributor
Author
|
@romamo Decided without waiting: the early Why: your answer on #90 asks the playbook to fail before any change for a Domain bound for Reply with a comment starting with |
proxy.upstream stays optional in the schema and the model, since a fleet may route a Domain with its own proxy. domains.yml now checks every Domain of the run in a play before the serial one and fails naming each Domain without an upstream, so no server converges first. The site role's assert stays as a backstop. Part of #90 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The early upstream check now applies the render loop's filter on cloudfall_domains_domain_id, so a one-Domain run of a valid Domain is not refused for another Domain without upstream on the same server. The refusal reads 'Domain x has' for one Domain. test_domains_one_domain finds the render play by name, since it is no longer the first play. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
shipmill-romamo
Bot
force-pushed
the
fix/90-domain-upstream-early
branch
from
October 27, 2026 08:49
70d8947 to
df20c0b
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
proxy.upstreamstays optional in the Domain schema and the SDK model (atlas-fleet'sold-civic-clubleaves it out on purpose), as decided on #90 (option 1).domains.ymlnow opens with a play across every host of the run, without fact gathering and withany_errors_fatal, whoserun_onceassert collects thecloudfall_domainsof all play hosts and fails naming each Domain withoutproxy.upstream(sorted, all of them). It runs before theserial: 1play, so no server is contacted or converged on a refused run. Domains that render behave as before; the role's own assert stays as a backstop.Part of #90
Test notes
engine/tests/test_domains_playbook.pyruns the real playbook through the engine'splaybook_commandagainst hosts on TEST-NET-1 (they never answer): with two Domains lackingupstreamon the second server, the run fails namingbare-one, bare-two(and no valid Domain), with no UNREACHABLE and no fact gathering, so no host was contacted; with valid Domains it passes the check and reaches the hostsruff check .,mypy, the domains.yml syntax check,cloudfall config validate --project config/examples, the new tests (the first failed before the playbook change)ansible-lint engine/ansiblereported nothing on domains.yml; locally it ran without CI'sANSIBLE_CONFIG, so it flagged unresolved role paths in other playbooks only. CI runs it with the configPlan
Serves: quality bar
Files: engine/ansible/playbooks/domains.yml, engine/tests/test_domains_playbook.py, engine/README.md, changelog.d/90-domain-upstream-early.md
Order: the failing playbook test first, then the check play in domains.yml, then the README note and the changelog fragment
Proof: test_a_domain_without_upstream_stops_the_run_before_any_server fails on main and passes here; test_domains_that_render_pass_the_check_and_reach_their_servers passes on both
🤖 Generated with Claude Code