Skip to content

Commit

Permalink
fix dns record priority bug
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaozhu36 committed Dec 13, 2017
1 parent 8cab3b0 commit 2d35c9a
Show file tree
Hide file tree
Showing 14 changed files with 130 additions and 72 deletions.
9 changes: 8 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
## 1.1.0 (Unreleased)
## 1.3.0 (Unreleased)

## 1.2.0 (December 14, 2017)

IMPROVEMENTS:

- resource/dns-record: Fix setting dns priority failed [GH-58]


## 1.0.0 (December 11, 2017)

Expand Down
5 changes: 2 additions & 3 deletions alicloud/data_source_alicloud_dns_domains_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ func TestAccAlicloudDnsDomainsDataSource_ali_domain(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_domains.domain"),
resource.TestCheckResourceAttr("data.alicloud_dns_domains.domain", "domains.#", "1"),
resource.TestCheckResourceAttr("data.alicloud_dns_domains.domain", "domains.0.domain_name", "xiaozhu.top"),
resource.TestCheckResourceAttr("data.alicloud_dns_domains.domain", "domains.0.puny_code", "xiaozhu.top"),
resource.TestCheckResourceAttr("data.alicloud_dns_domains.domain", "domains.0.ali_domain", "true"),
),
},
},
Expand Down Expand Up @@ -91,7 +90,7 @@ data "alicloud_dns_domains" "domain" {

const testAccCheckAlicloudDomainsDataSourceNameRegexConfig = `
data "alicloud_dns_domains" "domain" {
domain_name_regex = "cloud*"
domain_name_regex = ".*"
}`

const testAccCheckAlicloudDomainsDataSourceGroupNameRegexConfig = `
Expand Down
5 changes: 2 additions & 3 deletions alicloud/data_source_alicloud_dns_groups_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,7 @@ func TestAccAlicloudDnsGroupsDataSource_name_regex(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_groups.group"),
resource.TestCheckResourceAttr("data.alicloud_dns_groups.group", "groups.#", "1"),
resource.TestCheckResourceAttr("data.alicloud_dns_groups.group", "groups.0.group_id", "520fa32a-076b-4f80-854d-987046e223fe"),
resource.TestCheckResourceAttr("data.alicloud_dns_groups.group", "groups.0.group_name", "yuy"),
resource.TestCheckResourceAttr("data.alicloud_dns_groups.group", "groups.0.group_name", "ALL\n"),
),
},
},
Expand All @@ -27,5 +26,5 @@ func TestAccAlicloudDnsGroupsDataSource_name_regex(t *testing.T) {

const testAccCheckAlicloudDnsGroupsDataSourceNameRegexConfig = `
data "alicloud_dns_groups" "group" {
name_regex = "^yu"
name_regex = "^ALL"
}`
4 changes: 2 additions & 2 deletions alicloud/data_source_alicloud_dns_records.go
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ func dataSourceAlicloudDnsRecords() *schema.Resource {
Computed: true,
},
"priority": {
Type: schema.TypeString,
Type: schema.TypeInt,
Computed: true,
},
"line": {
Expand Down Expand Up @@ -196,7 +196,7 @@ func recordsDecriptionAttributes(d *schema.ResourceData, recordTypes []dns.Recor
"host_record": record.RR,
"type": record.Type,
"value": record.Value,
"status": record.Status,
"status": strings.ToLower(record.Status),
"locked": record.Locked,
"ttl": record.TTL,
"priority": record.Priority,
Expand Down
44 changes: 25 additions & 19 deletions alicloud/data_source_alicloud_dns_records_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,14 +17,8 @@ func TestAccAlicloudDnsRecordsDataSource_host_record_regex(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_records.record"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.#", "1"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.record_id", "3438492787133440"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.domain_name", "heguimin.top"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.host_record", "smtp"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.status", "ENABLE"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.ttl", "600"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.type", "CNAME"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.value", "smtp.mxhichina.com"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.line", "default"),
),
},
},
Expand All @@ -42,7 +36,7 @@ func TestAccAlicloudDnsRecordsDataSource_type(t *testing.T) {
Config: testAccCheckAlicloudDnsRecordsDataSourceTypeConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_records.record"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.#", "7"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.type", "CNAME"),
),
},
},
Expand All @@ -60,7 +54,7 @@ func TestAccAlicloudDnsRecordsDataSource_value_regex(t *testing.T) {
Config: testAccCheckAlicloudDnsRecordsDataSourceValueRegexConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_records.record"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.#", "3"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.value", "mail.mxhichina.com"),
),
},
},
Expand All @@ -78,7 +72,7 @@ func TestAccAlicloudDnsRecordsDataSource_line(t *testing.T) {
Config: testAccCheckAlicloudDnsRecordsDataSourceLineConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_records.record"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.#", "17"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.line", "default"),
),
},
},
Expand All @@ -96,7 +90,7 @@ func TestAccAlicloudDnsRecordsDataSource_status(t *testing.T) {
Config: testAccCheckAlicloudDnsRecordsDataSourceStatusConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_records.record"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.#", "17"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.status", "enable"),
),
},
},
Expand All @@ -114,45 +108,57 @@ func TestAccAlicloudDnsRecordsDataSource_is_locked(t *testing.T) {
Config: testAccCheckAlicloudDnsRecordsDataSourceIsLockedConfig,
Check: resource.ComposeTestCheckFunc(
testAccCheckAlicloudDataSourceID("data.alicloud_dns_records.record"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.#", "17"),
resource.TestCheckResourceAttr("data.alicloud_dns_records.record", "records.0.locked", "false"),
),
},
},
})
}

const testAccCheckAlicloudDnsRecordsDataSourceHostRecordRegexConfig = `
data "alicloud_dns_domains" "domains" {}
data "alicloud_dns_records" "record" {
domain_name = "heguimin.top"
host_record_regex = ".*smtp.*"
domain_name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
host_record_regex = "^smtp"
}`

const testAccCheckAlicloudDnsRecordsDataSourceTypeConfig = `
data "alicloud_dns_domains" "domains" {}
data "alicloud_dns_records" "record" {
domain_name = "heguimin.top"
domain_name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
type = "CNAME"
}`

const testAccCheckAlicloudDnsRecordsDataSourceValueRegexConfig = `
data "alicloud_dns_domains" "domains" {}
data "alicloud_dns_records" "record" {
domain_name = "heguimin.top"
value_regex = "^mail.mxhichina"
domain_name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
value_regex = "^mail"
}`

const testAccCheckAlicloudDnsRecordsDataSourceStatusConfig = `
data "alicloud_dns_domains" "domains" {}
data "alicloud_dns_records" "record" {
domain_name = "heguimin.top"
domain_name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
status = "enable"
}`

const testAccCheckAlicloudDnsRecordsDataSourceIsLockedConfig = `
data "alicloud_dns_domains" "domains" {}
data "alicloud_dns_records" "record" {
domain_name = "heguimin.top"
domain_name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
is_locked = false
}`

const testAccCheckAlicloudDnsRecordsDataSourceLineConfig = `
data "alicloud_dns_domains" "domains" {}
data "alicloud_dns_records" "record" {
domain_name = "heguimin.top"
domain_name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
line = "default"
}`
8 changes: 8 additions & 0 deletions alicloud/diff_suppress_funcs.go
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package alicloud

import (
"github.com/denverdino/aliyungo/dns"
"github.com/denverdino/aliyungo/slb"
"github.com/hashicorp/terraform/helper/schema"
)
Expand Down Expand Up @@ -74,3 +75,10 @@ func sslCertificateIdDiffSuppressFunc(k, old, new string, d *schema.ResourceData
}
return true
}

func dnsPriorityDiffSuppressFunc(k, old, new string, d *schema.ResourceData) bool {
if recordType, ok := d.GetOk("type"); ok && recordType.(string) == dns.MXRecord {
return false
}
return true
}
18 changes: 9 additions & 9 deletions alicloud/resource_alicloud_dns_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ package alicloud

import (
"fmt"
"strconv"
"time"

"github.com/denverdino/aliyungo/common"
Expand Down Expand Up @@ -46,9 +45,10 @@ func resourceAlicloudDnsRecord() *schema.Resource {
Default: 600,
},
"priority": {
Type: schema.TypeInt,
Optional: true,
ValidateFunc: validateDomainRecordPriority,
Type: schema.TypeInt,
Optional: true,
ValidateFunc: validateDomainRecordPriority,
DiffSuppressFunc: dnsPriorityDiffSuppressFunc,
},
"routing": {
Type: schema.TypeString,
Expand Down Expand Up @@ -76,10 +76,11 @@ func resourceAlicloudDnsRecordCreate(d *schema.ResourceData, meta interface{}) e
RR: d.Get("host_record").(string),
Type: d.Get("type").(string),
Value: d.Get("value").(string),
Priority: int32(d.Get("priority").(int)),
}

if _, ok := d.GetOk("priority"); !ok && args.Type == dns.MXRecord {
return fmt.Errorf("MXRecord needs priority param")
return fmt.Errorf("'priority': required field when 'type' is MX.")
}

if v, ok := d.GetOk("routing"); ok && v != "default" && args.Type == dns.ForwordURLRecord {
Expand Down Expand Up @@ -115,8 +116,7 @@ func resourceAlicloudDnsRecordUpdate(d *schema.ResourceData, meta interface{}) e
}
}
}

if d.HasChange("priority") {
if d.HasChange("priority") && !d.IsNewResource() {
d.SetPartial("priority")
args.Priority = int32(d.Get("priority").(int))
attributeUpdate = true
Expand Down Expand Up @@ -161,9 +161,9 @@ func resourceAlicloudDnsRecordRead(d *schema.ResourceData, meta interface{}) err
}

record := response.RecordTypeNew
priority, _ := strconv.Atoi(record.Priority)
//priority, _ := record.Priority
d.Set("ttl", record.TTL)
d.Set("priority", priority)
d.Set("priority", record.Priority)
d.Set("name", record.DomainName)
d.Set("host_record", record.RR)
d.Set("type", record.Type)
Expand Down
52 changes: 46 additions & 6 deletions alicloud/resource_alicloud_dns_record_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,10 +29,6 @@ func TestAccAlicloudDnsRecord_basic(t *testing.T) {
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordExists(
"alicloud_dns_record.record", &v),
resource.TestCheckResourceAttr(
"alicloud_dns_record.record",
"name",
"heguimin.top"),
resource.TestCheckResourceAttr(
"alicloud_dns_record.record",
"type",
Expand Down Expand Up @@ -73,6 +69,36 @@ func testAccCheckDnsRecordExists(n string, record *dns.RecordTypeNew) resource.T
}
}

func TestAccAlicloudDnsRecord_priority(t *testing.T) {
var v dns.RecordTypeNew

resource.Test(t, resource.TestCase{
PreCheck: func() {
testAccPreCheck(t)
},

// module name
IDRefreshName: "alicloud_dns_record.record",

Providers: testAccProviders,
CheckDestroy: testAccCheckDnsRecordDestroy,
Steps: []resource.TestStep{
resource.TestStep{
Config: testAccDnsRecordPriority,
Check: resource.ComposeTestCheckFunc(
testAccCheckDnsRecordExists(
"alicloud_dns_record.record", &v),
resource.TestCheckResourceAttr(
"alicloud_dns_record.record", "type", "MX"),
resource.TestCheckResourceAttr(
"alicloud_dns_record.record", "priority", "10"),
),
},
},
})

}

func testAccCheckDnsRecordDestroy(s *terraform.State) error {

for _, rs := range s.RootModule().Resources {
Expand All @@ -99,11 +125,25 @@ func testAccCheckDnsRecordDestroy(s *terraform.State) error {
}

const testAccDnsRecordConfig = `
data "alicloud_dns_domains" "domains" {}
resource "alicloud_dns_record" "record" {
name = "heguimin.top"
host_record = "alimailskajdh"
name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
host_record = "alimail"
type = "CNAME"
value = "mail.mxhichin.com"
count = 1
}
`
const testAccDnsRecordPriority = `
data "alicloud_dns_domains" "domains" {}
resource "alicloud_dns_record" "record" {
name = "${data.alicloud_dns_domains.domains.domains.0.domain_name}"
host_record = "alipriority"
type = "MX"
value = "www.aliyun.com"
count = 1
priority = 10
}
`
2 changes: 1 addition & 1 deletion alicloud/resource_alicloud_ess_scalinggroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ func buildAlicloudEssScalingGroupArgs(d *schema.ResourceData, meta interface{})
lbs, ok := d.GetOk("loadbalancer_ids")
if ok {
lbsStrings := lbs.([]interface{})
args.LoadBalancerId = strings.Join(expandStringList(lbsStrings), COMMA_SEPARATED)
args.LoadBalancerIds = strings.Join(expandStringList(lbsStrings), COMMA_SEPARATED)
}

return args, nil
Expand Down
1 change: 0 additions & 1 deletion alicloud/resource_alicloud_vroute_entry.go
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,6 @@ func resourceAliyunRouteEntryCreate(d *schema.ResourceData, meta interface{}) er
if err != nil {
return resource.NonRetryableError(fmt.Errorf("Building CreateRouteEntryArgs got an error: %#v", err))
}
//args.ClientToken = fmt.Sprintf("%s-%d", args.ClientToken, timeNow)

if err := conn.CreateRouteEntry(args); err != nil {
// Route Entry does not support concurrence when creating or deleting it;
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion vendor/github.com/denverdino/aliyungo/ess/group.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 2d35c9a

Please sign in to comment.