Skip to content

Commit c2857d5

Browse files
authored
fix(aws): Re-add Cloudtrail tags (#2479)
Should fix #2025
1 parent c787928 commit c2857d5

File tree

6 files changed

+29
-18
lines changed

6 files changed

+29
-18
lines changed

plugins/source/aws/codegen/recipes/cloudtrail.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"strings"
66

77
"github.com/aws/aws-sdk-go-v2/service/cloudtrail/types"
8+
"github.com/cloudquery/cloudquery/plugins/source/aws/resources/services/cloudtrail/models"
89
"github.com/cloudquery/plugin-sdk/codegen"
910
"github.com/cloudquery/plugin-sdk/schema"
1011
)
@@ -13,7 +14,7 @@ func CloudtrailResources() []*Resource {
1314
resources := []*Resource{
1415
{
1516
SubService: "trails",
16-
Struct: &types.Trail{},
17+
Struct: &models.CloudTrailWrapper{},
1718
SkipFields: []string{"TrailARN"},
1819
ExtraColumns: append(defaultRegionalColumns, []codegen.ColumnDefinition{
1920
{

plugins/source/aws/docs/tables/aws_cloudtrail_trails.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,5 @@ The following tables depend on `aws_cloudtrail_trails`:
3434
|s3_bucket_name|String|
3535
|s3_key_prefix|String|
3636
|sns_topic_arn|String|
37-
|sns_topic_name|String|
37+
|sns_topic_name|String|
38+
|tags|JSON|
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package models
2+
3+
import "github.com/aws/aws-sdk-go-v2/service/cloudtrail/types"
4+
5+
type CloudTrailWrapper struct {
6+
types.Trail
7+
Tags map[string]string
8+
}

plugins/source/aws/resources/services/cloudtrail/trails.go

Lines changed: 5 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

plugins/source/aws/resources/services/cloudtrail/trails_fetch.go

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,10 @@ import (
1010
"github.com/aws/aws-sdk-go-v2/service/cloudtrail"
1111
"github.com/aws/aws-sdk-go-v2/service/cloudtrail/types"
1212
"github.com/cloudquery/cloudquery/plugins/source/aws/client"
13+
"github.com/cloudquery/cloudquery/plugins/source/aws/resources/services/cloudtrail/models"
1314
"github.com/cloudquery/plugin-sdk/schema"
1415
)
1516

16-
type CloudTrailWrapper struct {
17-
types.Trail
18-
Tags map[string]string
19-
}
20-
2117
// groupNameRegex extracts log group name from the ARN
2218
var groupNameRegex = regexp.MustCompile("arn:[a-zA-Z0-9-]+:logs:[a-z0-9-]+:[0-9]+:log-group:([a-zA-Z0-9-/]+):")
2319

@@ -31,15 +27,15 @@ func fetchCloudtrailTrails(ctx context.Context, meta schema.ClientMeta, parent *
3127
return err
3228
}
3329

34-
getBundledTrailsWithTags := func(trails []types.Trail, region string) ([]CloudTrailWrapper, error) {
35-
processed := make([]CloudTrailWrapper, len(trails))
30+
getBundledTrailsWithTags := func(trails []types.Trail, region string) ([]*models.CloudTrailWrapper, error) {
31+
processed := make([]*models.CloudTrailWrapper, len(trails))
3632

3733
input := cloudtrail.ListTagsInput{
3834
ResourceIdList: make([]string, 0, len(trails)),
3935
}
4036

4137
for i, h := range trails {
42-
processed[i] = CloudTrailWrapper{
38+
processed[i] = &models.CloudTrailWrapper{
4339
Trail: h,
4440
Tags: make(map[string]string),
4541
}
@@ -110,7 +106,7 @@ func fetchCloudtrailTrails(ctx context.Context, meta schema.ClientMeta, parent *
110106
func resolveCloudTrailStatus(ctx context.Context, meta schema.ClientMeta, resource *schema.Resource, col schema.Column) error {
111107
c := meta.(*client.Client)
112108
svc := c.Services().Cloudtrail
113-
r := resource.Item.(CloudTrailWrapper)
109+
r := resource.Item.(*models.CloudTrailWrapper)
114110
response, err := svc.GetTrailStatus(ctx,
115111
&cloudtrail.GetTrailStatusInput{Name: r.TrailARN}, func(o *cloudtrail.Options) {
116112
o.Region = *r.HomeRegion
@@ -124,7 +120,7 @@ func resolveCloudTrailStatus(ctx context.Context, meta schema.ClientMeta, resour
124120
func resolveCloudtrailTrailCloudwatchLogsLogGroupName(ctx context.Context, meta schema.ClientMeta, resource *schema.Resource, c schema.Column) error {
125121
groupName := ""
126122
log := meta.(*client.Client).Logger()
127-
r := resource.Item.(CloudTrailWrapper)
123+
r := resource.Item.(*models.CloudTrailWrapper)
128124
if r.CloudWatchLogsLogGroupArn != nil {
129125
matches := groupNameRegex.FindStringSubmatch(*r.CloudWatchLogsLogGroupArn)
130126
if len(matches) < 2 {
@@ -140,7 +136,7 @@ func resolveCloudtrailTrailCloudwatchLogsLogGroupName(ctx context.Context, meta
140136
}
141137

142138
func fetchCloudtrailTrailEventSelectors(ctx context.Context, meta schema.ClientMeta, parent *schema.Resource, res chan<- interface{}) error {
143-
r := parent.Item.(CloudTrailWrapper)
139+
r := parent.Item.(*models.CloudTrailWrapper)
144140
c := meta.(*client.Client)
145141
svc := c.Services().Cloudtrail
146142
response, err := svc.GetEventSelectors(ctx, &cloudtrail.GetEventSelectorsInput{TrailName: r.TrailARN}, func(options *cloudtrail.Options) {

plugins/source/aws/resources/services/cloudtrail/trails_mock_test.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55

66
"github.com/aws/aws-sdk-go-v2/aws"
77
"github.com/aws/aws-sdk-go-v2/service/cloudtrail"
8-
cloudtrailTypes "github.com/aws/aws-sdk-go-v2/service/cloudtrail/types"
8+
"github.com/aws/aws-sdk-go-v2/service/cloudtrail/types"
99
"github.com/cloudquery/cloudquery/plugins/source/aws/client"
1010
"github.com/cloudquery/cloudquery/plugins/source/aws/client/mocks"
1111
"github.com/cloudquery/faker/v3"
@@ -17,7 +17,7 @@ func buildCloudtrailTrailsMock(t *testing.T, ctrl *gomock.Controller) client.Ser
1717
services := client.Services{
1818
Cloudtrail: m,
1919
}
20-
trail := cloudtrailTypes.Trail{}
20+
trail := types.Trail{}
2121
err := faker.FakeData(&trail)
2222
if err != nil {
2323
t.Fatal(err)
@@ -31,14 +31,14 @@ func buildCloudtrailTrailsMock(t *testing.T, ctrl *gomock.Controller) client.Ser
3131
if err != nil {
3232
t.Fatal(err)
3333
}
34-
eventSelector := cloudtrailTypes.EventSelector{}
34+
eventSelector := types.EventSelector{}
3535
err = faker.FakeData(&eventSelector)
3636
if err != nil {
3737
t.Fatal(err)
3838
}
3939
m.EXPECT().DescribeTrails(gomock.Any(), gomock.Any(), gomock.Any()).Return(
4040
&cloudtrail.DescribeTrailsOutput{
41-
TrailList: []cloudtrailTypes.Trail{trail},
41+
TrailList: []types.Trail{trail},
4242
},
4343
nil,
4444
)
@@ -48,7 +48,7 @@ func buildCloudtrailTrailsMock(t *testing.T, ctrl *gomock.Controller) client.Ser
4848
)
4949
m.EXPECT().GetEventSelectors(gomock.Any(), gomock.Any(), gomock.Any()).Return(
5050
&cloudtrail.GetEventSelectorsOutput{
51-
EventSelectors: []cloudtrailTypes.EventSelector{eventSelector},
51+
EventSelectors: []types.EventSelector{eventSelector},
5252
},
5353
nil,
5454
)

0 commit comments

Comments
 (0)