From 5a9d544266a51a784e9cc6550dd990539f0b7392 Mon Sep 17 00:00:00 2001 From: Vincent Roseberry Date: Fri, 17 Nov 2017 14:57:54 -0800 Subject: [PATCH] Add import support to dns_record_set. --- google/import_dns_record_set_test.go | 33 --------------------- google/resource_dns_record_set.go | 16 +++++----- google/resource_dns_record_set_test.go | 41 ++++++++++++++++---------- 3 files changed, 34 insertions(+), 56 deletions(-) delete mode 100644 google/import_dns_record_set_test.go diff --git a/google/import_dns_record_set_test.go b/google/import_dns_record_set_test.go deleted file mode 100644 index 88e938fb684..00000000000 --- a/google/import_dns_record_set_test.go +++ /dev/null @@ -1,33 +0,0 @@ -package google - -import ( - "testing" - - "fmt" - "github.com/hashicorp/terraform/helper/acctest" - "github.com/hashicorp/terraform/helper/resource" -) - -func TestAccDnsRecordSet_importBasic(t *testing.T) { - t.Parallel() - - zoneName := fmt.Sprintf("dnszone-test-%s", acctest.RandString(10)) - - resource.Test(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckDnsManagedZoneDestroy, - Steps: []resource.TestStep{ - resource.TestStep{ - Config: testAccDnsRecordSet_basic(zoneName, "127.0.0.10", 300), - }, - - resource.TestStep{ - ResourceName: "google_dns_record_set.foobar", - ImportStateId: zoneName + "/qa.test.com./A", - ImportState: true, - ImportStateVerify: true, - }, - }, - }) -} diff --git a/google/resource_dns_record_set.go b/google/resource_dns_record_set.go index 10bf61af992..bfae11cb316 100644 --- a/google/resource_dns_record_set.go +++ b/google/resource_dns_record_set.go @@ -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), }, @@ -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 { @@ -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) @@ -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, @@ -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]) diff --git a/google/resource_dns_record_set_test.go b/google/resource_dns_record_set_test.go index 434ad8cd0a6..e1c27f1fdf0 100644 --- a/google/resource_dns_record_set_test.go +++ b/google/resource_dns_record_set_test.go @@ -12,19 +12,26 @@ 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, + }, }, }) } @@ -32,28 +39,29 @@ func TestAccDnsRecordSet_basic(t *testing.T) { 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), @@ -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), @@ -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, @@ -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" @@ -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 { @@ -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" @@ -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) }