providers/cloudflare: record can manage apex records
Apex records must be created by specifying "@" as the name, but this caused Refresh and Delete errors.
This commit is contained in:
parent
cf0b2644a3
commit
a7311fa68f
|
@ -3,7 +3,6 @@ package cloudflare
|
|||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"golang.org/x/net/context"
|
||||
|
@ -115,11 +114,12 @@ func resourceCloudFlareRecordCreate(d *schema.ResourceData, meta interface{}) er
|
|||
}
|
||||
|
||||
func resourceCloudFlareRecordRead(d *schema.ResourceData, meta interface{}) error {
|
||||
var (
|
||||
client = meta.(*cloudflare.Client)
|
||||
domain = d.Get("domain").(string)
|
||||
rName = strings.Join([]string{d.Get("name").(string), domain}, ".")
|
||||
)
|
||||
client := meta.(*cloudflare.Client)
|
||||
domain := d.Get("domain").(string)
|
||||
rName := domain
|
||||
if v := d.Get("name").(string); v != "@" {
|
||||
rName = v + "." + rName
|
||||
}
|
||||
|
||||
zone, err := retrieveZone(client, domain)
|
||||
if err != nil {
|
||||
|
@ -187,11 +187,12 @@ func resourceCloudFlareRecordUpdate(d *schema.ResourceData, meta interface{}) er
|
|||
}
|
||||
|
||||
func resourceCloudFlareRecordDelete(d *schema.ResourceData, meta interface{}) error {
|
||||
var (
|
||||
client = meta.(*cloudflare.Client)
|
||||
domain = d.Get("domain").(string)
|
||||
rName = strings.Join([]string{d.Get("name").(string), domain}, ".")
|
||||
)
|
||||
client := meta.(*cloudflare.Client)
|
||||
domain := d.Get("domain").(string)
|
||||
rName := domain
|
||||
if v := d.Get("name").(string); v != "@" {
|
||||
rName = v + "." + rName
|
||||
}
|
||||
|
||||
zone, err := retrieveZone(client, domain)
|
||||
if err != nil {
|
||||
|
@ -218,8 +219,7 @@ func resourceCloudFlareRecordDelete(d *schema.ResourceData, meta interface{}) er
|
|||
func retrieveRecord(
|
||||
client *cloudflare.Client,
|
||||
zone *cloudflare.Zone,
|
||||
name string,
|
||||
) (*cloudflare.Record, error) {
|
||||
name string) (*cloudflare.Record, error) {
|
||||
ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*30))
|
||||
|
||||
rs, err := client.Records.List(ctx, zone.ID)
|
||||
|
|
|
@ -39,6 +39,32 @@ func TestAccCloudFlareRecord_Basic(t *testing.T) {
|
|||
})
|
||||
}
|
||||
|
||||
func TestAccCloudFlareRecord_Apex(t *testing.T) {
|
||||
var record cloudflare.Record
|
||||
domain := os.Getenv("CLOUDFLARE_DOMAIN")
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
CheckDestroy: testAccCheckCloudFlareRecordDestroy,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: fmt.Sprintf(testAccCheckCloudFlareRecordConfigApex, domain),
|
||||
Check: resource.ComposeTestCheckFunc(
|
||||
testAccCheckCloudFlareRecordExists("cloudflare_record.foobar", &record),
|
||||
testAccCheckCloudFlareRecordAttributes(&record),
|
||||
resource.TestCheckResourceAttr(
|
||||
"cloudflare_record.foobar", "name", "@"),
|
||||
resource.TestCheckResourceAttr(
|
||||
"cloudflare_record.foobar", "domain", domain),
|
||||
resource.TestCheckResourceAttr(
|
||||
"cloudflare_record.foobar", "value", "192.168.0.10"),
|
||||
),
|
||||
},
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
func TestAccCloudFlareRecord_Proxied(t *testing.T) {
|
||||
var record cloudflare.Record
|
||||
domain := os.Getenv("CLOUDFLARE_DOMAIN")
|
||||
|
@ -226,6 +252,15 @@ resource "cloudflare_record" "foobar" {
|
|||
ttl = 3600
|
||||
}`
|
||||
|
||||
const testAccCheckCloudFlareRecordConfigApex = `
|
||||
resource "cloudflare_record" "foobar" {
|
||||
domain = "%s"
|
||||
name = "@"
|
||||
value = "192.168.0.10"
|
||||
type = "A"
|
||||
ttl = 3600
|
||||
}`
|
||||
|
||||
const testAccCheckCloudFlareRecordConfigProxied = `
|
||||
resource "cloudflare_record" "foobar" {
|
||||
domain = "%s"
|
||||
|
|
Loading…
Reference in New Issue