Skip to content

Commit

Permalink
service/ec2: Refactor aws_vpn_gateway data source and resource to use…
Browse files Browse the repository at this point in the history
… keyvaluetags package

Reference: #10688

Output from acceptance testing:

```
--- PASS: TestAccAWSVpnGateway_disappears (43.96s)
--- PASS: TestAccAWSVpnGateway_withAvailabilityZoneSetToState (45.27s)
--- PASS: TestAccAWSVpnGateway_withAmazonSideAsnSetToState (57.28s)
--- PASS: TestAccAWSVpnGateway_tags (66.12s)
--- PASS: TestAccAWSVpnGateway_delete (67.27s)
--- PASS: TestAccAWSVpnGateway_basic (74.69s)
--- PASS: TestAccAWSVpnGateway_reattach (114.06s)

--- PASS: TestAccDataSourceAwsVpnGateway_unattached (18.47s)
--- PASS: TestAccDataSourceAwsVpnGateway_attached (54.18s)
```
  • Loading branch information
bflad committed Feb 5, 2020
1 parent b010c32 commit 82c4ad2
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 13 deletions.
8 changes: 6 additions & 2 deletions aws/data_source_aws_vpn_gateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func dataSourceAwsVpnGateway() *schema.Resource {
Expand Down Expand Up @@ -77,7 +78,7 @@ func dataSourceAwsVpnGatewayRead(d *schema.ResourceData, meta interface{}) error
)...)
}
req.Filters = append(req.Filters, buildEC2TagFilterList(
tagsFromMap(d.Get("tags").(map[string]interface{})),
keyvaluetags.New(d.Get("tags").(map[string]interface{})).Ec2Tags(),
)...)
req.Filters = append(req.Filters, buildEC2CustomFilterList(
d.Get("filter").(*schema.Set),
Expand Down Expand Up @@ -105,7 +106,10 @@ func dataSourceAwsVpnGatewayRead(d *schema.ResourceData, meta interface{}) error
d.Set("state", vgw.State)
d.Set("availability_zone", vgw.AvailabilityZone)
d.Set("amazon_side_asn", strconv.FormatInt(aws.Int64Value(vgw.AmazonSideAsn), 10))
d.Set("tags", tagsToMap(vgw.Tags))

if err := d.Set("tags", keyvaluetags.Ec2KeyValueTags(vgw.Tags).IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

for _, attachment := range vgw.VpcAttachments {
if *attachment.State == "attached" {
Expand Down
36 changes: 25 additions & 11 deletions aws/resource_aws_vpn_gateway.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ import (
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/hashicorp/terraform-plugin-sdk/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/helper/schema"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
)

func resourceAwsVpnGateway() *schema.Resource {
Expand Down Expand Up @@ -71,13 +72,21 @@ func resourceAwsVpnGatewayCreate(d *schema.ResourceData, meta interface{}) error
return fmt.Errorf("Error creating VPN gateway: %s", err)
}

// Get the ID and store it
vpnGateway := resp.VpnGateway
d.SetId(*vpnGateway.VpnGatewayId)
log.Printf("[INFO] VPN Gateway ID: %s", *vpnGateway.VpnGatewayId)
d.SetId(aws.StringValue(resp.VpnGateway.VpnGatewayId))

// Attach the VPN gateway to the correct VPC
return resourceAwsVpnGatewayUpdate(d, meta)
if _, ok := d.GetOk("vpc_id"); ok {
if err := resourceAwsVpnGatewayAttach(d, meta); err != nil {
return fmt.Errorf("error attaching EC2 VPN Gateway (%s) to VPC: %s", d.Id(), err)
}
}

if v := d.Get("tags").(map[string]interface{}); len(v) > 0 {
if err := keyvaluetags.Ec2UpdateTags(conn, d.Id(), nil, v); err != nil {
return fmt.Errorf("error adding EC2 VPN Gateway (%s) tags: %s", d.Id(), err)
}
}

return resourceAwsVpnGatewayRead(d, meta)
}

func resourceAwsVpnGatewayRead(d *schema.ResourceData, meta interface{}) error {
Expand Down Expand Up @@ -115,7 +124,10 @@ func resourceAwsVpnGatewayRead(d *schema.ResourceData, meta interface{}) error {
d.Set("availability_zone", vpnGateway.AvailabilityZone)
}
d.Set("amazon_side_asn", strconv.FormatInt(aws.Int64Value(vpnGateway.AmazonSideAsn), 10))
d.Set("tags", tagsToMap(vpnGateway.Tags))

if err := d.Set("tags", keyvaluetags.Ec2KeyValueTags(vpnGateway.Tags).IgnoreAws().Map()); err != nil {
return fmt.Errorf("error setting tags: %s", err)
}

return nil
}
Expand All @@ -135,11 +147,13 @@ func resourceAwsVpnGatewayUpdate(d *schema.ResourceData, meta interface{}) error

conn := meta.(*AWSClient).ec2conn

if err := setTags(conn, d); err != nil {
return err
}
if d.HasChange("tags") {
o, n := d.GetChange("tags")

d.SetPartial("tags")
if err := keyvaluetags.Ec2UpdateTags(conn, d.Id(), o, n); err != nil {
return fmt.Errorf("error updating EC2 VPN Gateway (%s) tags: %s", d.Id(), err)
}
}

return resourceAwsVpnGatewayRead(d, meta)
}
Expand Down

0 comments on commit 82c4ad2

Please sign in to comment.