Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(registry): support all "managed" record types #4342

Conversation

haslersn
Copy link

@haslersn haslersn commented Mar 27, 2024

Previously, the registry only supported certain hard-coded record types (A, AAAA, CNAME, NS). With this commit, we instead take the list of types given via --managed-record-types. That means the default now is A, AAAA, CNAME (i.e., NS is no longer included), but I don't think this is a breaking change, because any changes to records that aren't "managed" are filtered out at a later point anyway.

Now other record types (such as TXT) can also be handled by the TXT registry.

I have tested this by creating a DNSEndpoint with TXT targets and then deleting the DNSEndpoint again. The record and heritage record are correctly created and deleted.

Description

Fixes #ISSUE

Checklist

  • Unit tests updated
  • End user documentation updated

@k8s-ci-robot k8s-ci-robot added the cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. label Mar 27, 2024
@k8s-ci-robot
Copy link
Contributor

Welcome @haslersn!

It looks like this is your first PR to kubernetes-sigs/external-dns 🎉. Please refer to our pull request process documentation to help your PR have a smooth ride to approval.

You will be prompted by a bot to use commands during the review process. Do not be afraid to follow the prompts! It is okay to experiment. Here is the bot commands documentation.

You can also check if kubernetes-sigs/external-dns has its own contribution guidelines.

You may want to refer to our testing guide if you run into trouble with your tests not passing.

If you are having difficulty getting your pull request seen, please follow the recommended escalation practices. Also, for tips and tricks in the contribution process you may want to read the Kubernetes contributor cheat sheet. We want to make sure your contribution gets all the attention it needs!

Thank you, and welcome to Kubernetes. 😃

@k8s-ci-robot
Copy link
Contributor

Hi @haslersn. Thanks for your PR.

I'm waiting for a kubernetes-sigs member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work. Regular contributors should join the org to skip this step.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes/test-infra repository.

@k8s-ci-robot k8s-ci-robot added needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Mar 27, 2024
@haslersn haslersn force-pushed the txt-support-managed-record-types branch from 13c98b7 to 3e1eb24 Compare March 27, 2024 19:56
@mloiseleur
Copy link
Contributor

Thanks for this PR @haslersn !
Wdyt about adding some documentation on registries about this ?

@mloiseleur
Copy link
Contributor

/ok-to-test

@k8s-ci-robot k8s-ci-robot added ok-to-test Indicates a non-member PR verified by an org member that is safe to test. and removed needs-ok-to-test Indicates a PR that requires an org member to verify it is safe to test. labels Apr 5, 2024
@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle stale
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle stale

@k8s-ci-robot k8s-ci-robot added the lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. label Jul 4, 2024
@haslersn haslersn force-pushed the txt-support-managed-record-types branch from 3e1eb24 to 04701a3 Compare July 29, 2024 08:29
@k8s-ci-robot k8s-ci-robot added size/M Denotes a PR that changes 30-99 lines, ignoring generated files. and removed size/S Denotes a PR that changes 10-29 lines, ignoring generated files. labels Jul 29, 2024
@haslersn
Copy link
Author

@mloiseleur

Wdyt about adding some documentation on registries about this ?

I don't really know what to write there. The --managed-record-types option in the first place has nothing to do with the registry. It specifies the record types which external DNS can create.

It is expected that the registry supports all records that are created by external-dns, but currently this is not the case. Seen from this angle, this PR is simply a bug fix that establishes expected behavior.

In the registry documentation I could add something like: “The registry persists metadata for DNS records of those types specified by --managed-record-types”. But that could be confusing and could lead people to think that they now have to specify --managed-record-types, even though the default works for most people.

Therefore, I now just added „A registry persists metadata for all DNS records created by external-dns“, which is an equivalent statement, because external-dns will not create records of types not specified in --managed-record-types, anyway.

@haslersn haslersn force-pushed the txt-support-managed-record-types branch 5 times, most recently from 9033122 to b119ea1 Compare July 31, 2024 20:59
@k8s-ci-robot k8s-ci-robot added size/L Denotes a PR that changes 100-499 lines, ignoring generated files. and removed size/M Denotes a PR that changes 30-99 lines, ignoring generated files. labels Jul 31, 2024
@k8s-ci-robot k8s-ci-robot added the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 15, 2024
@haslersn haslersn force-pushed the txt-support-managed-record-types branch from b119ea1 to e637fe1 Compare August 15, 2024 07:19
@k8s-ci-robot
Copy link
Contributor

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign raffo for approval. For more information see the Kubernetes Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@k8s-ci-robot k8s-ci-robot removed the needs-rebase Indicates a PR cannot be merged because it has merge conflicts with HEAD. label Aug 15, 2024
@haslersn haslersn force-pushed the txt-support-managed-record-types branch 3 times, most recently from a2e82c1 to 3721e75 Compare August 15, 2024 14:08
@haslersn
Copy link
Author

