From 653e6410eda0a1b0dfca56a06b79f396558b6a1a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Foray?= Date: Fri, 4 Nov 2022 17:27:31 +0100 Subject: [PATCH 1/2] fix usage examples of nrawssdk.AppendMiddlewares --- v3/integrations/nrawssdk-v2/example/main.go | 11 +++-- v3/integrations/nrawssdk-v2/nrawssdk.go | 52 +++++++++++++++----- v3/integrations/nrawssdk-v2/nrawssdk_test.go | 7 +-- 3 files changed, 49 insertions(+), 21 deletions(-) diff --git a/v3/integrations/nrawssdk-v2/example/main.go b/v3/integrations/nrawssdk-v2/example/main.go index 3f740302e..204cad03b 100644 --- a/v3/integrations/nrawssdk-v2/example/main.go +++ b/v3/integrations/nrawssdk-v2/example/main.go @@ -10,7 +10,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/s3" - nraws "github.com/newrelic/go-agent/v3/integrations/nrawssdk-v2" + "github.com/newrelic/go-agent/v3/integrations/nrawssdk-v2" "github.com/newrelic/go-agent/v3/newrelic" ) @@ -39,14 +39,15 @@ func main() { txn := app.StartTransaction("My sample transaction") ctx := context.Background() - awsConfig, err := config.LoadDefaultConfig(ctx) + awsConfig, err := config.LoadDefaultConfig(ctx, func(awsConfig *config.LoadOptions) error { + // Instrument all new AWS clients with New Relic + nrawssdk.AppendMiddlewares(&awsConfig.APIOptions, nil) + return nil + }) if err != nil { log.Fatal(err) } - // Instrument all new AWS clients with New Relic - nraws.AppendMiddlewares(&awsConfig.APIOptions, nil) - s3Client := s3.NewFromConfig(awsConfig) output, err := s3Client.ListBuckets(ctx, nil) if err != nil { diff --git a/v3/integrations/nrawssdk-v2/nrawssdk.go b/v3/integrations/nrawssdk-v2/nrawssdk.go index 8ff3a8ab6..763792941 100644 --- a/v3/integrations/nrawssdk-v2/nrawssdk.go +++ b/v3/integrations/nrawssdk-v2/nrawssdk.go @@ -120,24 +120,50 @@ func (m nrMiddleware) deserializeMiddleware(stack *smithymiddle.Stack) error { // To see segments and spans for all AWS invocations, call AppendMiddlewares // with the AWS Config `apiOptions` and provide nil for `txn`. For example: // -// awsConfig, err := config.LoadDefaultConfig(ctx) -// if err != nil { -// log.Fatal(err) -// } -// nraws.AppendMiddlewares(&awsConfig.APIOptions, nil) +// awsConfig, err := config.LoadDefaultConfig(ctx, func(o *config.LoadOptions) error { +// // Instrument all new AWS clients with New Relic +// nrawssdk.AppendMiddlewares(&o.APIOptions, nil) +// return nil +// }) +// if err != nil { +// log.Fatal(err) +// } // -// If do not want the transaction to be retrived from the context, you can +// If do not want the transaction to be retrieved from the context, you can // explicitly set `txn`. For example: // -// awsConfig, err := config.LoadDefaultConfig(ctx) -// if err != nil { -// log.Fatal(err) -// } +// txn := loadNewRelicTransaction() +// awsConfig, err := config.LoadDefaultConfig(ctx, func(o *config.LoadOptions) error { +// // Instrument all new AWS clients with New Relic +// nrawssdk.AppendMiddlewares(&o.APIOptions, txn) +// return nil +// }) +// if err != nil { +// log.Fatal(err) +// } // -// ... +// The middleware can also be added later, per AWS service call using +// the `optFns` parameter. For example: // -// txn := loadNewRelicTransaction() -// nraws.AppendMiddlewares(&awsConfig.APIOptions, txn) +// awsConfig, err := config.LoadDefaultConfig(ctx) +// if err != nil { +// log.Fatal(err) +// } +// +// ... +// +// s3Client := s3.NewFromConfig(awsConfig) +// +// ... +// +// txn := loadNewRelicTransaction() +// output, err := s3Client.ListBuckets(ctx, nil, func(o *config.LoadOptions) error { +// nrawssdk.AppendMiddlewares(&o.APIOptions, txn) +// return nil +// }) +// if err != nil { +// log.Fatal(err) +// } func AppendMiddlewares(apiOptions *[]func(*smithymiddle.Stack) error, txn *newrelic.Transaction) { m := nrMiddleware{txn: txn} *apiOptions = append(*apiOptions, m.deserializeMiddleware) diff --git a/v3/integrations/nrawssdk-v2/nrawssdk_test.go b/v3/integrations/nrawssdk-v2/nrawssdk_test.go index c57bba514..ea1c18a05 100644 --- a/v3/integrations/nrawssdk-v2/nrawssdk_test.go +++ b/v3/integrations/nrawssdk-v2/nrawssdk_test.go @@ -60,15 +60,16 @@ var fakeCreds = func() interface{} { }() func newConfig(ctx context.Context, txn *newrelic.Transaction) aws.Config { - cfg, _ := config.LoadDefaultConfig(ctx) + cfg, _ := config.LoadDefaultConfig(ctx, func(o *config.LoadOptions) error { + AppendMiddlewares(&o.APIOptions, txn) + return nil + }) cfg.Credentials = fakeCreds.(aws.CredentialsProvider) cfg.Region = awsRegion cfg.HTTPClient = &http.Client{ Transport: &fakeTransport{}, } - AppendMiddlewares(&cfg.APIOptions, txn) - return cfg } From 441b3a99137c2780e1014201e02307ade22b3448 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?J=C3=A9r=C3=B4me=20Foray?= Date: Fri, 4 Nov 2022 17:35:00 +0100 Subject: [PATCH 2/2] fixup! fix usage examples of nrawssdk.AppendMiddlewares --- v3/integrations/nrawssdk-v2/nrawssdk.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/v3/integrations/nrawssdk-v2/nrawssdk.go b/v3/integrations/nrawssdk-v2/nrawssdk.go index 763792941..a6c151588 100644 --- a/v3/integrations/nrawssdk-v2/nrawssdk.go +++ b/v3/integrations/nrawssdk-v2/nrawssdk.go @@ -157,7 +157,7 @@ func (m nrMiddleware) deserializeMiddleware(stack *smithymiddle.Stack) error { // ... // // txn := loadNewRelicTransaction() -// output, err := s3Client.ListBuckets(ctx, nil, func(o *config.LoadOptions) error { +// output, err := s3Client.ListBuckets(ctx, nil, func(o *s3.Options) error { // nrawssdk.AppendMiddlewares(&o.APIOptions, txn) // return nil // })