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 (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
"strings"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"golang.org/x/net/context"
|
"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 {
|
func resourceCloudFlareRecordRead(d *schema.ResourceData, meta interface{}) error {
|
||||||
var (
|
client := meta.(*cloudflare.Client)
|
||||||
client = meta.(*cloudflare.Client)
|
domain := d.Get("domain").(string)
|
||||||
domain = d.Get("domain").(string)
|
rName := domain
|
||||||
rName = strings.Join([]string{d.Get("name").(string), domain}, ".")
|
if v := d.Get("name").(string); v != "@" {
|
||||||
)
|
rName = v + "." + rName
|
||||||
|
}
|
||||||
|
|
||||||
zone, err := retrieveZone(client, domain)
|
zone, err := retrieveZone(client, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -187,11 +187,12 @@ func resourceCloudFlareRecordUpdate(d *schema.ResourceData, meta interface{}) er
|
||||||
}
|
}
|
||||||
|
|
||||||
func resourceCloudFlareRecordDelete(d *schema.ResourceData, meta interface{}) error {
|
func resourceCloudFlareRecordDelete(d *schema.ResourceData, meta interface{}) error {
|
||||||
var (
|
client := meta.(*cloudflare.Client)
|
||||||
client = meta.(*cloudflare.Client)
|
domain := d.Get("domain").(string)
|
||||||
domain = d.Get("domain").(string)
|
rName := domain
|
||||||
rName = strings.Join([]string{d.Get("name").(string), domain}, ".")
|
if v := d.Get("name").(string); v != "@" {
|
||||||
)
|
rName = v + "." + rName
|
||||||
|
}
|
||||||
|
|
||||||
zone, err := retrieveZone(client, domain)
|
zone, err := retrieveZone(client, domain)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -218,8 +219,7 @@ func resourceCloudFlareRecordDelete(d *schema.ResourceData, meta interface{}) er
|
||||||
func retrieveRecord(
|
func retrieveRecord(
|
||||||
client *cloudflare.Client,
|
client *cloudflare.Client,
|
||||||
zone *cloudflare.Zone,
|
zone *cloudflare.Zone,
|
||||||
name string,
|
name string) (*cloudflare.Record, error) {
|
||||||
) (*cloudflare.Record, error) {
|
|
||||||
ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*30))
|
ctx, _ := context.WithDeadline(context.Background(), time.Now().Add(time.Second*30))
|
||||||
|
|
||||||
rs, err := client.Records.List(ctx, zone.ID)
|
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) {
|
func TestAccCloudFlareRecord_Proxied(t *testing.T) {
|
||||||
var record cloudflare.Record
|
var record cloudflare.Record
|
||||||
domain := os.Getenv("CLOUDFLARE_DOMAIN")
|
domain := os.Getenv("CLOUDFLARE_DOMAIN")
|
||||||
|
@ -226,6 +252,15 @@ resource "cloudflare_record" "foobar" {
|
||||||
ttl = 3600
|
ttl = 3600
|
||||||
}`
|
}`
|
||||||
|
|
||||||
|
const testAccCheckCloudFlareRecordConfigApex = `
|
||||||
|
resource "cloudflare_record" "foobar" {
|
||||||
|
domain = "%s"
|
||||||
|
name = "@"
|
||||||
|
value = "192.168.0.10"
|
||||||
|
type = "A"
|
||||||
|
ttl = 3600
|
||||||
|
}`
|
||||||
|
|
||||||
const testAccCheckCloudFlareRecordConfigProxied = `
|
const testAccCheckCloudFlareRecordConfigProxied = `
|
||||||
resource "cloudflare_record" "foobar" {
|
resource "cloudflare_record" "foobar" {
|
||||||
domain = "%s"
|
domain = "%s"
|
||||||
|
|
Loading…
Reference in New Issue