Skip to content

Commit

Permalink
Add import support to dns_record_set.
Browse files Browse the repository at this point in the history
  • Loading branch information
rosbo committed Dec 22, 2017
1 parent b55a42c commit 5a9d544
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 56 deletions.
33 changes: 0 additions & 33 deletions google/import_dns_record_set_test.go

This file was deleted.

16 changes: 9 additions & 7 deletions google/resource_dns_record_set.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,16 @@ func resourceDnsRecordSetCreate(d *schema.ResourceData, meta interface{}) error
return err
}

name := d.Get("name").(string)
zone := d.Get("managed_zone").(string)
rType := d.Get("type").(string)

// Build the change
chg := &dns.Change{
Additions: []*dns.ResourceRecordSet{
&dns.ResourceRecordSet{
Name: d.Get("name").(string),
Type: d.Get("type").(string),
Name: name,
Type: rType,
Ttl: int64(d.Get("ttl").(int)),
Rrdatas: rrdata(d),
},
Expand All @@ -90,7 +92,7 @@ func resourceDnsRecordSetCreate(d *schema.ResourceData, meta interface{}) error
// We also can't just remove the NS recordsets on creation, as at
// least one is required. So the solution is to "update in place" by
// putting the addition and the removal in the same API call.
if d.Get("type").(string) == "NS" {
if rType == "NS" {
log.Printf("[DEBUG] DNS record list request for %q", zone)
res, err := config.clientDns.ResourceRecordSets.List(project, zone).Do()
if err != nil {
Expand All @@ -99,7 +101,7 @@ func resourceDnsRecordSetCreate(d *schema.ResourceData, meta interface{}) error
var deletions []*dns.ResourceRecordSet

for _, record := range res.Rrsets {
if record.Type != "NS" || record.Name != d.Get("name").(string) {
if record.Type != "NS" || record.Name != name {
continue
}
deletions = append(deletions, record)
Expand All @@ -115,7 +117,7 @@ func resourceDnsRecordSetCreate(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error creating DNS RecordSet: %s", err)
}

d.SetId(chg.Id)
d.SetId(fmt.Sprintf("%s/%s/%s", zone, name, rType))

w := &DnsChangeWaiter{
Service: config.clientDns,
Expand Down Expand Up @@ -291,10 +293,10 @@ func resourceDnsRecordSetUpdate(d *schema.ResourceData, meta interface{}) error
return resourceDnsRecordSetRead(d, meta)
}

func resourceDnsRecordSetImportState(d *schema.ResourceData, meta interface{}) ([]*schema.ResourceData, error) {
func resourceDnsRecordSetImportState(d *schema.ResourceData, _ interface{}) ([]*schema.ResourceData, error) {
parts := strings.Split(d.Id(), "/")
if len(parts) != 3 {
return nil, fmt.Errorf("Invalid dns record specifier. Expecting {project}/{zone name}/{record name}/{record type}")
return nil, fmt.Errorf("Invalid dns record specifier. Expecting {zone-name}/{record-set-name}/{record-type}")
}

d.Set("managed_zone", parts[0])
Expand Down
41 changes: 25 additions & 16 deletions google/resource_dns_record_set_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,48 +12,56 @@ import (
func TestAccDnsRecordSet_basic(t *testing.T) {
t.Parallel()

zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10))
zoneName := acctest.RandomWithPrefix("dnszone-test")
recordName := acctest.RandomWithPrefix("record-test")
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckDnsRecordSetDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300),
Config: testAccDnsRecordSet_basic(zoneName, recordName, "127.0.0.10", 300),
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordSetExists(
"google_dns_record_set.foobar", zoneName),
),
},
resource.TestStep{
ResourceName: "google_dns_record_set.foobar",
ImportStateId: fmt.Sprintf("%s/%s.hashicorptest.com./A", zoneName, recordName),
ImportState: true,
ImportStateVerify: true,
},
},
})
}

func TestAccDnsRecordSet_modify(t *testing.T) {
t.Parallel()

zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10))
zoneName := acctest.RandomWithPrefix("dnszone-test")
recordName := acctest.RandomWithPrefix("record-test")
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckDnsRecordSetDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300),
Config: testAccDnsRecordSet_basic(zoneName, recordName, "127.0.0.10", 300),
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordSetExists(
"google_dns_record_set.foobar", zoneName),
),
},
resource.TestStep{
Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.11", 300),
Config: testAccDnsRecordSet_basic(zoneName, recordName, "127.0.0.11", 300),
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordSetExists(
"google_dns_record_set.foobar", zoneName),
),
},
resource.TestStep{
Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.11", 600),
Config: testAccDnsRecordSet_basic(zoneName, recordName, "127.0.0.11", 600),
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordSetExists(
"google_dns_record_set.foobar", zoneName),
Expand All @@ -66,21 +74,22 @@ func TestAccDnsRecordSet_modify(t *testing.T) {
func TestAccDnsRecordSet_changeType(t *testing.T) {
t.Parallel()

zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10))
zoneName := acctest.RandomWithPrefix("dnszone-test")
recordName := acctest.RandomWithPrefix("record-test")
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckDnsRecordSetDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300),
Config: testAccDnsRecordSet_basic(zoneName, recordName, "127.0.0.10", 300),
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordSetExists(
"google_dns_record_set.foobar", zoneName),
),
},
resource.TestStep{
Config: testAccDnsRecordSet_bigChange(zoneName, 600),
Config: testAccDnsRecordSet_bigChange(zoneName, recordName, 600),
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordSetExists(
"google_dns_record_set.foobar", zoneName),
Expand All @@ -91,7 +100,7 @@ func TestAccDnsRecordSet_changeType(t *testing.T) {
}

func TestAccDnsRecordSet_ns(t *testing.T) {
zoneName := fmt.Sprintf("dnszone-test-ns-%s", acctest.RandString(10))
zoneName := acctest.RandomWithPrefix("dnszone-test")
resource.Test(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
Expand Down Expand Up @@ -176,7 +185,7 @@ func testAccCheckDnsRecordSetExists(resourceType, resourceName string) resource.
}
}

func testAccDnsRecordSet_basic(zoneName string, addr2 string, ttl int) string {
func testAccDnsRecordSet_basic(zoneName, recordName, addr2 string, ttl int) string {
return fmt.Sprintf(`
resource "google_dns_managed_zone" "parent-zone" {
name = "%s"
Expand All @@ -185,12 +194,12 @@ func testAccDnsRecordSet_basic(zoneName string, addr2 string, ttl int) string {
}
resource "google_dns_record_set" "foobar" {
managed_zone = "${google_dns_managed_zone.parent-zone.name}"
name = "test-record.${google_dns_managed_zone.parent-zone.dns_name}"
name = "%s.${google_dns_managed_zone.parent-zone.dns_name}"
type = "A"
rrdatas = ["127.0.0.1", "%s"]
ttl = %d
}
`, zoneName, addr2, ttl)
`, zoneName, recordName, addr2, ttl)
}

func testAccDnsRecordSet_ns(name string, ttl int) string {
Expand Down Expand Up @@ -227,7 +236,7 @@ func testAccDnsRecordSet_nestedNS(name string, ttl int) string {
`, name, ttl)
}

func testAccDnsRecordSet_bigChange(zoneName string, ttl int) string {
func testAccDnsRecordSet_bigChange(zoneName, recordName string, ttl int) string {
return fmt.Sprintf(`
resource "google_dns_managed_zone" "parent-zone" {
name = "%s"
Expand All @@ -236,10 +245,10 @@ func testAccDnsRecordSet_bigChange(zoneName string, ttl int) string {
}
resource "google_dns_record_set" "foobar" {
managed_zone = "${google_dns_managed_zone.parent-zone.name}"
name = "test-record.${google_dns_managed_zone.parent-zone.dns_name}"
name = "%s.${google_dns_managed_zone.parent-zone.dns_name}"
type = "CNAME"
rrdatas = ["www.terraform.io."]
ttl = %d
}
`, zoneName, ttl)
`, zoneName, recordName, ttl)
}

0 comments on commit 5a9d544

Please sign in to comment.