From b2777ab8645d21a7d80c97399d2b96adf4759f66 Mon Sep 17 00:00:00 2001 From: Matthew Frahry Date: Mon, 17 Feb 2020 11:50:14 -0800 Subject: [PATCH 1/6] 2.0-dns --- .../services/dns/data_source_dns_zone.go | 7 - .../dns/resource_arm_dns_ns_record.go | 47 +--- .../services/dns/resource_arm_dns_zone.go | 15 - .../tests/resource_arm_dns_ns_record_test.go | 257 ------------------ .../dns/tests/resource_arm_dns_zone_test.go | 1 - website/docs/d/dns_zone.html.markdown | 3 - website/docs/r/dns_ns_record.html.markdown | 8 +- website/docs/r/dns_zone.html.markdown | 6 - 8 files changed, 5 insertions(+), 339 deletions(-) diff --git a/azurerm/internal/services/dns/data_source_dns_zone.go b/azurerm/internal/services/dns/data_source_dns_zone.go index 79f38a81fc4b..4ee9f56b3eff 100644 --- a/azurerm/internal/services/dns/data_source_dns_zone.go +++ b/azurerm/internal/services/dns/data_source_dns_zone.go @@ -51,12 +51,6 @@ func dataSourceArmDnsZone() *schema.Resource { Set: schema.HashString, }, - "zone_type": { - Type: schema.TypeString, - Computed: true, - Deprecated: "Private DNS Zones are now supported through a separate resource in Azure & Terraform", - }, - "registration_virtual_network_ids": { Type: schema.TypeList, Computed: true, @@ -114,7 +108,6 @@ func dataSourceArmDnsZoneRead(d *schema.ResourceData, meta interface{}) error { if props := resp.ZoneProperties; props != nil { d.Set("number_of_record_sets", props.NumberOfRecordSets) d.Set("max_number_of_record_sets", props.MaxNumberOfRecordSets) - d.Set("zone_type", props.ZoneType) registrationVNets := make([]string, 0) if rvns := props.RegistrationVirtualNetworks; rvns != nil { diff --git a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go index a1d5e37a85cb..99a2eff1a6da 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go +++ b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go @@ -48,28 +48,9 @@ func resourceArmDnsNsRecord() *schema.Resource { }, "records": { - Type: schema.TypeList, - //TODO: add `Required: true` once we remove the `record` attribute - Optional: true, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - ConflictsWith: []string{"record"}, - }, - - "record": { - Type: schema.TypeSet, - Optional: true, - Computed: true, - Deprecated: "This field has been replaced by `records`", - ConflictsWith: []string{"records"}, - Elem: &schema.Resource{ - Schema: map[string]*schema.Schema{ - "nsdname": { - Type: schema.TypeString, - Required: true, - }, - }, - }, + Type: schema.TypeList, + Required: true, + Elem: &schema.Schema{Type: schema.TypeString}, }, "ttl": { @@ -174,11 +155,6 @@ func resourceArmDnsNsRecordRead(d *schema.ResourceData, meta interface{}) error return fmt.Errorf("Error settings `records`: %+v", err) } - //TODO: remove this once we remove the `record` attribute - if err := d.Set("record", flattenAzureRmDnsNsRecordsSet(resp.NsRecords)); err != nil { - return fmt.Errorf("Error settings `record`: %+v", err) - } - return tags.FlattenAndSet(d, resp.Metadata) } @@ -234,8 +210,7 @@ func flattenAzureRmDnsNsRecords(records *[]dns.NsRecord) []string { func expandAzureRmDnsNsRecords(d *schema.ResourceData) *[]dns.NsRecord { var records []dns.NsRecord - //TODO: remove this once we remove the `record` attribute - if d.HasChange("records") || !d.HasChange("record") { + if d.HasChange("records") { recordStrings := d.Get("records").([]interface{}) records = make([]dns.NsRecord, len(recordStrings)) for i, v := range recordStrings { @@ -247,20 +222,6 @@ func expandAzureRmDnsNsRecords(d *schema.ResourceData) *[]dns.NsRecord { records[i] = nsRecord } - } else { - recordList := d.Get("record").(*schema.Set).List() - if len(recordList) != 0 { - records = make([]dns.NsRecord, len(recordList)) - for i, v := range recordList { - record := v.(map[string]interface{}) - nsdname := record["nsdname"].(string) - nsRecord := dns.NsRecord{ - Nsdname: &nsdname, - } - - records[i] = nsRecord - } - } } return &records } diff --git a/azurerm/internal/services/dns/resource_arm_dns_zone.go b/azurerm/internal/services/dns/resource_arm_dns_zone.go index 8cbc72e5a3b8..a073ae37bcf9 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_zone.go +++ b/azurerm/internal/services/dns/resource_arm_dns_zone.go @@ -7,7 +7,6 @@ import ( "github.com/Azure/azure-sdk-for-go/services/dns/mgmt/2018-05-01/dns" "github.com/hashicorp/go-azure-helpers/response" "github.com/hashicorp/terraform-plugin-sdk/helper/schema" - "github.com/hashicorp/terraform-plugin-sdk/helper/validation" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/azure" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/helpers/tf" "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/clients" @@ -60,17 +59,6 @@ func resourceArmDnsZone() *schema.Resource { Set: schema.HashString, }, - "zone_type": { - Type: schema.TypeString, - Default: string(dns.Public), - Optional: true, - Deprecated: "Use the `azurerm_private_dns_zone` resource instead.", - ValidateFunc: validation.StringInSlice([]string{ - string(dns.Private), - string(dns.Public), - }, false), - }, - "registration_virtual_network_ids": { Type: schema.TypeList, Optional: true, @@ -110,7 +98,6 @@ func resourceArmDnsZoneCreateUpdate(d *schema.ResourceData, meta interface{}) er } location := "global" - zoneType := d.Get("zone_type").(string) t := d.Get("tags").(map[string]interface{}) registrationVirtualNetworkIds := expandDnsZoneRegistrationVirtualNetworkIds(d) @@ -120,7 +107,6 @@ func resourceArmDnsZoneCreateUpdate(d *schema.ResourceData, meta interface{}) er Location: &location, Tags: tags.Expand(t), ZoneProperties: &dns.ZoneProperties{ - ZoneType: dns.ZoneType(zoneType), RegistrationVirtualNetworks: registrationVirtualNetworkIds, ResolutionVirtualNetworks: resolutionVirtualNetworkIds, }, @@ -173,7 +159,6 @@ func resourceArmDnsZoneRead(d *schema.ResourceData, meta interface{}) error { d.Set("resource_group_name", resGroup) d.Set("number_of_record_sets", resp.NumberOfRecordSets) d.Set("max_number_of_record_sets", resp.MaxNumberOfRecordSets) - d.Set("zone_type", resp.ZoneType) registrationVirtualNetworks := flattenDnsZoneRegistrationVirtualNetworkIDs(resp.RegistrationVirtualNetworks) if err := d.Set("registration_virtual_network_ids", registrationVirtualNetworks); err != nil { diff --git a/azurerm/internal/services/dns/tests/resource_arm_dns_ns_record_test.go b/azurerm/internal/services/dns/tests/resource_arm_dns_ns_record_test.go index f35992c2e259..f4d159818a33 100644 --- a/azurerm/internal/services/dns/tests/resource_arm_dns_ns_record_test.go +++ b/azurerm/internal/services/dns/tests/resource_arm_dns_ns_record_test.go @@ -13,25 +13,6 @@ import ( "github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/features" ) -//TODO: remove this once we remove the `record` attribute -func TestAccAzureRMDnsNsRecord_deprecatedBasic(t *testing.T) { - data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acceptance.PreCheck(t) }, - Providers: acceptance.SupportedProviders, - CheckDestroy: testCheckAzureRMDnsNsRecordDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAzureRMDnsNsRecord_deprecatedBasic(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - ), - }, - }, - }) -} - func TestAccAzureRMDnsNsRecord_basic(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") @@ -79,33 +60,6 @@ func TestAccAzureRMDnsNsRecord_requiresImport(t *testing.T) { }) } -//TODO: remove this once we remove the `record` attribute -func TestAccAzureRMDnsNsRecord_deprecatedUpdateRecords(t *testing.T) { - data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acceptance.PreCheck(t) }, - Providers: acceptance.SupportedProviders, - CheckDestroy: testCheckAzureRMDnsNsRecordDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAzureRMDnsNsRecord_deprecatedBasic(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - resource.TestCheckResourceAttr(data.ResourceName, "record.#", "2"), - ), - }, - { - Config: testAccAzureRMDnsNsRecord_deprecatedUpdateRecords(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - resource.TestCheckResourceAttr(data.ResourceName, "record.#", "3"), - ), - }, - }, - }) -} - func TestAccAzureRMDnsNsRecord_updateRecords(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") @@ -132,60 +86,6 @@ func TestAccAzureRMDnsNsRecord_updateRecords(t *testing.T) { }) } -//TODO: remove this once we remove the `record` attribute -func TestAccAzureRMDnsNsRecord_deprecatedChangeRecordToRecords(t *testing.T) { - data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acceptance.PreCheck(t) }, - Providers: acceptance.SupportedProviders, - CheckDestroy: testCheckAzureRMDnsNsRecordDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAzureRMDnsNsRecord_deprecatedBasic(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - resource.TestCheckResourceAttr(data.ResourceName, "records.#", "2"), - ), - }, - { - Config: testAccAzureRMDnsNsRecord_deprecatedBasicNewRecords(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - resource.TestCheckResourceAttr(data.ResourceName, "records.#", "2"), - ), - }, - }, - }) -} - -//TODO: remove this once we remove the `record` attribute -func TestAccAzureRMDnsNsRecord_deprecatedWithTags(t *testing.T) { - data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acceptance.PreCheck(t) }, - Providers: acceptance.SupportedProviders, - CheckDestroy: testCheckAzureRMDnsNsRecordDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAzureRMDnsNsRecord_deprecatedWithTags(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - resource.TestCheckResourceAttr(data.ResourceName, "tags.%", "2"), - ), - }, - { - Config: testAccAzureRMDnsNsRecord_deprecatedWithTagsUpdate(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsNsRecordExists(data.ResourceName), - resource.TestCheckResourceAttr(data.ResourceName, "tags.%", "1"), - ), - }, - }, - }) -} - func TestAccAzureRMDnsNsRecord_withTags(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_dns_ns_record", "test") @@ -310,60 +210,6 @@ resource "azurerm_dns_ns_record" "import" { `, template) } -//TODO: remove this once we remove the `record` attribute -func testAccAzureRMDnsNsRecord_deprecatedBasic(data acceptance.TestData) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_dns_zone" "test" { - name = "acctestzone%d.com" - resource_group_name = "${azurerm_resource_group.test.name}" -} - -resource "azurerm_dns_ns_record" "test" { - name = "mynsrecord%d" - resource_group_name = "${azurerm_resource_group.test.name}" - zone_name = "${azurerm_dns_zone.test.name}" - ttl = 300 - - record { - nsdname = "ns1.contoso.com" - } - - record { - nsdname = "ns2.contoso.com" - } -} -`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) -} - -//TODO: remove this once we remove the `record` attribute -func testAccAzureRMDnsNsRecord_deprecatedBasicNewRecords(data acceptance.TestData) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_dns_zone" "test" { - name = "acctestzone%d.com" - resource_group_name = "${azurerm_resource_group.test.name}" -} - -resource "azurerm_dns_ns_record" "test" { - name = "mynsrecord%d" - resource_group_name = "${azurerm_resource_group.test.name}" - zone_name = "${azurerm_dns_zone.test.name}" - ttl = 300 - - records = ["ns2.contoso.com", "ns1.contoso.com"] -} -`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) -} - func testAccAzureRMDnsNsRecord_updateRecords(data acceptance.TestData) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { @@ -387,40 +233,6 @@ resource "azurerm_dns_ns_record" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) } -//TODO: remove this once we remove the `record` attribute -func testAccAzureRMDnsNsRecord_deprecatedUpdateRecords(data acceptance.TestData) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_dns_zone" "test" { - name = "acctestzone%d.com" - resource_group_name = "${azurerm_resource_group.test.name}" -} - -resource "azurerm_dns_ns_record" "test" { - name = "mynsrecord%d" - resource_group_name = "${azurerm_resource_group.test.name}" - zone_name = "${azurerm_dns_zone.test.name}" - ttl = 300 - - record { - nsdname = "ns1.contoso.com" - } - - record { - nsdname = "ns2.contoso.com" - } - - record { - nsdname = "ns3.contoso.com" - } -} -`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) -} - func testAccAzureRMDnsNsRecord_withTags(data acceptance.TestData) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { @@ -449,41 +261,6 @@ resource "azurerm_dns_ns_record" "test" { `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) } -//TODO: remove this once we remove the `record` attribute -func testAccAzureRMDnsNsRecord_deprecatedWithTags(data acceptance.TestData) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_dns_zone" "test" { - name = "acctestzone%d.com" - resource_group_name = "${azurerm_resource_group.test.name}" -} - -resource "azurerm_dns_ns_record" "test" { - name = "mynsrecord%d" - resource_group_name = "${azurerm_resource_group.test.name}" - zone_name = "${azurerm_dns_zone.test.name}" - ttl = 300 - - record { - nsdname = "ns1.contoso.com" - } - - record { - nsdname = "ns2.contoso.com" - } - - tags = { - environment = "Production" - cost_center = "MSFT" - } -} -`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) -} - func testAccAzureRMDnsNsRecord_withTagsUpdate(data acceptance.TestData) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { @@ -510,37 +287,3 @@ resource "azurerm_dns_ns_record" "test" { } `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) } - -//TODO: remove this once we remove the `record` attribute -func testAccAzureRMDnsNsRecord_deprecatedWithTagsUpdate(data acceptance.TestData) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_dns_zone" "test" { - name = "acctestzone%d.com" - resource_group_name = "${azurerm_resource_group.test.name}" -} - -resource "azurerm_dns_ns_record" "test" { - name = "mynsrecord%d" - resource_group_name = "${azurerm_resource_group.test.name}" - zone_name = "${azurerm_dns_zone.test.name}" - ttl = 300 - - record { - nsdname = "ns1.contoso.com" - } - - record { - nsdname = "ns2.contoso.com" - } - - tags = { - environment = "staging" - } -} -`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.RandomInteger) -} diff --git a/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go b/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go index 0d935db321d6..fc0302a2997c 100644 --- a/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go +++ b/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go @@ -205,7 +205,6 @@ resource "azurerm_virtual_network" "test" { resource "azurerm_dns_zone" "test" { name = "acctestzone%d.com" resource_group_name = "${azurerm_resource_group.test.name}" - zone_type = "Private" registration_virtual_network_ids = ["${azurerm_virtual_network.test.id}"] } `, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.Locations.Primary, data.RandomInteger) diff --git a/website/docs/d/dns_zone.html.markdown b/website/docs/d/dns_zone.html.markdown index 0ff4c48211cd..dbeac7e85400 100644 --- a/website/docs/d/dns_zone.html.markdown +++ b/website/docs/d/dns_zone.html.markdown @@ -41,9 +41,6 @@ in your subscription that matches `name` will be returned. * `registration_virtual_network_ids` - A list of Virtual Network ID's that register hostnames in this DNS zone. * `resolution_virtual_network_ids` - A list of Virtual Network ID's that resolve records in this DNS zone. * `tags` - A mapping of tags to assign to the EventHub Namespace. -* `zone_type` - (**Deprecated**) The type of this DNS zone, such as `Public` or `Private`. - -~> **Note:** This field is deprecated since Private DNS is now a separate resource and will be removed in 2.0 of the Azure Provider. ## Timeouts diff --git a/website/docs/r/dns_ns_record.html.markdown b/website/docs/r/dns_ns_record.html.markdown index 0774ff5adba7..97341fbf9a29 100644 --- a/website/docs/r/dns_ns_record.html.markdown +++ b/website/docs/r/dns_ns_record.html.markdown @@ -48,16 +48,10 @@ The following arguments are supported: * `ttl` - (Required) The Time To Live (TTL) of the DNS record in seconds. -* `records` - (Optional) A list of values that make up the NS record. *WARNING*: Either `records` or `record` is required. - -* `record` - (Optional) A list of values that make up the NS record. Each `record` block supports fields documented below. This field has been deprecated and will be removed in a future release. +* `records` - (Required) A list of values that make up the NS record. * `tags` - (Optional) A mapping of tags to assign to the resource. -The `record` block supports: - -* `nsdname` - (Required) The value of the record. - ## Attributes Reference The following attributes are exported: diff --git a/website/docs/r/dns_zone.html.markdown b/website/docs/r/dns_zone.html.markdown index 15ea41a3b08f..230d4da6e0aa 100644 --- a/website/docs/r/dns_zone.html.markdown +++ b/website/docs/r/dns_zone.html.markdown @@ -21,13 +21,11 @@ resource "azurerm_resource_group" "example" { resource "azurerm_dns_zone" "example-public" { name = "mydomain.com" resource_group_name = azurerm_resource_group.example.name - zone_type = "Public" } resource "azurerm_dns_zone" "example-private" { name = "mydomain.com" resource_group_name = azurerm_resource_group.example.name - zone_type = "Private" } ``` ## Argument Reference @@ -44,10 +42,6 @@ The following arguments are supported: * `tags` - (Optional) A mapping of tags to assign to the resource. -* `zone_type` - (Optional / **Deprecated**) Specifies the type of this DNS zone. Possible values are `Public` or `Private` (Defaults to `Public`). - -~> **NOTE:** This field was part of the initial Preview for Private DNS Zones - which has been [replaced by the separate resource `azurerm_private_dns_zone`](private_dns_zone.html) and will be removed in v2.0 of the Azure Provider. - ## Attributes Reference The following attributes are exported: From ef5a2b76e416aa587637c9dc0ed99fdfe2a46d8e Mon Sep 17 00:00:00 2001 From: Matthew Frahry Date: Mon, 17 Feb 2020 22:17:27 -0800 Subject: [PATCH 2/6] Remove deadcode --- .../services/dns/resource_arm_dns_ns_record.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go index 99a2eff1a6da..77ff7a4c4846 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go +++ b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go @@ -180,21 +180,6 @@ func resourceArmDnsNsRecordDelete(d *schema.ResourceData, meta interface{}) erro return nil } -//TODO: remove this once we remove the `record` attribute -func flattenAzureRmDnsNsRecordsSet(records *[]dns.NsRecord) []map[string]interface{} { - results := make([]map[string]interface{}, 0, len(*records)) - - if records != nil { - for _, record := range *records { - nsRecord := make(map[string]interface{}) - nsRecord["nsdname"] = *record.Nsdname - results = append(results, nsRecord) - } - } - - return results -} - func flattenAzureRmDnsNsRecords(records *[]dns.NsRecord) []string { results := make([]string, 0, len(*records)) From f445802f81e66bd68629c95ed3d76bd0d6e88cc4 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Tue, 18 Feb 2020 14:37:51 +0100 Subject: [PATCH 3/6] r/dns_zone: removing tests covering the deprecated fields --- .../services/dns/data_source_dns_zone.go | 32 ------- .../services/dns/resource_arm_dns_zone.go | 84 +------------------ .../dns/tests/resource_arm_dns_zone_test.go | 42 ---------- website/docs/d/dns_zone.html.markdown | 2 - website/docs/r/dns_zone.html.markdown | 4 - 5 files changed, 1 insertion(+), 163 deletions(-) diff --git a/azurerm/internal/services/dns/data_source_dns_zone.go b/azurerm/internal/services/dns/data_source_dns_zone.go index 4ee9f56b3eff..3c4586a34e8a 100644 --- a/azurerm/internal/services/dns/data_source_dns_zone.go +++ b/azurerm/internal/services/dns/data_source_dns_zone.go @@ -51,18 +51,6 @@ func dataSourceArmDnsZone() *schema.Resource { Set: schema.HashString, }, - "registration_virtual_network_ids": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - - "resolution_virtual_network_ids": { - Type: schema.TypeList, - Computed: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "tags": tags.SchemaDataSource(), }, } @@ -109,26 +97,6 @@ func dataSourceArmDnsZoneRead(d *schema.ResourceData, meta interface{}) error { d.Set("number_of_record_sets", props.NumberOfRecordSets) d.Set("max_number_of_record_sets", props.MaxNumberOfRecordSets) - registrationVNets := make([]string, 0) - if rvns := props.RegistrationVirtualNetworks; rvns != nil { - for _, rvn := range *rvns { - registrationVNets = append(registrationVNets, *rvn.ID) - } - } - if err := d.Set("registration_virtual_network_ids", registrationVNets); err != nil { - return err - } - - resolutionVNets := make([]string, 0) - if rvns := props.ResolutionVirtualNetworks; rvns != nil { - for _, rvn := range *rvns { - resolutionVNets = append(resolutionVNets, *rvn.ID) - } - } - if err := d.Set("resolution_virtual_network_ids", resolutionVNets); err != nil { - return err - } - nameServers := make([]string, 0) if ns := props.NameServers; ns != nil { nameServers = *ns diff --git a/azurerm/internal/services/dns/resource_arm_dns_zone.go b/azurerm/internal/services/dns/resource_arm_dns_zone.go index a073ae37bcf9..53d04a030d38 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_zone.go +++ b/azurerm/internal/services/dns/resource_arm_dns_zone.go @@ -59,18 +59,6 @@ func resourceArmDnsZone() *schema.Resource { Set: schema.HashString, }, - "registration_virtual_network_ids": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - - "resolution_virtual_network_ids": { - Type: schema.TypeList, - Optional: true, - Elem: &schema.Schema{Type: schema.TypeString}, - }, - "tags": tags.Schema(), }, } @@ -100,22 +88,14 @@ func resourceArmDnsZoneCreateUpdate(d *schema.ResourceData, meta interface{}) er location := "global" t := d.Get("tags").(map[string]interface{}) - registrationVirtualNetworkIds := expandDnsZoneRegistrationVirtualNetworkIds(d) - resolutionVirtualNetworkIds := expandDnsZoneResolutionVirtualNetworkIds(d) - parameters := dns.Zone{ Location: &location, Tags: tags.Expand(t), - ZoneProperties: &dns.ZoneProperties{ - RegistrationVirtualNetworks: registrationVirtualNetworkIds, - ResolutionVirtualNetworks: resolutionVirtualNetworkIds, - }, } etag := "" ifNoneMatch := "" // set to empty to allow updates to records after creation - _, err := client.CreateOrUpdate(ctx, resGroup, name, parameters, etag, ifNoneMatch) - if err != nil { + if _, err := client.CreateOrUpdate(ctx, resGroup, name, parameters, etag, ifNoneMatch); err != nil { return fmt.Errorf("Error creating/updating DNS Zone %q (Resource Group %q): %s", name, resGroup, err) } @@ -160,16 +140,6 @@ func resourceArmDnsZoneRead(d *schema.ResourceData, meta interface{}) error { d.Set("number_of_record_sets", resp.NumberOfRecordSets) d.Set("max_number_of_record_sets", resp.MaxNumberOfRecordSets) - registrationVirtualNetworks := flattenDnsZoneRegistrationVirtualNetworkIDs(resp.RegistrationVirtualNetworks) - if err := d.Set("registration_virtual_network_ids", registrationVirtualNetworks); err != nil { - return err - } - - resolutionVirtualNetworks := flattenDnsZoneResolutionVirtualNetworkIDs(resp.ResolutionVirtualNetworks) - if err := d.Set("resolution_virtual_network_ids", resolutionVirtualNetworks); err != nil { - return err - } - nameServers := make([]string, 0) if s := resp.NameServers; s != nil { nameServers = *s @@ -212,55 +182,3 @@ func resourceArmDnsZoneDelete(d *schema.ResourceData, meta interface{}) error { return nil } - -func expandDnsZoneResolutionVirtualNetworkIds(d *schema.ResourceData) *[]dns.SubResource { - resolutionVirtualNetworks := d.Get("resolution_virtual_network_ids").([]interface{}) - - resolutionVNetSubResources := make([]dns.SubResource, 0, len(resolutionVirtualNetworks)) - for _, rvn := range resolutionVirtualNetworks { - id := rvn.(string) - resolutionVNetSubResources = append(resolutionVNetSubResources, dns.SubResource{ - ID: &id, - }) - } - - return &resolutionVNetSubResources -} - -func flattenDnsZoneRegistrationVirtualNetworkIDs(input *[]dns.SubResource) []string { - registrationVirtualNetworks := make([]string, 0) - - if input != nil { - for _, rvn := range *input { - registrationVirtualNetworks = append(registrationVirtualNetworks, *rvn.ID) - } - } - - return registrationVirtualNetworks -} - -func expandDnsZoneRegistrationVirtualNetworkIds(d *schema.ResourceData) *[]dns.SubResource { - registrationVirtualNetworks := d.Get("registration_virtual_network_ids").([]interface{}) - - registrationVNetSubResources := make([]dns.SubResource, 0) - for _, rvn := range registrationVirtualNetworks { - id := rvn.(string) - registrationVNetSubResources = append(registrationVNetSubResources, dns.SubResource{ - ID: &id, - }) - } - - return ®istrationVNetSubResources -} - -func flattenDnsZoneResolutionVirtualNetworkIDs(input *[]dns.SubResource) []string { - resolutionVirtualNetworks := make([]string, 0) - - if input != nil { - for _, rvn := range *input { - resolutionVirtualNetworks = append(resolutionVirtualNetworks, *rvn.ID) - } - } - - return resolutionVirtualNetworks -} diff --git a/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go b/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go index fc0302a2997c..b886117ae7de 100644 --- a/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go +++ b/azurerm/internal/services/dns/tests/resource_arm_dns_zone_test.go @@ -58,25 +58,6 @@ func TestAccAzureRMDnsZone_requiresImport(t *testing.T) { }) } -func TestAccAzureRMDnsZone_withVNets(t *testing.T) { - data := acceptance.BuildTestData(t, "azurerm_dns_zone", "test") - - resource.ParallelTest(t, resource.TestCase{ - PreCheck: func() { acceptance.PreCheck(t) }, - Providers: acceptance.SupportedProviders, - CheckDestroy: testCheckAzureRMDnsZoneDestroy, - Steps: []resource.TestStep{ - { - Config: testAccAzureRMDnsZone_withVNets(data), - Check: resource.ComposeTestCheckFunc( - testCheckAzureRMDnsZoneExists(data.ResourceName), - ), - }, - data.ImportStep(), - }, - }) -} - func TestAccAzureRMDnsZone_withTags(t *testing.T) { data := acceptance.BuildTestData(t, "azurerm_dns_zone", "test") @@ -187,29 +168,6 @@ resource "azurerm_dns_zone" "import" { `, template) } -func testAccAzureRMDnsZone_withVNets(data acceptance.TestData) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG_%d" - location = "%s" -} - -resource "azurerm_virtual_network" "test" { - name = "acctestvnet%d" - location = "%s" - resource_group_name = "${azurerm_resource_group.test.name}" - address_space = ["10.0.0.0/16"] - dns_servers = ["168.63.129.16"] -} - -resource "azurerm_dns_zone" "test" { - name = "acctestzone%d.com" - resource_group_name = "${azurerm_resource_group.test.name}" - registration_virtual_network_ids = ["${azurerm_virtual_network.test.id}"] -} -`, data.RandomInteger, data.Locations.Primary, data.RandomInteger, data.Locations.Primary, data.RandomInteger) -} - func testAccAzureRMDnsZone_withTags(data acceptance.TestData) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { diff --git a/website/docs/d/dns_zone.html.markdown b/website/docs/d/dns_zone.html.markdown index dbeac7e85400..a44ce44651b7 100644 --- a/website/docs/d/dns_zone.html.markdown +++ b/website/docs/d/dns_zone.html.markdown @@ -38,8 +38,6 @@ in your subscription that matches `name` will be returned. * `max_number_of_record_sets` - Maximum number of Records in the zone. * `number_of_record_sets` - The number of records already in the zone. * `name_servers` - A list of values that make up the NS record for the zone. -* `registration_virtual_network_ids` - A list of Virtual Network ID's that register hostnames in this DNS zone. -* `resolution_virtual_network_ids` - A list of Virtual Network ID's that resolve records in this DNS zone. * `tags` - A mapping of tags to assign to the EventHub Namespace. ## Timeouts diff --git a/website/docs/r/dns_zone.html.markdown b/website/docs/r/dns_zone.html.markdown index 230d4da6e0aa..21ef3b8166f9 100644 --- a/website/docs/r/dns_zone.html.markdown +++ b/website/docs/r/dns_zone.html.markdown @@ -36,10 +36,6 @@ The following arguments are supported: * `resource_group_name` - (Required) Specifies the resource group where the resource exists. Changing this forces a new resource to be created. -* `registration_virtual_network_ids` - (Optional) A list of Virtual Network ID's that register hostnames in this DNS zone. This field can only be set when `zone_type` is set to `Private`. - -* `resolution_virtual_network_ids` - (Optional) A list of Virtual Network ID's that resolve records in this DNS zone. This field can only be set when `zone_type` is set to `Private`. - * `tags` - (Optional) A mapping of tags to assign to the resource. ## Attributes Reference From aeda0b669d58b972fd537fa03d5aab6af0ce2f10 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Tue, 18 Feb 2020 14:38:04 +0100 Subject: [PATCH 4/6] r/dns_ns_record: fixing a bug during update ``` $ TF_ACC=1 go test -v ./azurerm/internal/services/dns/tests/ -timeout=60m -run=TestAccAzureRMDnsNsRecord_withTags === RUN TestAccAzureRMDnsNsRecord_withTags === PAUSE TestAccAzureRMDnsNsRecord_withTags === CONT TestAccAzureRMDnsNsRecord_withTags --- PASS: TestAccAzureRMDnsNsRecord_withTags (137.86s) PASS ok github.com/terraform-providers/terraform-provider-azurerm/azurerm/internal/services/dns/tests 137.899s ``` --- .../dns/resource_arm_dns_ns_record.go | 112 +++++++++++++----- 1 file changed, 84 insertions(+), 28 deletions(-) diff --git a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go index 77ff7a4c4846..efb3e9a2fb06 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go +++ b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go @@ -18,9 +18,9 @@ import ( func resourceArmDnsNsRecord() *schema.Resource { return &schema.Resource{ - Create: resourceArmDnsNsRecordCreateUpdate, + Create: resourceArmDnsNsRecordCreate, Read: resourceArmDnsNsRecordRead, - Update: resourceArmDnsNsRecordCreateUpdate, + Update: resourceArmDnsNsRecordUpdate, Delete: resourceArmDnsNsRecordDelete, Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, @@ -45,12 +45,15 @@ func resourceArmDnsNsRecord() *schema.Resource { "zone_name": { Type: schema.TypeString, Required: true, + ForceNew: true, }, "records": { Type: schema.TypeList, Required: true, - Elem: &schema.Schema{Type: schema.TypeString}, + Elem: &schema.Schema{ + Type: schema.TypeString, + }, }, "ttl": { @@ -68,16 +71,16 @@ func resourceArmDnsNsRecord() *schema.Resource { } } -func resourceArmDnsNsRecordCreateUpdate(d *schema.ResourceData, meta interface{}) error { +func resourceArmDnsNsRecordCreate(d *schema.ResourceData, meta interface{}) error { client := meta.(*clients.Client).Dns.RecordSetsClient - ctx, cancel := timeouts.ForCreateUpdate(meta.(*clients.Client).StopContext, d) + ctx, cancel := timeouts.ForCreate(meta.(*clients.Client).StopContext, d) defer cancel() name := d.Get("name").(string) resGroup := d.Get("resource_group_name").(string) zoneName := d.Get("zone_name").(string) - if features.ShouldResourcesBeImported() && d.IsNewResource() { + if features.ShouldResourcesBeImported() { existing, err := client.Get(ctx, resGroup, zoneName, name, dns.NS) if err != nil { if !utils.ResponseWasNotFound(existing.Response) { @@ -93,19 +96,22 @@ func resourceArmDnsNsRecordCreateUpdate(d *schema.ResourceData, meta interface{} ttl := int64(d.Get("ttl").(int)) t := d.Get("tags").(map[string]interface{}) + recordsRaw := d.Get("records").([]interface{}) + records := expandAzureRmDnsNsRecords(recordsRaw) + parameters := dns.RecordSet{ Name: &name, RecordSetProperties: &dns.RecordSetProperties{ Metadata: tags.Expand(t), TTL: &ttl, - NsRecords: expandAzureRmDnsNsRecords(d), + NsRecords: records, }, } eTag := "" ifNoneMatch := "" // set to empty to allow updates to records after creation if _, err := client.CreateOrUpdate(ctx, resGroup, zoneName, name, dns.NS, parameters, eTag, ifNoneMatch); err != nil { - return fmt.Errorf("Error creating/updating DNS NS Record %q (Zone %q / Resource Group %q): %s", name, zoneName, resGroup, err) + return fmt.Errorf("Error creating DNS NS Record %q (Zone %q / Resource Group %q): %s", name, zoneName, resGroup, err) } resp, err := client.Get(ctx, resGroup, zoneName, name, dns.NS) @@ -122,6 +128,53 @@ func resourceArmDnsNsRecordCreateUpdate(d *schema.ResourceData, meta interface{} return resourceArmDnsNsRecordRead(d, meta) } +func resourceArmDnsNsRecordUpdate(d *schema.ResourceData, meta interface{}) error { + client := meta.(*clients.Client).Dns.RecordSetsClient + ctx, cancel := timeouts.ForUpdate(meta.(*clients.Client).StopContext, d) + defer cancel() + + id, err := azure.ParseAzureResourceID(d.Id()) + if err != nil { + return err + } + + resGroup := id.ResourceGroup + name := id.Path["NS"] + zoneName := id.Path["dnszones"] + + existing, err := client.Get(ctx, resGroup, zoneName, name, dns.NS) + if err != nil { + return fmt.Errorf("Error retrieving NS %q (DNS Zone %q / Resource Group %q): %+v", name, zoneName, resGroup, err) + } + + if existing.RecordSetProperties == nil { + return fmt.Errorf("Error retrieving NS %q (DNS Zone %q / Resource Group %q): `properties` was nil", name, zoneName, resGroup) + } + + if d.HasChange("records") { + recordsRaw := d.Get("records").([]interface{}) + records := expandAzureRmDnsNsRecords(recordsRaw) + existing.RecordSetProperties.NsRecords = records + } + + if d.HasChange("tags") { + t := d.Get("tags").(map[string]interface{}) + existing.RecordSetProperties.Metadata = tags.Expand(t) + } + + if d.HasChange("ttl") { + existing.RecordSetProperties.TTL = utils.Int64(int64(d.Get("ttl").(int))) + } + + eTag := "" + ifNoneMatch := "" // set to empty to allow updates to records after creation + if _, err := client.CreateOrUpdate(ctx, resGroup, zoneName, name, dns.NS, existing, eTag, ifNoneMatch); err != nil { + return fmt.Errorf("Error updating DNS NS Record %q (Zone %q / Resource Group %q): %s", name, zoneName, resGroup, err) + } + + return resourceArmDnsNsRecordRead(d, meta) +} + func resourceArmDnsNsRecordRead(d *schema.ResourceData, meta interface{}) error { dnsClient := meta.(*clients.Client).Dns.RecordSetsClient ctx, cancel := timeouts.ForRead(meta.(*clients.Client).StopContext, d) @@ -151,8 +204,11 @@ func resourceArmDnsNsRecordRead(d *schema.ResourceData, meta interface{}) error d.Set("ttl", resp.TTL) d.Set("fqdn", resp.Fqdn) - if err := d.Set("records", flattenAzureRmDnsNsRecords(resp.NsRecords)); err != nil { - return fmt.Errorf("Error settings `records`: %+v", err) + if props := resp.RecordSetProperties; props != nil { + if err := d.Set("records", flattenAzureRmDnsNsRecords(props.NsRecords)); err != nil { + return fmt.Errorf("Error settings `records`: %+v", err) + } + } return tags.FlattenAndSet(d, resp.Metadata) @@ -180,33 +236,33 @@ func resourceArmDnsNsRecordDelete(d *schema.ResourceData, meta interface{}) erro return nil } -func flattenAzureRmDnsNsRecords(records *[]dns.NsRecord) []string { - results := make([]string, 0, len(*records)) +func flattenAzureRmDnsNsRecords(records *[]dns.NsRecord) []interface{} { + if records == nil { + return []interface{}{} + } - if records != nil { - for _, record := range *records { - results = append(results, *record.Nsdname) + results := make([]interface{}, 0) + for _, record := range *records { + if record.Nsdname == nil { + continue } + + results = append(results, *record.Nsdname) } return results } -func expandAzureRmDnsNsRecords(d *schema.ResourceData) *[]dns.NsRecord { - var records []dns.NsRecord +func expandAzureRmDnsNsRecords(input []interface{}) *[]dns.NsRecord { + records := make([]dns.NsRecord, len(input)) + for i, v := range input { + record := v.(string) - if d.HasChange("records") { - recordStrings := d.Get("records").([]interface{}) - records = make([]dns.NsRecord, len(recordStrings)) - for i, v := range recordStrings { - record := v.(string) - - nsRecord := dns.NsRecord{ - Nsdname: &record, - } - - records[i] = nsRecord + nsRecord := dns.NsRecord{ + Nsdname: &record, } + + records[i] = nsRecord } return &records } From 33aa01f315b636e1d8f3f926d4e0cbe77c7f1819 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Tue, 18 Feb 2020 14:58:15 +0100 Subject: [PATCH 5/6] dns: updating the tests to match the fields always being set --- .../services/dns/resource_arm_dns_cname_record.go | 8 +------- .../services/dns/tests/resource_arm_dns_a_record_test.go | 2 +- .../dns/tests/resource_arm_dns_cname_record_test.go | 4 ++-- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/azurerm/internal/services/dns/resource_arm_dns_cname_record.go b/azurerm/internal/services/dns/resource_arm_dns_cname_record.go index 715bdc968812..9d62608bc817 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_cname_record.go +++ b/azurerm/internal/services/dns/resource_arm_dns_cname_record.go @@ -47,12 +47,6 @@ func resourceArmDnsCNameRecord() *schema.Resource { Required: true, }, - "records": { - Type: schema.TypeString, - Optional: true, - Removed: "Use `record` instead. This attribute will be removed in a future version", - }, - "record": { Type: schema.TypeString, Optional: true, @@ -73,7 +67,7 @@ func resourceArmDnsCNameRecord() *schema.Resource { Type: schema.TypeString, Optional: true, ValidateFunc: azure.ValidateResourceID, - ConflictsWith: []string{"records"}, + ConflictsWith: []string{"record"}, }, "tags": tags.Schema(), diff --git a/azurerm/internal/services/dns/tests/resource_arm_dns_a_record_test.go b/azurerm/internal/services/dns/tests/resource_arm_dns_a_record_test.go index 81d1c015abb5..e3ed5c60671a 100644 --- a/azurerm/internal/services/dns/tests/resource_arm_dns_a_record_test.go +++ b/azurerm/internal/services/dns/tests/resource_arm_dns_a_record_test.go @@ -163,7 +163,7 @@ func TestAccAzureRMDnsARecord_RecordsToAlias(t *testing.T) { Check: resource.ComposeTestCheckFunc( testCheckAzureRMDnsARecordExists(data.ResourceName), resource.TestCheckResourceAttrPair(data.ResourceName, "target_resource_id", targetResourceName, "id"), - resource.TestCheckNoResourceAttr(data.ResourceName, "records"), + resource.TestCheckResourceAttr(data.ResourceName, "records.#", "0"), ), }, data.ImportStep(), diff --git a/azurerm/internal/services/dns/tests/resource_arm_dns_cname_record_test.go b/azurerm/internal/services/dns/tests/resource_arm_dns_cname_record_test.go index 3e33c95bdcfe..0e630f6e2fba 100644 --- a/azurerm/internal/services/dns/tests/resource_arm_dns_cname_record_test.go +++ b/azurerm/internal/services/dns/tests/resource_arm_dns_cname_record_test.go @@ -180,7 +180,7 @@ func TestAccAzureRMDnsCNameRecord_RecordToAlias(t *testing.T) { Check: resource.ComposeTestCheckFunc( testCheckAzureRMDnsCNameRecordExists(data.ResourceName), resource.TestCheckResourceAttrPair(data.ResourceName, "target_resource_id", targetResourceName, "id"), - resource.TestCheckNoResourceAttr(data.ResourceName, "record"), + resource.TestCheckResourceAttr(data.ResourceName, "record", ""), ), }, data.ImportStep(), @@ -208,7 +208,7 @@ func TestAccAzureRMDnsCNameRecord_AliasToRecord(t *testing.T) { Config: testAccAzureRMDnsCNameRecord_AliasToRecordUpdate(data), Check: resource.ComposeTestCheckFunc( testCheckAzureRMDnsCNameRecordExists(data.ResourceName), - resource.TestCheckNoResourceAttr(data.ResourceName, "target_resource_id"), + resource.TestCheckResourceAttr(data.ResourceName, "target_resource_id", ""), ), }, data.ImportStep(), From 30be1a4814ac27439fed08660f94c9187f830257 Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Tue, 18 Feb 2020 17:14:39 +0100 Subject: [PATCH 6/6] linting --- azurerm/internal/services/dns/resource_arm_dns_ns_record.go | 1 - 1 file changed, 1 deletion(-) diff --git a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go index efb3e9a2fb06..f1d679108371 100644 --- a/azurerm/internal/services/dns/resource_arm_dns_ns_record.go +++ b/azurerm/internal/services/dns/resource_arm_dns_ns_record.go @@ -208,7 +208,6 @@ func resourceArmDnsNsRecordRead(d *schema.ResourceData, meta interface{}) error if err := d.Set("records", flattenAzureRmDnsNsRecords(props.NsRecords)); err != nil { return fmt.Errorf("Error settings `records`: %+v", err) } - } return tags.FlattenAndSet(d, resp.Metadata)