Skip to content

Commit

Permalink
provider/aws: aws_route53_record import error processing (hashicorp#1…
Browse files Browse the repository at this point in the history
…1603)

Fixes: hashicorp#11549

When a user passes the wrong argument to a route53_record import, they
got a crash. This was because we expected the ID to parse correctly. The
crash looked like this:

```
% terraform import aws_route53_record.import1 mike.westredd.com
aws_route53_record.import1: Importing from ID "mike.westredd.com"...
aws_route53_record.import1: Import complete!
  Imported aws_route53_record (ID: mike.westredd.com)
aws_route53_record.import1: Refreshing state... (ID: mike.westredd.com)
Error importing: 1 error(s) occurred:

* aws_route53_record.import1: unexpected EOF
panic: runtime error: index out of range
```

Rather than throwing a panic to the user, we should present them with a more useful message that tells them what the error is:

```
% terraform import aws_route53_record.import mike.westredd.com
aws_route53_record.import: Importing from ID "mike.westredd.com"...
aws_route53_record.import: Import complete!
  Imported aws_route53_record (ID: mike.westredd.com)
aws_route53_record.import: Refreshing state... (ID: mike.westredd.com)
Error importing: 1 error(s) occurred:

* aws_route53_record.import: Error Importing aws_route_53 record. Please make sure the record ID is in the form ZONEID_RECORDNAME_TYPE (i.e. Z4KAPRWWNC7JR_dev_A
```

At least they can work out what the problem is in this case
  • Loading branch information
stack72 authored and arcadiatea committed Feb 7, 2017
1 parent 97d4788 commit d67ca92
Showing 1 changed file with 5 additions and 0 deletions.
5 changes: 5 additions & 0 deletions builtin/providers/aws/resource_aws_route53_record.go
Original file line number Diff line number Diff line change
Expand Up @@ -459,6 +459,11 @@ func resourceAwsRoute53RecordRead(d *schema.ResourceData, meta interface{}) erro
// If we don't have a zone ID we're doing an import. Parse it from the ID.
if _, ok := d.GetOk("zone_id"); !ok {
parts := strings.Split(d.Id(), "_")

if len(parts) == 1 {
return fmt.Errorf("Error Importing aws_route_53 record. Please make sure the record ID is in the form ZONEID_RECORDNAME_TYPE (i.e. Z4KAPRWWNC7JR_dev_A")
}

d.Set("zone_id", parts[0])
d.Set("name", parts[1])
d.Set("type", parts[2])
Expand Down

0 comments on commit d67ca92

Please sign in to comment.