From 7e31a05bc406fb03596327a18ab121ae1709ae40 Mon Sep 17 00:00:00 2001 From: bbernays Date: Tue, 24 Sep 2024 09:53:11 -0500 Subject: [PATCH 1/4] deps --- go.mod | 8 ++++---- go.sum | 12 ++++++------ 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/go.mod b/go.mod index 311c340bed..ae4ff2cac3 100644 --- a/go.mod +++ b/go.mod @@ -7,9 +7,10 @@ toolchain go1.23.1 require ( github.com/apache/arrow/go/v17 v17.0.0 github.com/aws/aws-sdk-go-v2 v1.31.0 - github.com/aws/aws-sdk-go-v2/config v1.27.36 - github.com/aws/aws-sdk-go-v2/service/licensemanager v1.28.0 - github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.24.0 + github.com/aws/aws-sdk-go-v2/config v1.27.31 + github.com/aws/aws-sdk-go-v2/service/licensemanager v1.27.4 + github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.23.4 + github.com/aws/smithy-go v1.21.0 github.com/bradleyjkemp/cupaloy/v2 v2.8.0 github.com/cloudquery/cloudquery-api-go v1.13.0 github.com/cloudquery/plugin-pb-go v1.22.3 @@ -60,7 +61,6 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.31.0 // indirect - github.com/aws/smithy-go v1.21.0 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect github.com/cenkalti/backoff/v4 v4.3.0 // indirect diff --git a/go.sum b/go.sum index bc1e410e0d..8b240aec21 100644 --- a/go.sum +++ b/go.sum @@ -9,8 +9,8 @@ github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7D github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= -github.com/aws/aws-sdk-go-v2/config v1.27.36 h1:4IlvHh6Olc7+61O1ktesh0jOcqmq/4WG6C2Aj5SKXy0= -github.com/aws/aws-sdk-go-v2/config v1.27.36/go.mod h1:IiBpC0HPAGq9Le0Xxb1wpAKzEfAQ3XlYgJLYKEVYcfw= +github.com/aws/aws-sdk-go-v2/config v1.27.31 h1:kxBoRsjhT3pq0cKthgj6RU6bXTm/2SgdoUMyrVw0rAI= +github.com/aws/aws-sdk-go-v2/config v1.27.31/go.mod h1:z04nZdSWFPaDwK3DdJOG2r+scLQzMYuJeW0CujEm9FM= github.com/aws/aws-sdk-go-v2/credentials v1.17.34 h1:gmkk1l/cDGSowPRzkdxYi8edw+gN4HmVK151D/pqGNc= github.com/aws/aws-sdk-go-v2/credentials v1.17.34/go.mod h1:4R9OEV3tgFMsok4ZeFpExn7zQaZRa9MRGFYnI/xC/vs= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= @@ -25,10 +25,10 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGf github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.28.0 h1:irdrNNgyruu3wS50VGiT0Kj2/WFbbH56Q/bj5akL7T4= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.28.0/go.mod h1:qxdofHNS6n02LO1BPw2gaq3XL+jAtX7bMW00PITkUok= -github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.24.0 h1:l6NntGJyBZfgSMxj7Djlo2t9R0bYk2iMpqhDtuD/RSQ= -github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.24.0/go.mod h1:zyg91TcJAFCMk+J1eiKjtAEUD9CvFqz+8PYytGk00GM= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.27.4 h1:8tRjT7S8LxBRNRP3KtdV9vj9dJPzG1yDvRIqVmznZII= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.27.4/go.mod h1:AhruhNzkEGM6NxQzGhc0gWvaj/o8FZi/cCoGymOVxyo= +github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.23.4 h1:I9yxA99P3rbkzhv8iDykQcel7n03PmlK8GO6NDpOkj0= +github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.23.4/go.mod h1:YAiuhtKyLLPdouuDXeFWh4nrDrMqwQqukNvDSyhltbU= github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 h1:fHySkG0IGj2nepgGJPmmhZYL9ndnsq1Tvc6MeuVQCaQ= github.com/aws/aws-sdk-go-v2/service/sso v1.23.0/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 h1:cU/OeQPNReyMj1JEBgjE29aclYZYtXcsPMXbTkVGMFk= From 003dec02430c542518151482fcb097df0f503397 Mon Sep 17 00:00:00 2001 From: bbernays Date: Tue, 24 Sep 2024 09:53:25 -0500 Subject: [PATCH 2/4] add dry-run call --- premium/usage.go | 18 ++++++++++++++++-- 1 file changed, 16 insertions(+), 2 deletions(-) diff --git a/premium/usage.go b/premium/usage.go index 0de446d2e0..9dfee3a581 100644 --- a/premium/usage.go +++ b/premium/usage.go @@ -15,6 +15,7 @@ import ( awsConfig "github.com/aws/aws-sdk-go-v2/config" "github.com/aws/aws-sdk-go-v2/service/marketplacemetering" "github.com/aws/aws-sdk-go-v2/service/marketplacemetering/types" + "github.com/aws/smithy-go" cqapi "github.com/cloudquery/cloudquery-api-go" "github.com/cloudquery/cloudquery-api-go/auth" "github.com/cloudquery/cloudquery-api-go/config" @@ -264,7 +265,8 @@ func NewUsageClient(meta plugin.Meta, ops ...UsageClientOptions) (UsageClient, e } func (u *BatchUpdater) setupAWSMarketplace() error { - cfg, err := awsConfig.LoadDefaultConfig(context.TODO()) + ctx := context.TODO() + cfg, err := awsConfig.LoadDefaultConfig(ctx) if err != nil { return fmt.Errorf("failed to load AWS config: %w", err) } @@ -278,7 +280,19 @@ func (u *BatchUpdater) setupAWSMarketplace() error { u.minTimeBetweenFlushes = 1 * time.Minute u.backgroundUpdater() - return nil + + _, err = u.awsMarketplaceClient.MeterUsage(ctx, &marketplacemetering.MeterUsageInput{ + ProductCode: aws.String(awsMarketplaceProductCode()), + Timestamp: aws.Time(time.Now()), + UsageDimension: aws.String("rows"), + UsageQuantity: aws.Int32(int32(0)), + DryRun: aws.Bool(true), + }) + var apiErr smithy.APIError + if errors.As(err, &apiErr) && apiErr.ErrorCode() == "DryRunOperation" { + return nil + } + return fmt.Errorf("failed dry run invocation with error: %w", err) } func isAWSMarketplace() bool { From 3c2afa9f335280765f2d8fd0d1306794b7101ef3 Mon Sep 17 00:00:00 2001 From: bbernays Date: Tue, 24 Sep 2024 09:53:28 -0500 Subject: [PATCH 3/4] Update usage_test.go --- premium/usage_test.go | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/premium/usage_test.go b/premium/usage_test.go index 78cb7a576a..8bf09faa55 100644 --- a/premium/usage_test.go +++ b/premium/usage_test.go @@ -15,6 +15,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/service/marketplacemetering" "github.com/aws/aws-sdk-go-v2/service/marketplacemetering/types" + "github.com/aws/smithy-go" cqapi "github.com/cloudquery/cloudquery-api-go" "github.com/cloudquery/cloudquery-api-go/auth" "github.com/cloudquery/cloudquery-api-go/config" @@ -357,6 +358,15 @@ func TestUsageService_AWSMarketplaceDone(t *testing.T) { m := mocks.NewMockAWSMarketplaceClientInterface(ctrl) out := marketplacemetering.MeterUsageOutput{} + inTest := meteringInput{ + marketplacemetering.MeterUsageInput{ + ProductCode: aws.String("2a8bdkarwqrp0tmo4errl65s7"), + UsageDimension: aws.String("rows"), + UsageQuantity: aws.Int32(int32(0)), + DryRun: aws.Bool(true)}, + } + errTest := smithy.GenericAPIError{Code: "DryRunOperation", Message: "No errors detected in dry run"} + in := meteringInput{ MeterUsageInput: marketplacemetering.MeterUsageInput{ ProductCode: aws.String("2a8bdkarwqrp0tmo4errl65s7"), @@ -382,7 +392,12 @@ func TestUsageService_AWSMarketplaceDone(t *testing.T) { }, } assert.NoError(t, faker.FakeObject(&out)) - m.EXPECT().MeterUsage(gomock.Any(), in).Return(&out, nil) + + gomock.InOrder( + m.EXPECT().MeterUsage(gomock.Any(), inTest).Return(&out, &errTest), + m.EXPECT().MeterUsage(gomock.Any(), in).Return(&out, nil), + ) + t.Setenv("CQ_AWS_MARKETPLACE_CONTAINER", "true") usageClient := newClient(t, nil, WithBatchLimit(50), WithAWSMarketplaceClient(m)) @@ -900,7 +915,9 @@ func (mi meteringInput) Matches(x any) bool { if aws.ToInt32(testInput.UsageQuantity) != aws.ToInt32(mi.UsageQuantity) { return false } - + if aws.ToBool(testInput.DryRun) != aws.ToBool(mi.DryRun) { + return false + } return true } From 028c2047f732a39065fcbb8e6134fe4d51d9cc32 Mon Sep 17 00:00:00 2001 From: bbernays Date: Tue, 24 Sep 2024 09:54:22 -0500 Subject: [PATCH 4/4] update from main --- go.mod | 6 +++--- go.sum | 12 ++++++------ 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/go.mod b/go.mod index ae4ff2cac3..e9ff966a6d 100644 --- a/go.mod +++ b/go.mod @@ -7,9 +7,9 @@ toolchain go1.23.1 require ( github.com/apache/arrow/go/v17 v17.0.0 github.com/aws/aws-sdk-go-v2 v1.31.0 - github.com/aws/aws-sdk-go-v2/config v1.27.31 - github.com/aws/aws-sdk-go-v2/service/licensemanager v1.27.4 - github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.23.4 + github.com/aws/aws-sdk-go-v2/config v1.27.36 + github.com/aws/aws-sdk-go-v2/service/licensemanager v1.28.0 + github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.24.0 github.com/aws/smithy-go v1.21.0 github.com/bradleyjkemp/cupaloy/v2 v2.8.0 github.com/cloudquery/cloudquery-api-go v1.13.0 diff --git a/go.sum b/go.sum index 8b240aec21..bc1e410e0d 100644 --- a/go.sum +++ b/go.sum @@ -9,8 +9,8 @@ github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7D github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= github.com/aws/aws-sdk-go-v2 v1.31.0 h1:3V05LbxTSItI5kUqNwhJrrrY1BAXxXt0sN0l72QmG5U= github.com/aws/aws-sdk-go-v2 v1.31.0/go.mod h1:ztolYtaEUtdpf9Wftr31CJfLVjOnD/CVRkKOOYgF8hA= -github.com/aws/aws-sdk-go-v2/config v1.27.31 h1:kxBoRsjhT3pq0cKthgj6RU6bXTm/2SgdoUMyrVw0rAI= -github.com/aws/aws-sdk-go-v2/config v1.27.31/go.mod h1:z04nZdSWFPaDwK3DdJOG2r+scLQzMYuJeW0CujEm9FM= +github.com/aws/aws-sdk-go-v2/config v1.27.36 h1:4IlvHh6Olc7+61O1ktesh0jOcqmq/4WG6C2Aj5SKXy0= +github.com/aws/aws-sdk-go-v2/config v1.27.36/go.mod h1:IiBpC0HPAGq9Le0Xxb1wpAKzEfAQ3XlYgJLYKEVYcfw= github.com/aws/aws-sdk-go-v2/credentials v1.17.34 h1:gmkk1l/cDGSowPRzkdxYi8edw+gN4HmVK151D/pqGNc= github.com/aws/aws-sdk-go-v2/credentials v1.17.34/go.mod h1:4R9OEV3tgFMsok4ZeFpExn7zQaZRa9MRGFYnI/xC/vs= github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.16.14 h1:C/d03NAmh8C4BZXhuRNboF/DqhBkBCeDiJDcaqIT5pA= @@ -25,10 +25,10 @@ github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5 h1:QFASJGf github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.11.5/go.mod h1:QdZ3OmoIjSX+8D1OPAzPxDfjXASbBMDsz9qvtyIhtik= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20 h1:Xbwbmk44URTiHNx6PNo0ujDE6ERlsCKJD3u1zfnzAPg= github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.11.20/go.mod h1:oAfOFzUB14ltPZj1rWwRc3d/6OgD76R8KlvU3EqM9Fg= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.27.4 h1:8tRjT7S8LxBRNRP3KtdV9vj9dJPzG1yDvRIqVmznZII= -github.com/aws/aws-sdk-go-v2/service/licensemanager v1.27.4/go.mod h1:AhruhNzkEGM6NxQzGhc0gWvaj/o8FZi/cCoGymOVxyo= -github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.23.4 h1:I9yxA99P3rbkzhv8iDykQcel7n03PmlK8GO6NDpOkj0= -github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.23.4/go.mod h1:YAiuhtKyLLPdouuDXeFWh4nrDrMqwQqukNvDSyhltbU= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.28.0 h1:irdrNNgyruu3wS50VGiT0Kj2/WFbbH56Q/bj5akL7T4= +github.com/aws/aws-sdk-go-v2/service/licensemanager v1.28.0/go.mod h1:qxdofHNS6n02LO1BPw2gaq3XL+jAtX7bMW00PITkUok= +github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.24.0 h1:l6NntGJyBZfgSMxj7Djlo2t9R0bYk2iMpqhDtuD/RSQ= +github.com/aws/aws-sdk-go-v2/service/marketplacemetering v1.24.0/go.mod h1:zyg91TcJAFCMk+J1eiKjtAEUD9CvFqz+8PYytGk00GM= github.com/aws/aws-sdk-go-v2/service/sso v1.23.0 h1:fHySkG0IGj2nepgGJPmmhZYL9ndnsq1Tvc6MeuVQCaQ= github.com/aws/aws-sdk-go-v2/service/sso v1.23.0/go.mod h1:XRlMvmad0ZNL+75C5FYdMvbbLkd6qiqz6foR1nA1PXY= github.com/aws/aws-sdk-go-v2/service/ssooidc v1.27.0 h1:cU/OeQPNReyMj1JEBgjE29aclYZYtXcsPMXbTkVGMFk=