Repository navigation
Conversation
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.
This PR converts all the remaining providers to use SupportedTypes instead of capabilities.CanUseTYPENAME. Old code (validate and the generators) are converted to use new data structures.
The default for a capability is now Cannot(). This makes nearly every provider's doc update. That's intentional. All the "Unknowns" look bad, because they're usually "Cannot". Now if something is truly Unimplemented, we have a more visible place to list that.
Details...
Every built-in provider now declares its managed record types in
Definition.SupportedTypes. Validation rejects unsupported records before they reach provider APIs, including basic types that previously passed implicitly and proprietary pseudo-types sent to an unrelated provider.This is Stage 6, based on Stage 5 (#4967). Retarget after that PR merges.
Changes
DefaulttoBasic8in declarations, resolution, tests, and documentation. Membership stays A, AAAA, CAA, CNAME, MX, NS, SRV, TXT; the old selector name is rejected.Features.CanOnlyDiff1Features, the custom-record registration/lookup APIs and registry, and the obsolete metadata marker/type-rewrite path. The parser catalog recognizes types;SupportedTypescontrols provider compatibility.privatetypes.Registerremains.URL/URL301support for Namecheap and Porkbun, Cloudflare's worker/redirect types, and other provider pseudo-types. Use the catalog spellingNETLIFYV6.IMPORT_TRANSFORMas a deferred configuration command, outside the provider record catalog andSupportedTypes. It works for every provider. Normalization consumes it before provider auditing and checks the copied records against each provider's declaration. The eight-typeBasic8stays unchanged.Support review
Existing advertised advanced record support and annotations are preserved. Unspecified CAA/SRV flags are not promoted to support through
Basic8. The following exceptions reflect existing auditors or read/write paths:These NS declarations describe child delegations; injected provider-owned apex nameservers are separate. DNSimple retains child NS support.
General DS support now implies child support for migrated providers, correcting Hetzner's contradictory child-only flag. NONE no longer inherits CAA/SRV support. Exhaustive declarations turn previously unspecified record capabilities into
Cannot, accounting for most generated documentation changes.The project plan records a separate future concurrency change: default concurrency on, with
ConcurBroken: trueonly for providers that cannot run concurrently. This PR preserves current concurrency behavior.Validation
go test ./...passes across 116 package results.bin/generate-all.shpasses, including generation, module tidy,go fix, golangci-lint (0 issues), and staticcheck.git diff --checkpasses.