Skip to content

Commit d5d9a70

Browse files
✨ Add serverless v2 fields. (#135)
Signed-off-by: Preslav <preslav@mondoo.com>
1 parent 3d6ada4 commit d5d9a70

5 files changed

Lines changed: 90 additions & 9 deletions

File tree

docs/resources/integration_aws_serverless.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ Optional:
137137
- `ecr_scan` (Boolean) Enable ECR scan.
138138
- `ecs_scan` (Boolean) Enable ECS scan.
139139
- `event_scan_triggers` (Attributes) (see [below for nested schema](#nestedatt--scan_configuration--event_scan_triggers))
140+
- `vpc_configuration` (Attributes) (see [below for nested schema](#nestedatt--scan_configuration--vpc_configuration))
140141

141142
<a id="nestedatt--scan_configuration--ec2_scan_options"></a>
142143
### Nested Schema for `scan_configuration.ec2_scan_options`
@@ -172,3 +173,13 @@ Optional:
172173
- `event_detail_type` (String) Event detail type.
173174
- `event_source` (String) Event source.
174175
- `scan_type` (String) Scan type.
176+
177+
178+
<a id="nestedatt--scan_configuration--vpc_configuration"></a>
179+
### Nested Schema for `scan_configuration.vpc_configuration`
180+
181+
Optional:
182+
183+
- `cidr_block` (String) CIDR block for the Mondoo VPC.
184+
- `use_default_vpc` (Boolean) Use default VPC.
185+
- `use_mondoo_vpc` (Boolean) Use Mondoo VPC.

go.mod

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ require (
1010
github.com/hashicorp/terraform-plugin-go v0.23.0
1111
github.com/hashicorp/terraform-plugin-log v0.9.0
1212
github.com/hashicorp/terraform-plugin-testing v1.10.0
13-
go.mondoo.com/mondoo-go v0.0.0-20240611114249-2c3b9b20e67a
13+
go.mondoo.com/mondoo-go v0.0.0-20241001090148-7f5a1917d669
1414
gopkg.in/yaml.v2 v2.4.0
1515
)
1616

@@ -113,7 +113,7 @@ require (
113113
golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8 // indirect
114114
golang.org/x/mod v0.19.0 // indirect
115115
golang.org/x/net v0.26.0 // indirect
116-
golang.org/x/oauth2 v0.21.0 // indirect
116+
golang.org/x/oauth2 v0.23.0 // indirect
117117
golang.org/x/sync v0.8.0 // indirect
118118
golang.org/x/sys v0.23.0 // indirect
119119
golang.org/x/term v0.23.0 // indirect

go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -495,8 +495,8 @@ go.abhg.dev/goldmark/frontmatter v0.2.0/go.mod h1:XqrEkZuM57djk7zrlRUB02x8I5J0px
495495
go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A=
496496
go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g=
497497
go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY=
498-
go.mondoo.com/mondoo-go v0.0.0-20240611114249-2c3b9b20e67a h1:+EQW5uXRyUyeiyZnTy2Jc371PTynJm5OruUWt3SqiT4=
499-
go.mondoo.com/mondoo-go v0.0.0-20240611114249-2c3b9b20e67a/go.mod h1:4032UBD0ph9LyhXq5OQmmxkJv37HdAGi34YLWbhnMDA=
498+
go.mondoo.com/mondoo-go v0.0.0-20241001090148-7f5a1917d669 h1:9podmJ/O6dbJtzX13lwuUoQb5KYxeSQcXa65/rXOtVk=
499+
go.mondoo.com/mondoo-go v0.0.0-20241001090148-7f5a1917d669/go.mod h1:dun0t/zVJCSB/u9dhSO4FXn13moiH7JSwS2m8Ucxx50=
500500
go.mongodb.org/mongo-driver v1.15.1 h1:l+RvoUOoMXFmADTLfYDm7On9dRm7p4T80/lEQM+r7HU=
501501
go.mongodb.org/mongo-driver v1.15.1/go.mod h1:Vzb0Mk/pa7e6cWw85R4F/endUC3u0U9jGcNU603k65c=
502502
go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc=
@@ -553,8 +553,8 @@ golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE=
553553
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
554554
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
555555
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
556-
golang.org/x/oauth2 v0.21.0 h1:tsimM75w1tF/uws5rbeHzIWxEqElMehnc+iW793zsZs=
557-
golang.org/x/oauth2 v0.21.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
556+
golang.org/x/oauth2 v0.23.0 h1:PbgcYx2W7i4LvjJWEbf0ngHV6qJYr86PkAV3bXdLEbs=
557+
golang.org/x/oauth2 v0.23.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI=
558558
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
559559
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
560560
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=

internal/provider/integration_aws_serverless_resource.go

Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,17 @@ type ScanConfigurationInput struct {
5959
EventScanTriggers *[]*AWSEventPatternInput `tfsdk:"event_scan_triggers"`
6060
// (Optional.)
6161
Ec2ScanOptions *Ec2ScanOptionsInput `tfsdk:"ec2_scan_options"`
62+
// (Optional.)
63+
VpcConfiguration *VPCConfigurationInput `tfsdk:"vpc_configuration"`
64+
}
65+
66+
type VPCConfigurationInput struct {
67+
// (Optional.)
68+
UseDefaultVPC types.Bool `tfsdk:"use_default_vpc"`
69+
// (Optional.)
70+
UseMondooVPC types.Bool `tfsdk:"use_mondoo_vpc"`
71+
// (Optional.)
72+
CIDR types.String `tfsdk:"cidr_block"`
6273
}
6374

6475
type AWSEventPatternInput struct {
@@ -144,6 +155,11 @@ func (m integrationAwsServerlessResourceModel) GetConfigurationOptions() *mondoo
144155
IsOrganization: mondoov1.NewBooleanPtr(mondoov1.Boolean(m.IsOrganization.ValueBool())),
145156
AccountIDs: &accountIDs,
146157
ScanConfiguration: mondoov1.ScanConfigurationInput{
158+
VpcConfiguration: &mondoov1.VPCConfigurationInput{
159+
UseDefaultVPC: mondoov1.NewBooleanPtr(mondoov1.Boolean(m.ScanConfiguration.VpcConfiguration.UseDefaultVPC.ValueBool())),
160+
UseMondooVPC: mondoov1.NewBooleanPtr(mondoov1.Boolean(m.ScanConfiguration.VpcConfiguration.UseMondooVPC.ValueBool())),
161+
CIDR: mondoov1.NewStringPtr(mondoov1.String(m.ScanConfiguration.VpcConfiguration.CIDR.ValueString())),
162+
},
147163
Ec2Scan: mondoov1.NewBooleanPtr(mondoov1.Boolean(m.ScanConfiguration.Ec2Scan.ValueBool())),
148164
EcrScan: mondoov1.NewBooleanPtr(mondoov1.Boolean(m.ScanConfiguration.EcrScan.ValueBool())),
149165
EcsScan: mondoov1.NewBooleanPtr(mondoov1.Boolean(m.ScanConfiguration.EcsScan.ValueBool())),
@@ -228,6 +244,23 @@ func (r *integrationAwsServerlessResource) Schema(ctx context.Context, req resou
228244
MarkdownDescription: "Cron scan in hours.",
229245
Optional: true,
230246
},
247+
"vpc_configuration": schema.SingleNestedAttribute{
248+
Optional: true,
249+
Attributes: map[string]schema.Attribute{
250+
"use_default_vpc": schema.BoolAttribute{
251+
MarkdownDescription: "Use default VPC.",
252+
Optional: true,
253+
},
254+
"use_mondoo_vpc": schema.BoolAttribute{
255+
MarkdownDescription: "Use Mondoo VPC.",
256+
Optional: true,
257+
},
258+
"cidr_block": schema.StringAttribute{
259+
MarkdownDescription: "CIDR block for the Mondoo VPC.",
260+
Optional: true,
261+
},
262+
},
263+
},
231264
"ec2_scan_options": schema.SingleNestedAttribute{
232265
Required: true,
233266
Attributes: map[string]schema.Attribute{
@@ -305,6 +338,43 @@ func (r *integrationAwsServerlessResource) Schema(ctx context.Context, req resou
305338
}
306339
}
307340

341+
func (r integrationAwsServerlessResource) ValidateConfig(ctx context.Context, req resource.ValidateConfigRequest, resp *resource.ValidateConfigResponse) {
342+
var data integrationAwsServerlessResourceModel
343+
resp.Diagnostics.Append(req.Config.Get(ctx, &data)...)
344+
345+
if resp.Diagnostics.HasError() {
346+
return
347+
}
348+
349+
// user has provided both default or mondoo vpc
350+
if !data.ScanConfiguration.VpcConfiguration.UseDefaultVPC.IsNull() && !data.ScanConfiguration.VpcConfiguration.UseMondooVPC.IsNull() {
351+
defaultVpc := data.ScanConfiguration.VpcConfiguration.UseDefaultVPC.ValueBool()
352+
mondooVpc := data.ScanConfiguration.VpcConfiguration.UseMondooVPC.ValueBool()
353+
if defaultVpc && mondooVpc {
354+
resp.Diagnostics.AddError(
355+
"ConflictingAttributesError",
356+
"Cannot set both use_default_vpc and use_mondoo_vpc to true at the same time.",
357+
)
358+
}
359+
360+
if !defaultVpc && !mondooVpc {
361+
resp.Diagnostics.AddError(
362+
"ConflictingAttributesError",
363+
"Cannot set both use_default_vpc and use_mondoo_vpc to false at the same time.",
364+
)
365+
}
366+
}
367+
// user has provided mondoo vpc only
368+
if mondooVpc := data.ScanConfiguration.VpcConfiguration.UseMondooVPC.ValueBool(); mondooVpc {
369+
if cidr := data.ScanConfiguration.VpcConfiguration.CIDR.ValueString(); cidr == "" {
370+
resp.Diagnostics.AddError(
371+
"MissingAttributeError",
372+
"Attribute cidr_block must not be empty when use_mondoo_vpc is set to true.",
373+
)
374+
}
375+
}
376+
}
377+
308378
func (r *integrationAwsServerlessResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
309379
// Prevent panic if the provider has not been configured.
310380
if req.ProviderData == nil {

internal/provider/space_resource_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,9 +61,9 @@ func TestAccSpaceWithIDResource(t *testing.T) {
6161
t.Fatal(err)
6262
}
6363

64-
min := 1000
65-
max := 3000
66-
customSpaceID := "my-custom-space-id" + fmt.Sprint(rand.Intn(max-min)+min)
64+
minV := 1000
65+
maxV := 3000
66+
customSpaceID := "my-custom-space-id" + fmt.Sprint(rand.Intn(maxV-minV)+minV)
6767

6868
resource.Test(t, resource.TestCase{
6969
PreCheck: func() { testAccPreCheck(t) },

0 commit comments

Comments
 (0)