Skip to content

Commit

Permalink
chore: refactor to latest SDK style
Browse files Browse the repository at this point in the history
  • Loading branch information
jlsalmon committed Jan 17, 2023
1 parent b96a250 commit 459d7c2
Show file tree
Hide file tree
Showing 10 changed files with 133 additions and 67 deletions.
11 changes: 11 additions & 0 deletions .changelog/28922.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
```release-note:new-resource
aws_globalaccelerator_custom_routing_accelerator
```

```release-note:new-resource
aws_globalaccelerator_custom_routing_listener
```

```release-note:new-resource
aws_globalaccelerator_custom_routing_endpoint_group
```
1 change: 0 additions & 1 deletion internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -667,7 +667,6 @@ func New(ctx context.Context) (*schema.Provider, error) {

"aws_fsx_openzfs_snapshot": fsx.DataSourceOpenzfsSnapshot(),

"aws_globalaccelerator_accelerator": globalaccelerator.DataSourceAccelerator(),
"aws_globalaccelerator_custom_routing_accelerator": globalaccelerator.DataSourceCustomRoutingAccelerator(),

"aws_glue_catalog_table": glue.DataSourceCatalogTable(),
Expand Down
53 changes: 39 additions & 14 deletions internal/service/globalaccelerator/custom_routing_accelerator.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,31 @@ func ResourceCustomRoutingAccelerator() *schema.Resource {
},

Schema: map[string]*schema.Schema{
"attributes": {
Type: schema.TypeList,
Optional: true,
MaxItems: 1,
DiffSuppressFunc: verify.SuppressMissingOptionalConfigurationBlock,
Elem: &schema.Resource{
Schema: map[string]*schema.Schema{
"flow_logs_enabled": {
Type: schema.TypeBool,
Optional: true,
Default: false,
},
"flow_logs_s3_bucket": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validation.StringLenBetween(0, 255),
},
"flow_logs_s3_prefix": {
Type: schema.TypeString,
Optional: true,
ValidateFunc: validation.StringLenBetween(0, 255),
},
},
},
},
"name": {
Type: schema.TypeString,
Required: true,
Expand Down Expand Up @@ -90,7 +115,7 @@ func ResourceCustomRoutingAccelerator() *schema.Resource {
}

func resourceCustomRoutingAcceleratorCreate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
tags := defaultTagsConfig.MergeTags(tftags.New(d.Get("tags").(map[string]interface{})))

Expand Down Expand Up @@ -120,7 +145,7 @@ func resourceCustomRoutingAcceleratorCreate(d *schema.ResourceData, meta interfa
}

if v, ok := d.GetOk("attributes"); ok && len(v.([]interface{})) > 0 && v.([]interface{})[0] != nil {
input := expandGlobalAcceleratorUpdateAcceleratorAttributesInput(v.([]interface{})[0].(map[string]interface{}))
input := expandUpdateAcceleratorAttributesInput(v.([]interface{})[0].(map[string]interface{}))
input.AcceleratorArn = aws.String(d.Id())

log.Printf("[DEBUG] Updating Global Accelerator Accelerator attributes: %s", input)
Expand All @@ -137,7 +162,7 @@ func resourceCustomRoutingAcceleratorCreate(d *schema.ResourceData, meta interfa
}

func resourceCustomRoutingAcceleratorRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()
defaultTagsConfig := meta.(*conns.AWSClient).DefaultTagsConfig
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig

Expand All @@ -155,11 +180,11 @@ func resourceCustomRoutingAcceleratorRead(d *schema.ResourceData, meta interface

d.Set("enabled", accelerator.Enabled)
d.Set("dns_name", accelerator.DnsName)
d.Set("hosted_zone_id", globalAcceleratorRoute53ZoneID)
d.Set("hosted_zone_id", route53ZoneID)
d.Set("name", accelerator.Name)
d.Set("ip_address_type", accelerator.IpAddressType)

if err := d.Set("ip_sets", flattenGlobalAcceleratorIpSets(accelerator.IpSets)); err != nil {
if err := d.Set("ip_sets", flattenIPSets(accelerator.IpSets)); err != nil {
return fmt.Errorf("error setting ip_sets: %w", err)
}

Expand All @@ -169,7 +194,7 @@ func resourceCustomRoutingAcceleratorRead(d *schema.ResourceData, meta interface
return fmt.Errorf("error reading Global Accelerator Custom Routing Accelerator (%s) attributes: %w", d.Id(), err)
}

if err := d.Set("attributes", []interface{}{flattenGlobalAcceleratorCustomRoutingAcceleratorAttributes(acceleratorAttributes)}); err != nil {
if err := d.Set("attributes", []interface{}{flattenCustomRoutingAcceleratorAttributes(acceleratorAttributes)}); err != nil {
return fmt.Errorf("error setting attributes: %w", err)
}

Expand All @@ -193,7 +218,7 @@ func resourceCustomRoutingAcceleratorRead(d *schema.ResourceData, meta interface
}

func resourceCustomRoutingAcceleratorUpdate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()

if d.HasChanges("name", "ip_address_type", "enabled") {
input := &globalaccelerator.UpdateCustomRoutingAcceleratorInput{
Expand All @@ -220,9 +245,9 @@ func resourceCustomRoutingAcceleratorUpdate(d *schema.ResourceData, meta interfa
o, n := d.GetChange("attributes")
if len(o.([]interface{})) > 0 && o.([]interface{})[0] != nil {
if len(n.([]interface{})) > 0 && n.([]interface{})[0] != nil {
oInput := expandGlobalAcceleratorUpdateCustomRoutingAcceleratorAttributesInput(o.([]interface{})[0].(map[string]interface{}))
oInput := expandUpdateCustomRoutingAcceleratorAttributesInput(o.([]interface{})[0].(map[string]interface{}))
oInput.AcceleratorArn = aws.String(d.Id())
nInput := expandGlobalAcceleratorUpdateCustomRoutingAcceleratorAttributesInput(n.([]interface{})[0].(map[string]interface{}))
nInput := expandUpdateCustomRoutingAcceleratorAttributesInput(n.([]interface{})[0].(map[string]interface{}))
nInput.AcceleratorArn = aws.String(d.Id())

// To change flow logs bucket and prefix attributes while flows are enabled, first disable flow logs.
Expand Down Expand Up @@ -263,7 +288,7 @@ func resourceCustomRoutingAcceleratorUpdate(d *schema.ResourceData, meta interfa
}

func resourceCustomRoutingAcceleratorDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()

{
input := &globalaccelerator.UpdateCustomRoutingAcceleratorInput{
Expand Down Expand Up @@ -307,10 +332,10 @@ func resourceCustomRoutingAcceleratorDelete(d *schema.ResourceData, meta interfa
return nil
}

func expandGlobalAcceleratorUpdateCustomRoutingAcceleratorAttributesInput(tfMap map[string]interface{}) *globalaccelerator.UpdateCustomRoutingAcceleratorAttributesInput {
return (*globalaccelerator.UpdateCustomRoutingAcceleratorAttributesInput)(expandGlobalAcceleratorUpdateAcceleratorAttributesInput(tfMap))
func expandUpdateCustomRoutingAcceleratorAttributesInput(tfMap map[string]interface{}) *globalaccelerator.UpdateCustomRoutingAcceleratorAttributesInput {
return (*globalaccelerator.UpdateCustomRoutingAcceleratorAttributesInput)(expandUpdateAcceleratorAttributesInput(tfMap))
}

func flattenGlobalAcceleratorCustomRoutingAcceleratorAttributes(apiObject *globalaccelerator.CustomRoutingAcceleratorAttributes) map[string]interface{} {
return flattenGlobalAcceleratorAcceleratorAttributes((*globalaccelerator.AcceleratorAttributes)(apiObject))
func flattenCustomRoutingAcceleratorAttributes(apiObject *globalaccelerator.CustomRoutingAcceleratorAttributes) map[string]interface{} {
return flattenAcceleratorAttributes((*globalaccelerator.AcceleratorAttributes)(apiObject))
}
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ func DataSourceCustomRoutingAccelerator() *schema.Resource {
}

func dataSourceCustomRoutingAcceleratorRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()
ignoreTagsConfig := meta.(*conns.AWSClient).IgnoreTagsConfig

var results []*globalaccelerator.CustomRoutingAccelerator
Expand Down Expand Up @@ -127,17 +127,17 @@ func dataSourceCustomRoutingAcceleratorRead(d *schema.ResourceData, meta interfa
d.Set("arn", accelerator.AcceleratorArn)
d.Set("enabled", accelerator.Enabled)
d.Set("dns_name", accelerator.DnsName)
d.Set("hosted_zone_id", globalAcceleratorRoute53ZoneID)
d.Set("hosted_zone_id", route53ZoneID)
d.Set("name", accelerator.Name)
d.Set("ip_address_type", accelerator.IpAddressType)
d.Set("ip_sets", flattenGlobalAcceleratorIpSets(accelerator.IpSets))
d.Set("ip_sets", flattenIPSets(accelerator.IpSets))

acceleratorAttributes, err := FindCustomRoutingAcceleratorAttributesByARN(conn, d.Id())
if err != nil {
return fmt.Errorf("error reading Global Accelerator Custom Routing Accelerator (%s) attributes: %w", d.Id(), err)
}

if err := d.Set("attributes", []interface{}{flattenGlobalAcceleratorCustomRoutingAcceleratorAttributes(acceleratorAttributes)}); err != nil {
if err := d.Set("attributes", []interface{}{flattenCustomRoutingAcceleratorAttributes(acceleratorAttributes)}); err != nil {
return fmt.Errorf("error setting attributes: %w", err)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@ func TestAccGlobalAcceleratorCustomRoutingAcceleratorDataSource_basic(t *testing
dataSourceName2 := "data.aws_globalaccelerator_custom_routing_accelerator.test_by_name"

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t); testAccPreCheckGlobalAccelerator(t) },
ErrorCheck: acctest.ErrorCheck(t, globalaccelerator.EndpointsID),
Providers: acctest.Providers,
CheckDestroy: testAccCheckGlobalAcceleratorCustomRoutingAcceleratorDestroy,
PreCheck: func() { acctest.PreCheck(t); testAccPreCheck(t) },
ErrorCheck: acctest.ErrorCheck(t, globalaccelerator.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
CheckDestroy: testAccCheckGlobalAcceleratorCustomRoutingAcceleratorDestroy,
Steps: []resource.TestStep{
{
Config: testAccGlobalAcceleratorCustomRoutingAcceleratorDataSourceConfig(resourceName),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ func TestAccGlobalAcceleratorCustomRoutingAccelerator_basic(t *testing.T) {
dnsNameRegex := regexp.MustCompile(`^a[a-f0-9]{16}\.awsglobalaccelerator\.com$`)

resource.ParallelTest(t, resource.TestCase{
PreCheck: func() { acctest.PreCheck(t); testAccPreCheckGlobalAccelerator(t) },
ErrorCheck: acctest.ErrorCheck(t, globalaccelerator.EndpointsID),
Providers: acctest.Providers,
CheckDestroy: testAccCheckGlobalAcceleratorCustomRoutingAcceleratorDestroy,
PreCheck: func() { acctest.PreCheck(t); testAccPreCheck(t) },
ErrorCheck: acctest.ErrorCheck(t, globalaccelerator.EndpointsID),
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories,
CheckDestroy: testAccCheckGlobalAcceleratorCustomRoutingAcceleratorDestroy,
Steps: []resource.TestStep{
{
Config: testAccGlobalAcceleratorCustomRoutingAcceleratorConfig(rName),
Expand Down Expand Up @@ -62,7 +62,7 @@ resource "aws_globalaccelerator_custom_routing_accelerator" "test" {

func testAccCheckGlobalAcceleratorCustomRoutingAcceleratorExists(name string) resource.TestCheckFunc {
return func(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).GlobalAcceleratorConn
conn := acctest.Provider.Meta().(*conns.AWSClient).GlobalAcceleratorConn()

rs, ok := s.RootModule().Resources[name]
if !ok {
Expand All @@ -84,7 +84,7 @@ func testAccCheckGlobalAcceleratorCustomRoutingAcceleratorExists(name string) re
}

func testAccCheckGlobalAcceleratorCustomRoutingAcceleratorDestroy(s *terraform.State) error {
conn := acctest.Provider.Meta().(*conns.AWSClient).GlobalAcceleratorConn
conn := acctest.Provider.Meta().(*conns.AWSClient).GlobalAcceleratorConn()

for _, rs := range s.RootModule().Resources {
if rs.Type != "aws_globalaccelerator_custom_routing_accelerator" {
Expand Down
75 changes: 53 additions & 22 deletions internal/service/globalaccelerator/custom_routing_endpoint_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ package globalaccelerator

import (
"fmt"
"github.com/hashicorp/terraform-provider-aws/internal/flex"
"log"
"time"

"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/service/ec2"
"github.com/aws/aws-sdk-go/service/globalaccelerator"
"github.com/hashicorp/aws-sdk-go-base/tfawserr"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
Expand Down Expand Up @@ -69,7 +69,7 @@ func ResourceCustomRoutingEndpointGroup() *schema.Resource {
Optional: true,
Elem: &schema.Schema{
Type: schema.TypeString,
ValidateFunc: validation.StringInSlice(ec2.TransportProtocol_Values(), false),
ValidateFunc: validation.StringInSlice(globalaccelerator.CustomRoutingProtocol_Values(), false),
},
},
},
Expand Down Expand Up @@ -102,7 +102,7 @@ func ResourceCustomRoutingEndpointGroup() *schema.Resource {
}

func resourceCustomRoutingEndpointGroupCreate(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()
region := meta.(*conns.AWSClient).Region

opts := &globalaccelerator.CreateCustomRoutingEndpointGroupInput{
Expand All @@ -112,7 +112,7 @@ func resourceCustomRoutingEndpointGroupCreate(d *schema.ResourceData, meta inter
}

if v, ok := d.GetOk("destination_configuration"); ok {
opts.DestinationConfigurations = expandGlobalAcceleratorCustomRoutingDestinationConfigurations(v.(*schema.Set).List())
opts.DestinationConfigurations = expandCustomRoutingDestinationConfigurations(v.(*schema.Set).List())
}

log.Printf("[DEBUG] Create Global Accelerator custom routing endpoint group: %s", opts)
Expand All @@ -138,7 +138,7 @@ func resourceCustomRoutingEndpointGroupCreate(d *schema.ResourceData, meta inter
if v, ok := d.GetOk("endpoint_configuration"); ok {
optsEndpoints := &globalaccelerator.AddCustomRoutingEndpointsInput{
EndpointGroupArn: resp.EndpointGroup.EndpointGroupArn,
EndpointConfigurations: expandGlobalAcceleratorCustomRoutingEndpointConfigurations(v.(*schema.Set).List()),
EndpointConfigurations: expandCustomRoutingEndpointConfigurations(v.(*schema.Set).List()),
}

_, err := conn.AddCustomRoutingEndpoints(optsEndpoints)
Expand All @@ -155,7 +155,7 @@ func resourceCustomRoutingEndpointGroupCreate(d *schema.ResourceData, meta inter
}

func resourceCustomRoutingEndpointGroupRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()

endpointGroup, err := FindCustomRoutingEndpointGroupByARN(conn, d.Id())

Expand All @@ -176,11 +176,11 @@ func resourceCustomRoutingEndpointGroupRead(d *schema.ResourceData, meta interfa
}

d.Set("arn", endpointGroup.EndpointGroupArn)
if err := d.Set("destination_configuration", flattenGlobalAcceleratorCustomRoutingDestinationDescriptions(endpointGroup.DestinationDescriptions)); err != nil {
if err := d.Set("destination_configuration", flattenCustomRoutingDestinationDescriptions(endpointGroup.DestinationDescriptions)); err != nil {
return fmt.Errorf("error setting destination_configuration: %w", err)
}
d.Set("endpoint_group_region", endpointGroup.EndpointGroupRegion)
if err := d.Set("endpoint_configuration", flattenGlobalAcceleratorCustomRoutingEndpointDescriptions(endpointGroup.EndpointDescriptions)); err != nil {
if err := d.Set("endpoint_configuration", flattenCustomRoutingEndpointDescriptions(endpointGroup.EndpointDescriptions)); err != nil {
return fmt.Errorf("error setting endpoint_configuration: %w", err)
}
d.Set("listener_arn", listenerARN)
Expand All @@ -189,7 +189,7 @@ func resourceCustomRoutingEndpointGroupRead(d *schema.ResourceData, meta interfa
}

func resourceCustomRoutingEndpointGroupDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn
conn := meta.(*conns.AWSClient).GlobalAcceleratorConn()

input := &globalaccelerator.DeleteCustomRoutingEndpointGroupInput{
EndpointGroupArn: aws.String(d.Id()),
Expand Down Expand Up @@ -219,24 +219,55 @@ func resourceCustomRoutingEndpointGroupDelete(d *schema.ResourceData, meta inter
return nil
}

func expandGlobalAcceleratorCustomRoutingDestinationConfigurations(configurations []interface{}) []*globalaccelerator.CustomRoutingDestinationConfiguration {
out := make([]*globalaccelerator.CustomRoutingDestinationConfiguration, len(configurations))
func expandCustomRoutingDestinationConfigurations(configurations []interface{}) []*globalaccelerator.CustomRoutingDestinationConfiguration {
if len(configurations) == 0 {
return nil
}

for i, raw := range configurations {
configuration := raw.(map[string]interface{})
m := globalaccelerator.CustomRoutingDestinationConfiguration{}
var apiObjects []*globalaccelerator.CustomRoutingDestinationConfiguration

m.FromPort = aws.Int64(int64(configuration["from_port"].(int)))
m.ToPort = aws.Int64(int64(configuration["to_port"].(int)))
m.Protocols = aws.StringSlice(configuration["protocols"].([]string))
for _, tfMapRaw := range configurations {
tfMap, ok := tfMapRaw.(map[string]interface{})

out[i] = &m
if !ok {
continue
}

apiObject := expandCustomRoutingEndpointDestinationConfiguration(tfMap)

if apiObject == nil {
continue
}

apiObjects = append(apiObjects, apiObject)
}

return out
return apiObjects
}

func expandCustomRoutingEndpointDestinationConfiguration(tfMap map[string]interface{}) *globalaccelerator.CustomRoutingDestinationConfiguration {
if tfMap == nil {
return nil
}

apiObject := &globalaccelerator.CustomRoutingDestinationConfiguration{}

if v, ok := tfMap["from_port"].(int64); ok {
apiObject.FromPort = aws.Int64(v)
}

if v, ok := tfMap["to_port"].(int64); ok {
apiObject.ToPort = aws.Int64(v)
}

if v, ok := tfMap["protocols"].(*schema.Set); ok {
apiObject.Protocols = flex.ExpandStringSet(v)
}

return apiObject
}

func expandGlobalAcceleratorCustomRoutingEndpointConfigurations(configurations []interface{}) []*globalaccelerator.CustomRoutingEndpointConfiguration {
func expandCustomRoutingEndpointConfigurations(configurations []interface{}) []*globalaccelerator.CustomRoutingEndpointConfiguration {
out := make([]*globalaccelerator.CustomRoutingEndpointConfiguration, len(configurations))

for i, raw := range configurations {
Expand All @@ -251,7 +282,7 @@ func expandGlobalAcceleratorCustomRoutingEndpointConfigurations(configurations [
return out
}

func flattenGlobalAcceleratorCustomRoutingEndpointDescriptions(configurations []*globalaccelerator.CustomRoutingEndpointDescription) []interface{} {
func flattenCustomRoutingEndpointDescriptions(configurations []*globalaccelerator.CustomRoutingEndpointDescription) []interface{} {
out := make([]interface{}, len(configurations))

for i, configuration := range configurations {
Expand All @@ -265,7 +296,7 @@ func flattenGlobalAcceleratorCustomRoutingEndpointDescriptions(configurations []
return out
}

func flattenGlobalAcceleratorCustomRoutingDestinationDescriptions(configurations []*globalaccelerator.CustomRoutingDestinationDescription) []interface{} {
func flattenCustomRoutingDestinationDescriptions(configurations []*globalaccelerator.CustomRoutingDestinationDescription) []interface{} {
out := make([]interface{}, len(configurations))

for i, configuration := range configurations {
Expand Down

0 comments on commit 459d7c2

Please sign in to comment.