n3integration/terraform-provider-godaddy

CAA is not supported

kzapolski opened this issue · 10 comments

Importing works fine, but when after that trying plan it fails with:

Error: type must be one of: [A AAAA CNAME MX NS SOA TXT]

I think the problem is with GoDaddy API DNSRecord here https://developer.godaddy.com/doc/endpoint/domains#/

type* : string
    Enum:[ A, AAAA, CNAME, MX, NS, SOA, SRV, TXT ]

@kzapolski / @Nenzyz - could you confirm whether or not this behavior is still occurring for you with the latest release?

Sorry but I can't confirm nor decline.
I made my own version of the plugin with CAA included and it was working fine.
The issue is that plugin or better say Godaddy API is so unusable, you have to specify the whole zone in order to not overwrite what is not mentioned.
There is no possibility to use "count" on records so I gave up using it and just doing manual updates.
My fork of repository has all necessary changes.

conet commented

I'm still seeing this in 1.7.1

conet commented

Steps to reproduce:

  1. Define a CAA record for a domain
  2. Import that domain
  3. The plugin becomes unusable
conet commented

You might want to add this patch.

Hey @conet - thanks for the report. @Nenzyz, thanks for the patch. 🙏

@n3integration you are welcome, keep in mind as long as CAA is not allowed to be changed, it should be added to isDisallowed(.., ..) list. It is in the patch also.

conet commented

Without adding CAA to the isDisallowed list, this error is encountered when applying:

Error: [422:INVALID_BODY] Request body doesn't fulfill schema, see details in `fields` (records[0].type [INVALID_VALUE]: is not one of enum values: "A", "AAAA", "CNAME", "MX", "NS", "SRV", "TXT")
conet commented

Also because of the way the API works and the resource declaration models this (there is no API to delete one record) it would be nice if only real differences could be shown when deleting a record from the middle of the list of records.