Merge pull request #3574 from hashicorp/b-aws-r53-name-fix

provider/aws: Downcase Route 53 record names in statefile
This commit is contained in:
Clint 2015-11-10 16:41:40 -06:00
commit dbc008e330
2 changed files with 13 additions and 5 deletions

View File

@ -28,6 +28,10 @@ func resourceAwsRoute53Record() *schema.Resource {
Type: schema.TypeString, Type: schema.TypeString,
Required: true, Required: true,
ForceNew: true, ForceNew: true,
StateFunc: func(v interface{}) string {
value := v.(string)
return strings.ToLower(value)
},
}, },
"fqdn": &schema.Schema{ "fqdn": &schema.Schema{
@ -192,12 +196,13 @@ func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) er
// Generate an ID // Generate an ID
vars := []string{ vars := []string{
zone, zone,
d.Get("name").(string), strings.ToLower(d.Get("name").(string)),
d.Get("type").(string), d.Get("type").(string),
} }
if v, ok := d.GetOk("set_identifier"); ok { if v, ok := d.GetOk("set_identifier"); ok {
vars = append(vars, v.(string)) vars = append(vars, v.(string))
} }
d.SetId(strings.Join(vars, "_")) d.SetId(strings.Join(vars, "_"))
// Wait until we are done // Wait until we are done
@ -242,6 +247,8 @@ func resourceAwsRoute53RecordRead(d *schema.ResourceData, meta interface{}) erro
StartRecordType: aws.String(d.Get("type").(string)), StartRecordType: aws.String(d.Get("type").(string)),
} }
log.Printf("[DEBUG] List resource records sets for zone: %s, opts: %s",
zone, lopts)
resp, err := conn.ListResourceRecordSets(lopts) resp, err := conn.ListResourceRecordSets(lopts)
if err != nil { if err != nil {
return err return err
@ -251,7 +258,7 @@ func resourceAwsRoute53RecordRead(d *schema.ResourceData, meta interface{}) erro
found := false found := false
for _, record := range resp.ResourceRecordSets { for _, record := range resp.ResourceRecordSets {
name := cleanRecordName(*record.Name) name := cleanRecordName(*record.Name)
if FQDN(name) != FQDN(*lopts.StartRecordName) { if FQDN(strings.ToLower(name)) != FQDN(strings.ToLower(*lopts.StartRecordName)) {
continue continue
} }
if strings.ToUpper(*record.Type) != strings.ToUpper(*lopts.StartRecordType) { if strings.ToUpper(*record.Type) != strings.ToUpper(*lopts.StartRecordType) {
@ -279,6 +286,7 @@ func resourceAwsRoute53RecordRead(d *schema.ResourceData, meta interface{}) erro
} }
if !found { if !found {
log.Printf("[DEBUG] No matching record found for: %s, removing from state file", en)
d.SetId("") d.SetId("")
} }
@ -440,7 +448,7 @@ func cleanRecordName(name string) string {
// If it does not, add the zone name to form a fully qualified name // If it does not, add the zone name to form a fully qualified name
// and keep AWS happy. // and keep AWS happy.
func expandRecordName(name, zone string) string { func expandRecordName(name, zone string) string {
rn := strings.TrimSuffix(name, ".") rn := strings.ToLower(strings.TrimSuffix(name, "."))
zone = strings.TrimSuffix(zone, ".") zone = strings.TrimSuffix(zone, ".")
if !strings.HasSuffix(rn, zone) { if !strings.HasSuffix(rn, zone) {
rn = strings.Join([]string{name, zone}, ".") rn = strings.Join([]string{name, zone}, ".")

View File

@ -291,7 +291,7 @@ func testAccCheckRoute53RecordExists(n string) resource.TestCheckFunc {
// rec := resp.ResourceRecordSets[0] // rec := resp.ResourceRecordSets[0]
for _, rec := range resp.ResourceRecordSets { for _, rec := range resp.ResourceRecordSets {
recName := cleanRecordName(*rec.Name) recName := cleanRecordName(*rec.Name)
if FQDN(recName) == FQDN(en) && *rec.Type == rType { if FQDN(strings.ToLower(recName)) == FQDN(strings.ToLower(en)) && *rec.Type == rType {
return nil return nil
} }
} }
@ -306,7 +306,7 @@ resource "aws_route53_zone" "main" {
resource "aws_route53_record" "default" { resource "aws_route53_record" "default" {
zone_id = "${aws_route53_zone.main.zone_id}" zone_id = "${aws_route53_zone.main.zone_id}"
name = "www.notexample.com" name = "www.NOTexamplE.com"
type = "A" type = "A"
ttl = "30" ttl = "30"
records = ["127.0.0.1", "127.0.0.27"] records = ["127.0.0.1", "127.0.0.27"]