@mloiseleur PTAL

registry/txt.go Outdated Show resolved Hide resolved
registry/txt.go Outdated
}

// extractRecordTypeDefaultPosition extracts record type from the default position
// when not using '%{record_type}' in the prefix/suffix
func extractRecordTypeDefaultPosition(name string) (baseName, recordType string) {
func (pr affixNameMapper) extractRecordTypeDefaultPosition(name string) (baseName, recordType string) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
func (pr affixNameMapper) extractRecordTypeDefaultPosition(name string) (baseName, recordType string) {
func (anm affixNameMapper) extractRecordTypeDefaultPosition(name string) (baseName, recordType string) {

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well, affixNameMapper already has a lot of methods and all of them use the identifier pr.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's true. It does not make sense too. It's like im for TXTRegistry.

Copy link
Author

@haslersn haslersn Aug 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Shall I change it everywhere (in a separate commit)?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That would be great, yes 👍

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done

@mloiseleur
Copy link
Contributor

I get your point for the documentation. It makes sense.

Previously, the registry only supported certain hard-coded record
types (A, AAAA, CNAME, NS). With this commit, we instead take the
list of types given via --managed-record-types. That means the
default now is A, AAAA, CNAME (i.e., NS is no longer included),
but I don't think this is a breaking change, because any changes
to records that aren't "managed" are filtered out at a later point
anyway.

Now other record types (such as TXT) can also be handled by the
TXT registry.

I have tested this by creating a DNSEndpoint with TXT targets and
then deleting the DNSEndpoint again. The record and heritage
record are correctly created and deleted.

Signed-off-by: Sebastian Hasler <[email protected]>
@haslersn haslersn force-pushed the txt-support-managed-record-types branch from 3721e75 to 84cc10e Compare August 19, 2024 13:10
@haslersn haslersn force-pushed the txt-support-managed-record-types branch from d429855 to 684addd Compare August 19, 2024 14:10
@mloiseleur
Copy link
Contributor

/lgtm

@k8s-ci-robot k8s-ci-robot added the lgtm "Looks good to me", indicates that a PR is ready to be merged. label Aug 19, 2024
@haslersn
Copy link
Author

@johngmyers according to the robot, you are requested as a second reviewer. Can you take a look, please?

@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Mark this PR as fresh with /remove-lifecycle rotten
  • Close this PR with /close
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/lifecycle rotten

@k8s-ci-robot k8s-ci-robot added lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. and removed lifecycle/stale Denotes an issue or PR has remained open with no activity and has become stale. labels Sep 24, 2024
@haslersn
Copy link
Author

This should be merged, since it fixes a bug.

@johngmyers @mloiseleur

@haslersn
Copy link
Author

haslersn commented Oct 8, 2024

@szuecs can you take a look at this one? (Pinging you, because you have reviewed external-dns PRs in the past.)

@k8s-triage-robot
Copy link

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Reopen this PR with /reopen
  • Mark this PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

@k8s-ci-robot
Copy link
Contributor

@k8s-triage-robot: Closed this PR.

In response to this:

The Kubernetes project currently lacks enough active contributors to adequately respond to all issues and PRs.

This bot triages PRs according to the following rules:

  • After 90d of inactivity, lifecycle/stale is applied
  • After 30d of inactivity since lifecycle/stale was applied, lifecycle/rotten is applied
  • After 30d of inactivity since lifecycle/rotten was applied, the PR is closed

You can:

  • Reopen this PR with /reopen
  • Mark this PR as fresh with /remove-lifecycle rotten
  • Offer to help out with Issue Triage

Please send feedback to sig-contributor-experience at kubernetes/community.

/close

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. lgtm "Looks good to me", indicates that a PR is ready to be merged. lifecycle/rotten Denotes an issue or PR that has aged beyond stale and will be auto-closed. ok-to-test Indicates a non-member PR verified by an org member that is safe to test. size/L Denotes a PR that changes 100-499 lines, ignoring generated files.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants