From b1a38f6073edc625f4a20357cd55637a74413def Mon Sep 17 00:00:00 2001 From: Lee Brotherston Date: Tue, 7 Oct 2025 12:41:40 -0400 Subject: [PATCH 1/3] Entag'ify wafv2 RuleGroups --- codegen/recipes/wafv2.go | 15 +++--- resources/services/wafv2/rule_groups.go | 53 ++----------------- resources/services/wafv2/rule_groups_fetch.go | 38 +++++++------ 3 files changed, 31 insertions(+), 75 deletions(-) diff --git a/codegen/recipes/wafv2.go b/codegen/recipes/wafv2.go index e9dab404..31bde4af 100644 --- a/codegen/recipes/wafv2.go +++ b/codegen/recipes/wafv2.go @@ -8,6 +8,7 @@ import ( "github.com/cloudquery/plugin-sdk/codegen" "github.com/cloudquery/plugin-sdk/schema" + "github.com/OpsHelmInc/cloudquery/resources/services/wafv2" "github.com/OpsHelmInc/ohaws" ) @@ -106,7 +107,7 @@ func WAFv2Resources() []*Resource { }, { SubService: "rule_groups", - Struct: &types.RuleGroup{}, + Struct: &wafv2.WAFv2RuleGroupWithTags{}, Description: "https://docs.aws.amazon.com/waf/latest/APIReference/API_RuleGroup.html", SkipFields: []string{"ARN"}, PreResourceResolver: "getRuleGroup", @@ -121,11 +122,13 @@ func WAFv2Resources() []*Resource { Type: schema.TypeString, Resolver: "client.ResolveAWSRegion", }, - { - Name: "tags", - Type: schema.TypeJSON, - Resolver: "resolveRuleGroupTags", - }, + /* + { + Name: "tags", + Type: schema.TypeJSON, + Resolver: "resolveRuleGroupTags", + }, + */ { Name: "arn", Type: schema.TypeString, diff --git a/resources/services/wafv2/rule_groups.go b/resources/services/wafv2/rule_groups.go index 6e0daa2e..e9659b48 100644 --- a/resources/services/wafv2/rule_groups.go +++ b/resources/services/wafv2/rule_groups.go @@ -25,11 +25,6 @@ func RuleGroups() *schema.Table { Type: schema.TypeString, Resolver: client.ResolveAWSRegion, }, - { - Name: "tags", - Type: schema.TypeJSON, - Resolver: resolveRuleGroupTags, - }, { Name: "arn", Type: schema.TypeString, @@ -44,54 +39,14 @@ func RuleGroups() *schema.Table { Resolver: resolveWafv2ruleGroupPolicy, }, { - Name: "capacity", - Type: schema.TypeInt, - Resolver: schema.PathResolver("Capacity"), - }, - { - Name: "id", - Type: schema.TypeString, - Resolver: schema.PathResolver("Id"), - }, - { - Name: "name", - Type: schema.TypeString, - Resolver: schema.PathResolver("Name"), - }, - { - Name: "visibility_config", - Type: schema.TypeJSON, - Resolver: schema.PathResolver("VisibilityConfig"), - }, - { - Name: "available_labels", - Type: schema.TypeJSON, - Resolver: schema.PathResolver("AvailableLabels"), - }, - { - Name: "consumed_labels", - Type: schema.TypeJSON, - Resolver: schema.PathResolver("ConsumedLabels"), - }, - { - Name: "custom_response_bodies", + Name: "rule_group", Type: schema.TypeJSON, - Resolver: schema.PathResolver("CustomResponseBodies"), + Resolver: schema.PathResolver("RuleGroup"), }, { - Name: "description", - Type: schema.TypeString, - Resolver: schema.PathResolver("Description"), - }, - { - Name: "label_namespace", - Type: schema.TypeString, - Resolver: schema.PathResolver("LabelNamespace"), - }, - { - Name: "rules", + Name: "tags", Type: schema.TypeJSON, - Resolver: schema.PathResolver("Rules"), + Resolver: client.ResolveTags, }, }, } diff --git a/resources/services/wafv2/rule_groups_fetch.go b/resources/services/wafv2/rule_groups_fetch.go index 41ed603b..b82198f2 100644 --- a/resources/services/wafv2/rule_groups_fetch.go +++ b/resources/services/wafv2/rule_groups_fetch.go @@ -33,6 +33,11 @@ func fetchWafv2RuleGroups(ctx context.Context, meta schema.ClientMeta, parent *s return nil } +type WAFv2RuleGroupWithTags struct { + types.RuleGroup + Tags []types.Tag +} + func getRuleGroup(ctx context.Context, meta schema.ClientMeta, resource *schema.Resource) error { c := meta.(*client.Client) svc := c.Services().Wafv2 @@ -48,36 +53,29 @@ func getRuleGroup(ctx context.Context, meta schema.ClientMeta, resource *schema. return err } - resource.Item = ruleGroup.RuleGroup - return nil -} - -func resolveRuleGroupTags(ctx context.Context, meta schema.ClientMeta, resource *schema.Resource, c schema.Column) error { - ruleGroup := resource.Item.(*types.RuleGroup) - - cl := meta.(*client.Client) - service := cl.Services().Wafv2 + resourceWithTags := &WAFv2RuleGroupWithTags{ + RuleGroup: *ruleGroup.RuleGroup, + } - // Resolve tags - outputTags := make(map[string]*string) - tagsConfig := wafv2.ListTagsForResourceInput{ResourceARN: ruleGroup.ARN} + tagParams := wafv2.ListTagsForResourceInput{ResourceARN: ruleGroup.RuleGroup.ARN} for { - tags, err := service.ListTagsForResource(ctx, &tagsConfig) + result, err := svc.ListTagsForResource(ctx, &tagParams) if err != nil { return err } - for _, t := range tags.TagInfoForResource.TagList { - outputTags[*t.Key] = t.Value - } - if aws.ToString(tags.NextMarker) == "" { + resourceWithTags.Tags = append(resourceWithTags.Tags, result.TagInfoForResource.TagList...) + if aws.ToString(result.NextMarker) == "" { break } - tagsConfig.NextMarker = tags.NextMarker + tagParams.NextMarker = result.NextMarker } - return resource.Set(c.Name, outputTags) + + resource.SetItem(resourceWithTags) + return nil } + func resolveWafv2ruleGroupPolicy(ctx context.Context, meta schema.ClientMeta, resource *schema.Resource, c schema.Column) error { - ruleGroup := resource.Item.(*types.RuleGroup) + ruleGroup := resource.Item.(*WAFv2RuleGroupWithTags) cl := meta.(*client.Client) service := cl.Services().Wafv2 From 042abecce41106589a0946407ad1c0ad4833b181 Mon Sep 17 00:00:00 2001 From: Lee Brotherston Date: Tue, 7 Oct 2025 12:44:19 -0400 Subject: [PATCH 2/3] Remove commented code --- codegen/recipes/wafv2.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/codegen/recipes/wafv2.go b/codegen/recipes/wafv2.go index 31bde4af..0c43e62a 100644 --- a/codegen/recipes/wafv2.go +++ b/codegen/recipes/wafv2.go @@ -122,13 +122,6 @@ func WAFv2Resources() []*Resource { Type: schema.TypeString, Resolver: "client.ResolveAWSRegion", }, - /* - { - Name: "tags", - Type: schema.TypeJSON, - Resolver: "resolveRuleGroupTags", - }, - */ { Name: "arn", Type: schema.TypeString, From 6c2c1228d7c9fea4e2a426c9f8d182caa47e8e74 Mon Sep 17 00:00:00 2001 From: Lee Brotherston Date: Tue, 7 Oct 2025 13:39:26 -0400 Subject: [PATCH 3/3] Update docs --- docs/tables/aws_wafv2_rule_groups.md | 13 ++----------- 1 file changed, 2 insertions(+), 11 deletions(-) diff --git a/docs/tables/aws_wafv2_rule_groups.md b/docs/tables/aws_wafv2_rule_groups.md index d6f4bf46..6b9b6fe4 100644 --- a/docs/tables/aws_wafv2_rule_groups.md +++ b/docs/tables/aws_wafv2_rule_groups.md @@ -15,16 +15,7 @@ The primary key for this table is **arn**. |_cq_parent_id|UUID| |account_id|String| |region|String| -|tags|JSON| |arn (PK)|String| |policy|JSON| -|capacity|Int| -|id|String| -|name|String| -|visibility_config|JSON| -|available_labels|JSON| -|consumed_labels|JSON| -|custom_response_bodies|JSON| -|description|String| -|label_namespace|String| -|rules|JSON| \ No newline at end of file +|rule_group|JSON| +|tags|JSON| \ No newline at end of file