Auto add full domain suffix if not present
This commit is contained in:
parent
4c7b732dad
commit
90c8317899
|
@ -59,6 +59,22 @@ func resourceAwsRoute53Record() *schema.Resource {
|
||||||
func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) error {
|
func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) error {
|
||||||
conn := meta.(*AWSClient).route53
|
conn := meta.(*AWSClient).route53
|
||||||
|
|
||||||
|
zone := d.Get("zone_id").(string)
|
||||||
|
|
||||||
|
zoneRecord, err := conn.GetHostedZone(zone)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if the current record name contains the zone suffix.
|
||||||
|
// If it does not, add the zone name to form a fully qualified name
|
||||||
|
// and keep AWS happy.
|
||||||
|
recordName := d.Get("name").(string)
|
||||||
|
zoneName := strings.Trim(zoneRecord.HostedZone.Name, ".")
|
||||||
|
if ok := strings.HasSuffix(recordName, zoneName); !ok {
|
||||||
|
d.Set("name", strings.Join([]string{recordName, zoneName}, "."))
|
||||||
|
}
|
||||||
|
|
||||||
// Get the record
|
// Get the record
|
||||||
rec, err := resourceAwsRoute53RecordBuildSet(d)
|
rec, err := resourceAwsRoute53RecordBuildSet(d)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -77,7 +93,7 @@ func resourceAwsRoute53RecordCreate(d *schema.ResourceData, meta interface{}) er
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
zone := d.Get("zone_id").(string)
|
|
||||||
log.Printf("[DEBUG] Creating resource records for zone: %s, name: %s",
|
log.Printf("[DEBUG] Creating resource records for zone: %s, name: %s",
|
||||||
zone, d.Get("name").(string))
|
zone, d.Get("name").(string))
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,22 @@ func TestAccRoute53Record(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccRoute53Record_generatesSuffix(t *testing.T) {
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckRoute53RecordDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccRoute53RecordConfigSuffix,
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckRoute53RecordExists("aws_route53_record.default"),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckRoute53RecordDestroy(s *terraform.State) error {
|
func testAccCheckRoute53RecordDestroy(s *terraform.State) error {
|
||||||
conn := testAccProvider.Meta().(*AWSClient).route53
|
conn := testAccProvider.Meta().(*AWSClient).route53
|
||||||
for _, rs := range s.RootModule().Resources {
|
for _, rs := range s.RootModule().Resources {
|
||||||
|
@ -100,3 +116,17 @@ resource "aws_route53_record" "default" {
|
||||||
records = ["127.0.0.1", "127.0.0.27"]
|
records = ["127.0.0.1", "127.0.0.27"]
|
||||||
}
|
}
|
||||||
`
|
`
|
||||||
|
|
||||||
|
const testAccRoute53RecordConfigSuffix = `
|
||||||
|
resource "aws_route53_zone" "main" {
|
||||||
|
name = "notexample.com"
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "aws_route53_record" "default" {
|
||||||
|
zone_id = "${aws_route53_zone.main.zone_id}"
|
||||||
|
name = "subdomain"
|
||||||
|
type = "A"
|
||||||
|
ttl = "30"
|
||||||
|
records = ["127.0.0.1", "127.0.0.27"]
|
||||||
|
}
|
||||||
|
`
|
||||||
|
|
Loading…
Reference in New Issue