Skip to content

Commit

Permalink
r/aws_s3_bucket_intelligent_tiering_configuration: New code structure.
Browse files Browse the repository at this point in the history
Acceptance test output:

% make testacc PKG_NAME=internal/service/s3 TESTARGS='-run=TestAccS3BucketIntelligentTieringConfiguration_'
==> Checking that code complies with gofmt requirements...
TF_ACC=1 go test ./internal/service/s3/... -v -count 1 -parallel 20 -run=TestAccS3BucketIntelligentTieringConfiguration_ -timeout 180m
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_basic
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_basic
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_disableBasic
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_disableBasic
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_updateBasic
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_updateBasic
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Empty
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Empty
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Prefix
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Prefix
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithFilter_SingleTag
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithFilter_SingleTag
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithFilter_MultipleTags
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithFilter_MultipleTags
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithFilter_PrefixAndTags
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithFilter_PrefixAndTags
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Remove
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Remove
=== RUN   TestAccS3BucketIntelligentTieringConfiguration_WithTier_Empty
=== PAUSE TestAccS3BucketIntelligentTieringConfiguration_WithTier_Empty
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_basic
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithTier_Empty
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithFilter_SingleTag
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithFilter_MultipleTags
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Remove
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithFilter_PrefixAndTags
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Empty
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Prefix
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_disableBasic
=== CONT  TestAccS3BucketIntelligentTieringConfiguration_updateBasic
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithTier_Empty (3.00s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Empty (3.18s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_basic (34.85s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithFilter_MultipleTags (60.70s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Prefix (60.70s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithFilter_Remove (60.72s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_disableBasic (60.72s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithFilter_SingleTag (60.72s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_WithFilter_PrefixAndTags (60.75s)
--- PASS: TestAccS3BucketIntelligentTieringConfiguration_updateBasic (86.88s)
PASS
ok  	github.com/hashicorp/terraform-provider-aws/internal/service/s3	90.313s
  • Loading branch information
ewbankkit committed Nov 10, 2021
1 parent b8d621c commit 9a3dcbc
Show file tree
Hide file tree
Showing 3 changed files with 193 additions and 683 deletions.
21 changes: 11 additions & 10 deletions internal/provider/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -1462,16 +1462,17 @@ func Provider() *schema.Provider {
"aws_route53_resolver_rule": route53resolver.ResourceRule(),
"aws_route53_resolver_rule_association": route53resolver.ResourceRuleAssociation(),

"aws_s3_bucket": s3.ResourceBucket(),
"aws_s3_bucket_analytics_configuration": s3.ResourceBucketAnalyticsConfiguration(),
"aws_s3_bucket_inventory": s3.ResourceBucketInventory(),
"aws_s3_bucket_metric": s3.ResourceBucketMetric(),
"aws_s3_bucket_notification": s3.ResourceBucketNotification(),
"aws_s3_bucket_object": s3.ResourceBucketObject(),
"aws_s3_bucket_ownership_controls": s3.ResourceBucketOwnershipControls(),
"aws_s3_bucket_policy": s3.ResourceBucketPolicy(),
"aws_s3_bucket_public_access_block": s3.ResourceBucketPublicAccessBlock(),
"aws_s3_object_copy": s3.ResourceObjectCopy(),
"aws_s3_bucket": s3.ResourceBucket(),
"aws_s3_bucket_analytics_configuration": s3.ResourceBucketAnalyticsConfiguration(),
"aws_s3_bucket_intelligent_tiering_configuration": s3.ResourceBucketIntelligentTieringConfiguration(),
"aws_s3_bucket_inventory": s3.ResourceBucketInventory(),
"aws_s3_bucket_metric": s3.ResourceBucketMetric(),
"aws_s3_bucket_notification": s3.ResourceBucketNotification(),
"aws_s3_bucket_object": s3.ResourceBucketObject(),
"aws_s3_bucket_ownership_controls": s3.ResourceBucketOwnershipControls(),
"aws_s3_bucket_policy": s3.ResourceBucketPolicy(),
"aws_s3_bucket_public_access_block": s3.ResourceBucketPublicAccessBlock(),
"aws_s3_object_copy": s3.ResourceObjectCopy(),

"aws_s3_access_point": s3control.ResourceAccessPoint(),
"aws_s3_account_public_access_block": s3control.ResourceAccountPublicAccessBlock(),
Expand Down
64 changes: 30 additions & 34 deletions internal/service/s3/bucket_intelligent_tiering_configuration.go
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package aws
package s3

import (
"fmt"
Expand All @@ -12,16 +12,17 @@ import (
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/validation"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/keyvaluetags"
"github.com/terraform-providers/terraform-provider-aws/aws/internal/tfresource"
"github.com/hashicorp/terraform-provider-aws/internal/conns"
tftags "github.com/hashicorp/terraform-provider-aws/internal/tags"
"github.com/hashicorp/terraform-provider-aws/internal/tfresource"
)

func resourceAwsS3IntelligentTieringConfiguration() *schema.Resource {
func ResourceBucketIntelligentTieringConfiguration() *schema.Resource {
return &schema.Resource{
Create: resourceAwsS3IntelligentTieringConfigurationPut,
Read: resourceAwsS3IntelligentTieringConfigurationRead,
Update: resourceAwsS3IntelligentTieringConfigurationPut,
Delete: resourceAwsS3IntelligentTieringConfigurationDelete,
Create: resourceBucketIntelligentTieringConfigurationPut,
Read: resourceBucketIntelligentTieringConfigurationRead,
Update: resourceBucketIntelligentTieringConfigurationPut,
Delete: resourceBucketIntelligentTieringConfigurationDelete,
Importer: &schema.ResourceImporter{
State: schema.ImportStatePassthrough,
},
Expand Down Expand Up @@ -85,8 +86,8 @@ func resourceAwsS3IntelligentTieringConfiguration() *schema.Resource {
}
}

func resourceAwsS3IntelligentTieringConfigurationPut(d *schema.ResourceData, meta interface{}) error {
s3conn := meta.(*AWSClient).s3conn
func resourceBucketIntelligentTieringConfigurationPut(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).S3Conn

bucket := d.Get("bucket").(string)
tiers := d.Get("tier").(*schema.Set).List()
Expand All @@ -108,7 +109,7 @@ func resourceAwsS3IntelligentTieringConfigurationPut(d *schema.ResourceData, met
}

err := resource.Retry(1*time.Minute, func() *resource.RetryError {
_, err := s3conn.PutBucketIntelligentTieringConfiguration(input)
_, err := conn.PutBucketIntelligentTieringConfiguration(input)

if tfawserr.ErrCodeEquals(err, s3.ErrCodeNoSuchBucket) {
return resource.RetryableError(err)
Expand All @@ -121,16 +122,16 @@ func resourceAwsS3IntelligentTieringConfigurationPut(d *schema.ResourceData, met
})

if tfresource.TimedOut(err) {
_, err = s3conn.PutBucketIntelligentTieringConfiguration(input)
_, err = conn.PutBucketIntelligentTieringConfiguration(input)
}

d.SetId(fmt.Sprintf("%s:%s", bucket, name))

return resourceAwsS3IntelligentTieringConfigurationRead(d, meta)
return resourceBucketIntelligentTieringConfigurationRead(d, meta)
}

func resourceAwsS3IntelligentTieringConfigurationRead(d *schema.ResourceData, meta interface{}) error {
s3conn := meta.(*AWSClient).s3conn
func resourceBucketIntelligentTieringConfigurationRead(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).S3Conn

bucket, name, err := resourceAwsS3BucketIntelligentTieringConfigurationParseID(d.Id())
if err != nil {
Expand All @@ -146,15 +147,9 @@ func resourceAwsS3IntelligentTieringConfigurationRead(d *schema.ResourceData, me
}
log.Printf("[DEBUG] Reading S3 bucket Intelligent Tiering Configuration: %s, with id %s", input, d.Id())

output, err := s3conn.GetBucketIntelligentTieringConfiguration(input)
output, err := conn.GetBucketIntelligentTieringConfiguration(input)

if !d.IsNewResource() && isAWSErr(err, s3.ErrCodeNoSuchBucket, "") {
log.Printf("[WARN] S3 Bucket Intelligent Tiering Configuration (%s) not found, removing from state", d.Id())
d.SetId("")
return nil
}

if !d.IsNewResource() && isAWSErr(err, "NoSuchConfiguration", "The specified configuration does not exist.") {
if !d.IsNewResource() && tfawserr.ErrCodeEquals(err, s3.ErrCodeNoSuchBucket, ErrCodeNoSuchConfiguration) {
log.Printf("[WARN] S3 Bucket Intelligent Tiering Configuration (%s) not found, removing from state", d.Id())
d.SetId("")
return nil
Expand Down Expand Up @@ -183,8 +178,8 @@ func resourceAwsS3IntelligentTieringConfigurationRead(d *schema.ResourceData, me
return nil
}

func resourceAwsS3IntelligentTieringConfigurationDelete(d *schema.ResourceData, meta interface{}) error {
s3conn := meta.(*AWSClient).s3conn
func resourceBucketIntelligentTieringConfigurationDelete(d *schema.ResourceData, meta interface{}) error {
conn := meta.(*conns.AWSClient).S3Conn

bucket, name, err := resourceAwsS3BucketIntelligentTieringConfigurationParseID(d.Id())
if err != nil {
Expand All @@ -193,16 +188,17 @@ func resourceAwsS3IntelligentTieringConfigurationDelete(d *schema.ResourceData,

log.Printf("[DEBUG] S3 bucket: %s, delete intelligent tiering configuration", bucket)

_, err = s3conn.DeleteBucketIntelligentTieringConfiguration(&s3.DeleteBucketIntelligentTieringConfigurationInput{
_, err = conn.DeleteBucketIntelligentTieringConfiguration(&s3.DeleteBucketIntelligentTieringConfigurationInput{
Bucket: aws.String(bucket),
Id: aws.String(name),
})

if tfawserr.ErrCodeEquals(err, s3.ErrCodeNoSuchBucket, ErrCodeNoSuchConfiguration) {
return nil
}

if err != nil {
if isAWSErr(err, s3.ErrCodeNoSuchBucket, "") || isAWSErr(err, "NoSuchConfiguration", "The specified configuration does not exist.") {
return nil
}
return fmt.Errorf("Error deleting Intelligent Tiering Configuration: %s", err)
return fmt.Errorf("error deleting S3 Bucket Intelligent Tiering Configuration (%s): %w", d.Id(), err)
}

return nil
Expand Down Expand Up @@ -243,7 +239,7 @@ func waitForDeleteS3BucketIntelligentTieringConfiguration(conn *s3.S3, bucket, n
_, err = conn.GetBucketIntelligentTieringConfiguration(input)
}

if isAWSErr(err, s3.ErrCodeNoSuchBucket, "") || isAWSErr(err, "NoSuchConfiguration", "The specified configuration does not exist.") {
if tfawserr.ErrCodeEquals(err, s3.ErrCodeNoSuchBucket, ErrCodeNoSuchConfiguration) {
return nil
}

Expand Down Expand Up @@ -288,7 +284,7 @@ func expandS3IntelligentTieringFilter(l []interface{}) *s3.IntelligentTieringFil

var tags []*s3.Tag
if v, ok := m["tags"]; ok {
tags = keyvaluetags.New(v).IgnoreAws().S3Tags()
tags = Tags(tftags.New(v).IgnoreAWS())
}

if prefix == "" && len(tags) == 0 {
Expand Down Expand Up @@ -364,15 +360,15 @@ func flattenS3IntelligentTieringFilter(intelligentTieringFilter *s3.IntelligentT
result["prefix"] = *and.Prefix
}
if and.Tags != nil {
result["tags"] = keyvaluetags.S3KeyValueTags(and.Tags).IgnoreAws().Map()
result["tags"] = KeyValueTags(and.Tags).IgnoreAWS().Map()
}
} else if intelligentTieringFilter.Prefix != nil {
result["prefix"] = *intelligentTieringFilter.Prefix
} else if intelligentTieringFilter.Tag != nil {
tags := []*s3.Tag{
intelligentTieringFilter.Tag,
}
result["tags"] = keyvaluetags.S3KeyValueTags(tags).IgnoreAws().Map()
result["tags"] = KeyValueTags(tags).IgnoreAWS().Map()
} else {
return nil
}
Expand Down
Loading

0 comments on commit 9a3dcbc

Please sign in to comment.