Skip to content

Commit b448bc6

Browse files
authored
feat: Add Support for HSMv2 Clusters and Backups (#2530)
#### Summary <!-- Explain what problem this PR addresses --> <!--
1 parent 7b2c4aa commit b448bc6

File tree

17 files changed

+579
-14
lines changed

17 files changed

+579
-14
lines changed

plugins/source/aws/client/client.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,7 @@ type Services struct {
135135
Athena AthenaClient
136136
Autoscaling AutoscalingClient
137137
Backup BackupClient
138+
CloudHSMV2 CloudHSMV2Client
138139
Cloudformation CloudFormationClient
139140
Cloudfront CloudfrontClient
140141
Cloudtrail CloudtrailClient

plugins/source/aws/client/mocks/mock_cloudhsmv2.go

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

plugins/source/aws/client/services.go

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ import (
1414
"github.com/aws/aws-sdk-go-v2/service/backup"
1515
"github.com/aws/aws-sdk-go-v2/service/cloudformation"
1616
"github.com/aws/aws-sdk-go-v2/service/cloudfront"
17+
"github.com/aws/aws-sdk-go-v2/service/cloudhsmv2"
1718
"github.com/aws/aws-sdk-go-v2/service/cloudtrail"
1819
"github.com/aws/aws-sdk-go-v2/service/cloudwatch"
1920
"github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs"
@@ -184,6 +185,12 @@ type BackupClient interface {
184185
DescribeRegionSettings(ctx context.Context, params *backup.DescribeRegionSettingsInput, optFns ...func(*backup.Options)) (*backup.DescribeRegionSettingsOutput, error)
185186
}
186187

188+
//go:generate mockgen -package=mocks -destination=./mocks/mock_cloudhsmv2.go . CloudHSMV2Client
189+
type CloudHSMV2Client interface {
190+
DescribeBackups(ctx context.Context, params *cloudhsmv2.DescribeBackupsInput, optFns ...func(*cloudhsmv2.Options)) (*cloudhsmv2.DescribeBackupsOutput, error)
191+
DescribeClusters(ctx context.Context, params *cloudhsmv2.DescribeClustersInput, optFns ...func(*cloudhsmv2.Options)) (*cloudhsmv2.DescribeClustersOutput, error)
192+
}
193+
187194
//go:generate mockgen -package=mocks -destination=./mocks/mock_cloudformation.go . CloudFormationClient
188195
type CloudFormationClient interface {
189196
cloudformation.DescribeStacksAPIClient

plugins/source/aws/codegen/main.go

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -8,31 +8,29 @@ import (
88

99
func main() {
1010
resources := make([]*recipes.Resource, 0, 1000)
11-
resources = append(resources, recipes.ACMResources()...)
1211
resources = append(resources, recipes.AccessAnalyzerResources()...)
13-
resources = append(resources, recipes.APIGatewayV2Resources()...)
12+
resources = append(resources, recipes.ACMResources()...)
1413
resources = append(resources, recipes.APIGatewayResources()...)
15-
resources = append(resources, recipes.AppSync()...)
14+
resources = append(resources, recipes.APIGatewayV2Resources()...)
1615
resources = append(resources, recipes.ApplicationAutoScalingResources()...)
16+
resources = append(resources, recipes.AppSync()...)
1717
resources = append(resources, recipes.AthenaResources()...)
1818
resources = append(resources, recipes.AutoscalingResources()...)
1919
resources = append(resources, recipes.BackupResources()...)
20-
resources = append(resources, recipes.CloudWatchLogsResources()...)
20+
resources = append(resources, recipes.CloudHSMV2()...)
2121
resources = append(resources, recipes.CloudformationResources()...)
2222
resources = append(resources, recipes.CloudfrontResources()...)
2323
resources = append(resources, recipes.CloudtrailResources()...)
24+
resources = append(resources, recipes.CloudWatchLogsResources()...)
2425
resources = append(resources, recipes.CloudwatchResources()...)
2526
resources = append(resources, recipes.CodeBuildResources()...)
2627
resources = append(resources, recipes.CodePipelineResources()...)
2728
resources = append(resources, recipes.CognitoResources()...)
2829
resources = append(resources, recipes.ConfigResources()...)
29-
resources = append(resources, recipes.DMSResources()...)
3030
resources = append(resources, recipes.DaxResources()...)
3131
resources = append(resources, recipes.DirectConnectResources()...)
32+
resources = append(resources, recipes.DMSResources()...)
3233
resources = append(resources, recipes.DynamoDBResources()...)
33-
resources = append(resources, recipes.ELBv1Resources()...)
34-
resources = append(resources, recipes.ELBv2Resources()...)
35-
resources = append(resources, recipes.EMRResources()...)
3634
resources = append(resources, recipes.EC2Resources()...)
3735
resources = append(resources, recipes.ECRResources()...)
3836
resources = append(resources, recipes.ECSResources()...)
@@ -41,17 +39,20 @@ func main() {
4139
resources = append(resources, recipes.ElastiCacheResources()...)
4240
resources = append(resources, recipes.ElasticbeanstalkResources()...)
4341
resources = append(resources, recipes.ElasticsearchResources()...)
42+
resources = append(resources, recipes.ELBv1Resources()...)
43+
resources = append(resources, recipes.ELBv2Resources()...)
44+
resources = append(resources, recipes.EMRResources()...)
4445
resources = append(resources, recipes.EventbridgeResources()...)
45-
resources = append(resources, recipes.FSXResources()...)
4646
resources = append(resources, recipes.FirehoseResources()...)
47+
resources = append(resources, recipes.FSXResources()...)
4748
resources = append(resources, recipes.GlueResources()...)
4849
resources = append(resources, recipes.GuarddutyResources()...)
4950
resources = append(resources, recipes.IAMResources()...)
50-
resources = append(resources, recipes.IOTResources()...)
5151
resources = append(resources, recipes.Inspector2Resources()...)
5252
resources = append(resources, recipes.InspectorResources()...)
53-
resources = append(resources, recipes.KMSResources()...)
53+
resources = append(resources, recipes.IOTResources()...)
5454
resources = append(resources, recipes.KinesisResources()...)
55+
resources = append(resources, recipes.KMSResources()...)
5556
resources = append(resources, recipes.LambdaResources()...)
5657
resources = append(resources, recipes.LightsailResources()...)
5758
resources = append(resources, recipes.MQResources()...)
@@ -62,13 +63,13 @@ func main() {
6263
resources = append(resources, recipes.ResourceGroupsResources()...)
6364
resources = append(resources, recipes.Route53Resources()...)
6465
resources = append(resources, recipes.S3Resources()...)
66+
resources = append(resources, recipes.SagemakerResources()...)
67+
resources = append(resources, recipes.SecretsManagerResources()...)
6568
resources = append(resources, recipes.SESResources()...)
69+
resources = append(resources, recipes.ShieldResources()...)
6670
resources = append(resources, recipes.SNSResources()...)
6771
resources = append(resources, recipes.SQSResources()...)
6872
resources = append(resources, recipes.SSMResources()...)
69-
resources = append(resources, recipes.SagemakerResources()...)
70-
resources = append(resources, recipes.SecretsManagerResources()...)
71-
resources = append(resources, recipes.ShieldResources()...)
7273
resources = append(resources, recipes.TransferResources()...)
7374
resources = append(resources, recipes.WAFRegionalResources()...)
7475
resources = append(resources, recipes.WAFResources()...)
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package recipes
2+
3+
import (
4+
"github.com/aws/aws-sdk-go-v2/service/cloudhsmv2/types"
5+
"github.com/cloudquery/plugin-sdk/codegen"
6+
"github.com/cloudquery/plugin-sdk/schema"
7+
)
8+
9+
func CloudHSMV2() []*Resource {
10+
resources := []*Resource{
11+
{
12+
SubService: "clusters",
13+
Struct: &types.Cluster{},
14+
Multiplex: `client.ServiceAccountRegionMultiplexer("cloudhsmv2")`,
15+
SkipFields: []string{"TagList"},
16+
ExtraColumns: append(
17+
defaultRegionalColumns,
18+
[]codegen.ColumnDefinition{
19+
{
20+
Name: "arn",
21+
Type: schema.TypeString,
22+
Resolver: `resolveClusterArn`,
23+
Options: schema.ColumnCreationOptions{PrimaryKey: true},
24+
},
25+
{
26+
Name: "tags",
27+
Type: schema.TypeJSON,
28+
Resolver: `client.ResolveTagField("TagList")`,
29+
},
30+
}...),
31+
},
32+
{
33+
SubService: "backups",
34+
Struct: &types.Backup{},
35+
Multiplex: `client.ServiceAccountRegionMultiplexer("cloudhsmv2")`,
36+
SkipFields: []string{"TagList"},
37+
ExtraColumns: append(
38+
defaultRegionalColumns,
39+
[]codegen.ColumnDefinition{
40+
{
41+
Name: "arn",
42+
Type: schema.TypeString,
43+
Resolver: `resolveBackupArn`,
44+
Options: schema.ColumnCreationOptions{PrimaryKey: true},
45+
}, {
46+
Name: "tags",
47+
Type: schema.TypeJSON,
48+
Resolver: `client.ResolveTagField("TagList")`,
49+
},
50+
}...),
51+
},
52+
}
53+
54+
for _, r := range resources {
55+
r.Service = "cloudhsmv2"
56+
}
57+
return resources
58+
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@
2727
|aws_cloudformation_stacks||
2828
|aws_cloudfront_cache_policies||
2929
|aws_cloudfront_distributions||
30+
|aws_cloudhsmv2_backups||
31+
|aws_cloudhsmv2_clusters||
3032
|aws_cloudtrail_trails||
3133
|aws_cloudwatch_alarms||
3234
|aws_cloudwatchlogs_log_groups||
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# Table: aws_cloudhsmv2_backups
2+
3+
4+
5+
The primary key for this table is **arn**.
6+
7+
8+
## Columns
9+
| Name | Type |
10+
| ------------- | ------------- |
11+
|_cq_id|UUID|
12+
|_cq_parent_id|UUID|
13+
|_cq_source_name|String|
14+
|_cq_sync_time|Timestamp|
15+
|account_id|String|
16+
|region|String|
17+
|arn (PK)|String|
18+
|tags|JSON|
19+
|backup_id|String|
20+
|backup_state|String|
21+
|cluster_id|String|
22+
|copy_timestamp|Timestamp|
23+
|create_timestamp|Timestamp|
24+
|delete_timestamp|Timestamp|
25+
|never_expires|Bool|
26+
|source_backup|String|
27+
|source_cluster|String|
28+
|source_region|String|
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# Table: aws_cloudhsmv2_clusters
2+
3+
4+
5+
The primary key for this table is **arn**.
6+
7+
8+
## Columns
9+
| Name | Type |
10+
| ------------- | ------------- |
11+
|_cq_id|UUID|
12+
|_cq_parent_id|UUID|
13+
|_cq_source_name|String|
14+
|_cq_sync_time|Timestamp|
15+
|account_id|String|
16+
|region|String|
17+
|arn (PK)|String|
18+
|tags|JSON|
19+
|backup_policy|String|
20+
|backup_retention_policy|JSON|
21+
|certificates|JSON|
22+
|cluster_id|String|
23+
|create_timestamp|Timestamp|
24+
|hsm_type|String|
25+
|hsms|JSON|
26+
|pre_co_password|String|
27+
|security_group|String|
28+
|source_backup_id|String|
29+
|state|String|
30+
|state_message|String|
31+
|subnet_mapping|JSON|
32+
|vpc_id|String|

plugins/source/aws/go.mod

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ require (
1616
github.com/aws/aws-sdk-go-v2/service/autoscaling v1.23.16
1717
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.22.10
1818
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.20.5
19+
github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.13.19
1920
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.18.1
2021
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.21.6
2122
github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.15.20

plugins/source/aws/go.sum

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@ github.com/aws/aws-sdk-go-v2/service/cloudformation v1.22.10 h1:Stmfzuj3KSEBB3tb
4242
github.com/aws/aws-sdk-go-v2/service/cloudformation v1.22.10/go.mod h1:25Dm6AWo23nKPF1kmGP3MpgCWixf4t8ViwWemcTFXQU=
4343
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.20.5 h1:nLAPA7/DSmDWYP/MGtRNP6bHjiL8Fmyg8qeDxW90nm0=
4444
github.com/aws/aws-sdk-go-v2/service/cloudfront v1.20.5/go.mod h1:HYQXu2AKM7RLCn3APoQ5EvL2N/RlI4LSNN8pIGbdaDQ=
45+
github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.13.19 h1:ra5OmtvAkz8r58HVi/DiecemN/7TMttC7Wb3NzBSh+4=
46+
github.com/aws/aws-sdk-go-v2/service/cloudhsmv2 v1.13.19/go.mod h1:Wl9LHyboc/cg5kc6L/oZUkjj7NnRmqg14K1TKB1XO48=
4547
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.18.1 h1:Q8EfidXIfYA13XLkY9yRX9gPI0lnS/+S7K43bZdoQOg=
4648
github.com/aws/aws-sdk-go-v2/service/cloudtrail v1.18.1/go.mod h1:ie2MjsIIl3B504HezWdwXAgvBJGBpz360cckbkhiyRk=
4749
github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.21.6 h1:Mwb2A5ygEijjkxgM3hVEiWSHwdH82nkyU2wgP4u/Hxk=

0 commit comments

Comments
 (0)