From 13e5c261cc9068b0adbaacb8091b03cc1281c749 Mon Sep 17 00:00:00 2001 From: George Wu Date: Mon, 18 Sep 2023 23:18:39 -0700 Subject: [PATCH 1/2] Use AWS SDK for Go v2 for mediaconnect service. --- .github/labeler-pr-triage.yml | 2 +- go.mod | 1 + go.sum | 2 ++ internal/conns/awsclient_gen.go | 6 ++-- internal/service/mediaconnect/README.md | 2 +- internal/service/mediaconnect/generate.go | 2 +- .../mediaconnect/service_package_gen.go | 17 ++++++---- internal/service/mediaconnect/tags_gen.go | 33 +++++++++---------- names/names_data.csv | 2 +- 9 files changed, 36 insertions(+), 31 deletions(-) diff --git a/.github/labeler-pr-triage.yml b/.github/labeler-pr-triage.yml index afd9edb0c510..854d3eb3933e 100644 --- a/.github/labeler-pr-triage.yml +++ b/.github/labeler-pr-triage.yml @@ -680,7 +680,7 @@ service/marketplacemetering: - 'website/**/marketplacemetering_*' service/mediaconnect: - 'internal/service/mediaconnect/**/*' - - 'website/**/media_connect_*' + - 'website/**/mediaconnect_*' service/mediaconvert: - 'internal/service/mediaconvert/**/*' - 'website/**/media_convert_*' diff --git a/go.mod b/go.mod index 019f868a28bb..033de732fd06 100644 --- a/go.mod +++ b/go.mod @@ -41,6 +41,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/lambda v1.39.5 github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.32.5 github.com/aws/aws-sdk-go-v2/service/lightsail v1.28.5 + github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.20.5 github.com/aws/aws-sdk-go-v2/service/medialive v1.37.0 github.com/aws/aws-sdk-go-v2/service/mediapackage v1.23.3 github.com/aws/aws-sdk-go-v2/service/oam v1.2.5 diff --git a/go.sum b/go.sum index 871324a5c599..02def762b3ba 100644 --- a/go.sum +++ b/go.sum @@ -118,6 +118,8 @@ github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.32.5 h1:vI9ar8zMH9oJ0ywJU184 github.com/aws/aws-sdk-go-v2/service/lexmodelsv2 v1.32.5/go.mod h1:BsjYt3w75hHFse6bzZt4Lvzdl2yKESDV6WIOOVOQsUU= github.com/aws/aws-sdk-go-v2/service/lightsail v1.28.5 h1:IFT75uoZ5Ohcpb0sf7NQTF0Tyx8SmfCMz9IQGjyztXQ= github.com/aws/aws-sdk-go-v2/service/lightsail v1.28.5/go.mod h1:nh/y5+FgVxvjrwd2myeB92rKKJVMkxZem3irP3/bT28= +github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.20.5 h1:aEG8G1HXtyaSRHp3fKzP/AgKAviExpth8MQeBPYLvzI= +github.com/aws/aws-sdk-go-v2/service/mediaconnect v1.20.5/go.mod h1:MC8RAClijE5FGkgl8rgw3fHIpsgTk97iZyo8NsHW6wU= github.com/aws/aws-sdk-go-v2/service/medialive v1.37.0 h1:R5u3iuM07pN+lV4t3VHfr3kCByCnxZws1R5y875TuvQ= github.com/aws/aws-sdk-go-v2/service/medialive v1.37.0/go.mod h1:oBjVE7s8Z2RQtKxCgHavkhkAu0m54h4YCjXivPR/BhQ= github.com/aws/aws-sdk-go-v2/service/mediapackage v1.23.3 h1:lC+4aTyl6yZ59X2Ek0FBg2loD0R048dE/Hnje0tSg3s= diff --git a/internal/conns/awsclient_gen.go b/internal/conns/awsclient_gen.go index d84353737172..a4f259fd8cc5 100644 --- a/internal/conns/awsclient_gen.go +++ b/internal/conns/awsclient_gen.go @@ -35,6 +35,7 @@ import ( lambda_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lambda" lexmodelsv2_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lexmodelsv2" lightsail_sdkv2 "github.com/aws/aws-sdk-go-v2/service/lightsail" + mediaconnect_sdkv2 "github.com/aws/aws-sdk-go-v2/service/mediaconnect" medialive_sdkv2 "github.com/aws/aws-sdk-go-v2/service/medialive" mediapackage_sdkv2 "github.com/aws/aws-sdk-go-v2/service/mediapackage" oam_sdkv2 "github.com/aws/aws-sdk-go-v2/service/oam" @@ -165,7 +166,6 @@ import ( locationservice_sdkv1 "github.com/aws/aws-sdk-go/service/locationservice" macie2_sdkv1 "github.com/aws/aws-sdk-go/service/macie2" managedgrafana_sdkv1 "github.com/aws/aws-sdk-go/service/managedgrafana" - mediaconnect_sdkv1 "github.com/aws/aws-sdk-go/service/mediaconnect" mediaconvert_sdkv1 "github.com/aws/aws-sdk-go/service/mediaconvert" mediastore_sdkv1 "github.com/aws/aws-sdk-go/service/mediastore" memorydb_sdkv1 "github.com/aws/aws-sdk-go/service/memorydb" @@ -758,8 +758,8 @@ func (c *AWSClient) Macie2Conn(ctx context.Context) *macie2_sdkv1.Macie2 { return errs.Must(conn[*macie2_sdkv1.Macie2](ctx, c, names.Macie2)) } -func (c *AWSClient) MediaConnectConn(ctx context.Context) *mediaconnect_sdkv1.MediaConnect { - return errs.Must(conn[*mediaconnect_sdkv1.MediaConnect](ctx, c, names.MediaConnect)) +func (c *AWSClient) MediaConnectClient(ctx context.Context) *mediaconnect_sdkv2.Client { + return errs.Must(client[*mediaconnect_sdkv2.Client](ctx, c, names.MediaConnect)) } func (c *AWSClient) MediaConvertConn(ctx context.Context) *mediaconvert_sdkv1.MediaConvert { diff --git a/internal/service/mediaconnect/README.md b/internal/service/mediaconnect/README.md index 49304e566424..38e3483d7355 100644 --- a/internal/service/mediaconnect/README.md +++ b/internal/service/mediaconnect/README.md @@ -8,4 +8,4 @@ _At the moment, the Terraform AWS Provider has little or no support for MediaCon * [Find out about contributing](https://hashicorp.github.io/terraform-provider-aws/#contribute) to the AWS provider! * AWS Provider Docs: [Home](https://registry.terraform.io/providers/hashicorp/aws/latest/docs) -* AWS Docs: [AWS SDK for Go MediaConnect](https://docs.aws.amazon.com/sdk-for-go/api/service/mediaconnect/) +* AWS Docs: [AWS SDK for Go MediaConnect](https://pkg.go.dev/github.com/aws/aws-sdk-go-v2/service/mediaconnect) diff --git a/internal/service/mediaconnect/generate.go b/internal/service/mediaconnect/generate.go index 3b82e38f6031..d8e6b3c76f2a 100644 --- a/internal/service/mediaconnect/generate.go +++ b/internal/service/mediaconnect/generate.go @@ -1,7 +1,7 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 -//go:generate go run ../../generate/tags/main.go -ListTags -ServiceTagsMap -UpdateTags +//go:generate go run ../../generate/tags/main.go -AWSSDKVersion=2 -KVTValues=true -SkipTypesImp=true -ListTags -ServiceTagsMap -UpdateTags //go:generate go run ../../generate/servicepackage/main.go // ONLY generate directives and package declaration! Do not add anything else to this file. diff --git a/internal/service/mediaconnect/service_package_gen.go b/internal/service/mediaconnect/service_package_gen.go index 7adaa5c29b94..1c3e8fc9bed5 100644 --- a/internal/service/mediaconnect/service_package_gen.go +++ b/internal/service/mediaconnect/service_package_gen.go @@ -5,9 +5,8 @@ package mediaconnect import ( "context" - aws_sdkv1 "github.com/aws/aws-sdk-go/aws" - session_sdkv1 "github.com/aws/aws-sdk-go/aws/session" - mediaconnect_sdkv1 "github.com/aws/aws-sdk-go/service/mediaconnect" + aws_sdkv2 "github.com/aws/aws-sdk-go-v2/aws" + mediaconnect_sdkv2 "github.com/aws/aws-sdk-go-v2/service/mediaconnect" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/types" "github.com/hashicorp/terraform-provider-aws/names" @@ -35,11 +34,15 @@ func (p *servicePackage) ServicePackageName() string { return names.MediaConnect } -// NewConn returns a new AWS SDK for Go v1 client for this service package's AWS API. -func (p *servicePackage) NewConn(ctx context.Context, config map[string]any) (*mediaconnect_sdkv1.MediaConnect, error) { - sess := config["session"].(*session_sdkv1.Session) +// NewClient returns a new AWS SDK for Go v2 client for this service package's AWS API. +func (p *servicePackage) NewClient(ctx context.Context, config map[string]any) (*mediaconnect_sdkv2.Client, error) { + cfg := *(config["aws_sdkv2_config"].(*aws_sdkv2.Config)) - return mediaconnect_sdkv1.New(sess.Copy(&aws_sdkv1.Config{Endpoint: aws_sdkv1.String(config["endpoint"].(string))})), nil + return mediaconnect_sdkv2.NewFromConfig(cfg, func(o *mediaconnect_sdkv2.Options) { + if endpoint := config["endpoint"].(string); endpoint != "" { + o.BaseEndpoint = aws_sdkv2.String(endpoint) + } + }), nil } func ServicePackage(ctx context.Context) conns.ServicePackage { diff --git a/internal/service/mediaconnect/tags_gen.go b/internal/service/mediaconnect/tags_gen.go index 152f2fcdbbf5..aaf7909fb60d 100644 --- a/internal/service/mediaconnect/tags_gen.go +++ b/internal/service/mediaconnect/tags_gen.go @@ -5,9 +5,8 @@ import ( "context" "fmt" - "github.com/aws/aws-sdk-go/aws" - "github.com/aws/aws-sdk-go/service/mediaconnect" - "github.com/aws/aws-sdk-go/service/mediaconnect/mediaconnectiface" + "github.com/aws/aws-sdk-go-v2/aws" + "github.com/aws/aws-sdk-go-v2/service/mediaconnect" "github.com/hashicorp/terraform-plugin-log/tflog" "github.com/hashicorp/terraform-provider-aws/internal/conns" "github.com/hashicorp/terraform-provider-aws/internal/logging" @@ -19,12 +18,12 @@ import ( // listTags lists mediaconnect service tags. // The identifier is typically the Amazon Resource Name (ARN), although // it may also be a different identifier depending on the service. -func listTags(ctx context.Context, conn mediaconnectiface.MediaConnectAPI, identifier string) (tftags.KeyValueTags, error) { +func listTags(ctx context.Context, conn *mediaconnect.Client, identifier string) (tftags.KeyValueTags, error) { input := &mediaconnect.ListTagsForResourceInput{ ResourceArn: aws.String(identifier), } - output, err := conn.ListTagsForResourceWithContext(ctx, input) + output, err := conn.ListTagsForResource(ctx, input) if err != nil { return tftags.New(ctx, nil), err @@ -36,7 +35,7 @@ func listTags(ctx context.Context, conn mediaconnectiface.MediaConnectAPI, ident // ListTags lists mediaconnect service tags and set them in Context. // It is called from outside this package. func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier string) error { - tags, err := listTags(ctx, meta.(*conns.AWSClient).MediaConnectConn(ctx), identifier) + tags, err := listTags(ctx, meta.(*conns.AWSClient).MediaConnectClient(ctx), identifier) if err != nil { return err @@ -49,21 +48,21 @@ func (p *servicePackage) ListTags(ctx context.Context, meta any, identifier stri return nil } -// map[string]*string handling +// map[string]string handling // Tags returns mediaconnect service tags. -func Tags(tags tftags.KeyValueTags) map[string]*string { - return aws.StringMap(tags.Map()) +func Tags(tags tftags.KeyValueTags) map[string]string { + return tags.Map() } // KeyValueTags creates tftags.KeyValueTags from mediaconnect service tags. -func KeyValueTags(ctx context.Context, tags map[string]*string) tftags.KeyValueTags { +func KeyValueTags(ctx context.Context, tags map[string]string) tftags.KeyValueTags { return tftags.New(ctx, tags) } // getTagsIn returns mediaconnect service tags from Context. // nil is returned if there are no input tags. -func getTagsIn(ctx context.Context) map[string]*string { +func getTagsIn(ctx context.Context) map[string]string { if inContext, ok := tftags.FromContext(ctx); ok { if tags := Tags(inContext.TagsIn.UnwrapOrDefault()); len(tags) > 0 { return tags @@ -74,7 +73,7 @@ func getTagsIn(ctx context.Context) map[string]*string { } // setTagsOut sets mediaconnect service tags in Context. -func setTagsOut(ctx context.Context, tags map[string]*string) { +func setTagsOut(ctx context.Context, tags map[string]string) { if inContext, ok := tftags.FromContext(ctx); ok { inContext.TagsOut = types.Some(KeyValueTags(ctx, tags)) } @@ -83,7 +82,7 @@ func setTagsOut(ctx context.Context, tags map[string]*string) { // updateTags updates mediaconnect service tags. // The identifier is typically the Amazon Resource Name (ARN), although // it may also be a different identifier depending on the service. -func updateTags(ctx context.Context, conn mediaconnectiface.MediaConnectAPI, identifier string, oldTagsMap, newTagsMap any) error { +func updateTags(ctx context.Context, conn *mediaconnect.Client, identifier string, oldTagsMap, newTagsMap any) error { oldTags := tftags.New(ctx, oldTagsMap) newTags := tftags.New(ctx, newTagsMap) @@ -94,10 +93,10 @@ func updateTags(ctx context.Context, conn mediaconnectiface.MediaConnectAPI, ide if len(removedTags) > 0 { input := &mediaconnect.UntagResourceInput{ ResourceArn: aws.String(identifier), - TagKeys: aws.StringSlice(removedTags.Keys()), + TagKeys: removedTags.Keys(), } - _, err := conn.UntagResourceWithContext(ctx, input) + _, err := conn.UntagResource(ctx, input) if err != nil { return fmt.Errorf("untagging resource (%s): %w", identifier, err) @@ -112,7 +111,7 @@ func updateTags(ctx context.Context, conn mediaconnectiface.MediaConnectAPI, ide Tags: Tags(updatedTags), } - _, err := conn.TagResourceWithContext(ctx, input) + _, err := conn.TagResource(ctx, input) if err != nil { return fmt.Errorf("tagging resource (%s): %w", identifier, err) @@ -125,5 +124,5 @@ func updateTags(ctx context.Context, conn mediaconnectiface.MediaConnectAPI, ide // UpdateTags updates mediaconnect service tags. // It is called from outside this package. func (p *servicePackage) UpdateTags(ctx context.Context, meta any, identifier string, oldTags, newTags any) error { - return updateTags(ctx, meta.(*conns.AWSClient).MediaConnectConn(ctx), identifier, oldTags, newTags) + return updateTags(ctx, meta.(*conns.AWSClient).MediaConnectClient(ctx), identifier, oldTags, newTags) } diff --git a/names/names_data.csv b/names/names_data.csv index fb3a690acc9d..79e804a2190e 100644 --- a/names/names_data.csv +++ b/names/names_data.csv @@ -138,7 +138,7 @@ elasticache,elasticache,elasticache,elasticache,,elasticache,,,ElastiCache,Elast es,es,elasticsearchservice,elasticsearchservice,elasticsearch,es,,es;elasticsearchservice,Elasticsearch,ElasticsearchService,,1,,aws_elasticsearch_,aws_es_,,elasticsearch_,Elasticsearch,Amazon,,,,,, elbv2,elbv2,elbv2,elasticloadbalancingv2,,elbv2,,elasticloadbalancingv2,ELBV2,ELBV2,,1,,aws_a?lb(\b|_listener|_target_group|s),aws_elbv2_,,lbs?\.;lb_listener;lb_target_group;lb_hosted,ELB (Elastic Load Balancing),,,,,,, elb,elb,elb,elasticloadbalancing,,elb,,elasticloadbalancing,ELB,ELB,,1,,aws_(app_cookie_stickiness_policy|elb|lb_cookie_stickiness_policy|lb_ssl_negotiation_policy|load_balancer_|proxy_protocol_policy),aws_elb_,,app_cookie_stickiness_policy;elb;lb_cookie_stickiness_policy;lb_ssl_negotiation_policy;load_balancer;proxy_protocol_policy,ELB Classic,,,,,,, -mediaconnect,mediaconnect,mediaconnect,mediaconnect,,mediaconnect,,,MediaConnect,MediaConnect,,1,,,aws_mediaconnect_,,media_connect_,Elemental MediaConnect,AWS,,,,,, +mediaconnect,mediaconnect,mediaconnect,mediaconnect,,mediaconnect,,,MediaConnect,MediaConnect,,,2,,aws_mediaconnect_,,mediaconnect_,Elemental MediaConnect,AWS,,,,,, mediaconvert,mediaconvert,mediaconvert,mediaconvert,,mediaconvert,,,MediaConvert,MediaConvert,,1,,aws_media_convert_,aws_mediaconvert_,,media_convert_,Elemental MediaConvert,AWS,,,,,, medialive,medialive,medialive,medialive,,medialive,,,MediaLive,MediaLive,,,2,,aws_medialive_,,medialive_,Elemental MediaLive,AWS,,,,,, mediapackage,mediapackage,mediapackage,mediapackage,,mediapackage,,,MediaPackage,MediaPackage,,,2,aws_media_package_,aws_mediapackage_,,media_package_,Elemental MediaPackage,AWS,,,,,, From a50005845b9fe9b8fe87644fbe148543b72fa390 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Tue, 19 Sep 2023 11:56:30 -0400 Subject: [PATCH 2/2] tweak generate file --- internal/service/mediaconnect/generate.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/internal/service/mediaconnect/generate.go b/internal/service/mediaconnect/generate.go index d8e6b3c76f2a..3d8ab34c85d4 100644 --- a/internal/service/mediaconnect/generate.go +++ b/internal/service/mediaconnect/generate.go @@ -1,7 +1,7 @@ // Copyright (c) HashiCorp, Inc. // SPDX-License-Identifier: MPL-2.0 -//go:generate go run ../../generate/tags/main.go -AWSSDKVersion=2 -KVTValues=true -SkipTypesImp=true -ListTags -ServiceTagsMap -UpdateTags +//go:generate go run ../../generate/tags/main.go -AWSSDKVersion=2 -KVTValues -SkipTypesImp -ListTags -ServiceTagsMap -UpdateTags //go:generate go run ../../generate/servicepackage/main.go // ONLY generate directives and package declaration! Do not add anything else to this file.