fix(cloudflare): improve zone adoption and settings idempotency#1149
Open
agcty wants to merge 1 commit intoalchemy-run:mainfrom
Open
fix(cloudflare): improve zone adoption and settings idempotency#1149agcty wants to merge 1 commit intoalchemy-run:mainfrom
agcty wants to merge 1 commit intoalchemy-run:mainfrom
Conversation
sam-goodwin
reviewed
Oct 22, 2025
| // Some settings may be read-only or already in the desired state | ||
| if ( | ||
| data.includes("already enabled") || | ||
| data.includes("cannot be changed") |
Collaborator
There was a problem hiding this comment.
What settings where causing "cannot be changed"? We need some tests to better test this.
Collaborator
|
hey @agcty im a little confused what's happening here. Can you clarify the actual issue and provide a repro where it breaks (even just a gist where you outline what the settings are in the dashboard that can't be properly adopted). |
Author
|
@Mkassabov Some settings make the creation/update throw, e.g the http2 setting for an already existing zone: export const zone = await Zone("zone", {
name: "example.com",
type: "full",
delete: false,
settings: {
// will error
http2: "on"
},
})Errors with something like can't change setting or something which basically makes the http2 setting unusable, I think alternatively it could also be considered to remove the http2 setting entirely. |
Collaborator
|
@agcty will take a look at this today and try and repro |
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.
Fixes zone adoption failures when setting values that are already at the desired state.
Previously, adopting an existing zone with default settings (like
http2: "on") would failwith a
400 Bad Requesterror from Cloudflare's API.Problem
When adopting an existing Cloudflare zone, updating settings would fail if:
This particularly affected settings like
http2,http3,ipv6, etc. which default to"on".Example error:
Failed to update zone setting http2: Bad Request
Solution
Implemented proper idempotency for zone settings updates:
updates
This follows IaC best practices (similar to Terraform/Pulumi) by:
Testing
Manually tested with real Cloudflare zone containing default settings. Zone adoption now
succeeds and re-running with identical settings is idempotent.
Note: Automated testing is challenging because zone creation requires actual domain
ownership. The existing test suite requires access to
.devdomains which need registrationand verification. Future work could improve the test infrastructure for zone resources.
Code snippet
The fix enables this pattern to work reliably: