Skip to content

Commit

Permalink
✨ Deprecate use_mondoo_vpc bool and introduce enum instead (#224)
Browse files Browse the repository at this point in the history
* Deprecate use_mondoo_vpc bool and introduce enum instead

* accept NATGW
  • Loading branch information
slntopp authored Mar 7, 2025
1 parent 870ed50 commit b51aa68
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 5 deletions.
7 changes: 4 additions & 3 deletions .github/actions/spelling/expect.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@ ADk
appsettings
ashburn
AThq
CIDs
codegen
concat
connectionstrings
Cwj
CIDs
crowdstrike
sentinelone
Cwj
DXhjr
FIGc
Gci
Expand All @@ -24,6 +23,7 @@ ljq
LQV
mrns
msdefender
NATGW
NCIs
nestedatt
NHar
Expand All @@ -38,6 +38,7 @@ qpbi
querypack
Qwc
scim
sentinelone
startswith
Tcy
testacc
Expand Down
3 changes: 2 additions & 1 deletion docs/resources/integration_aws_serverless.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,4 +169,5 @@ Optional:
Optional:

- `cidr_block` (String) CIDR block for the Mondoo VPC.
- `use_mondoo_vpc` (Boolean) Use Mondoo VPC.
- `use_mondoo_vpc` (Boolean, Deprecated) Use Mondoo VPC.
- `vpc_flavour` (String) VPC flavour, one of: DEFAULT_VPC, MONDOO_NATGW, MONDOO_IGW
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ require (
github.com/hashicorp/terraform-plugin-testing v1.11.0
github.com/stretchr/testify v1.10.0
go.mondoo.com/cnquery/v11 v11.40.0
go.mondoo.com/mondoo-go v0.0.0-20250129071639-c3de624e0c5a
go.mondoo.com/mondoo-go v0.0.0-20250307104419-3781f16e04aa
gopkg.in/yaml.v2 v2.4.0
)

Expand Down
2 changes: 2 additions & 0 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -600,6 +600,8 @@ go.mondoo.com/cnquery/v11 v11.40.0 h1:nqVVz2ECIChemM7rl0NwbyCtJSgct4zNRQnPRJjnh6
go.mondoo.com/cnquery/v11 v11.40.0/go.mod h1:kSnnow+FANisAAubIWu3ZfdbZXgvnH0IfW6f6LR1ChI=
go.mondoo.com/mondoo-go v0.0.0-20250129071639-c3de624e0c5a h1:DtwCDuKcXUVJZyKni8TlkxxlFdutPVK6JFCldIuq8cw=
go.mondoo.com/mondoo-go v0.0.0-20250129071639-c3de624e0c5a/go.mod h1:0HMHhLaS0V1himFIJQxABmvqEAdWv1NUScXpSjrhxqo=
go.mondoo.com/mondoo-go v0.0.0-20250307104419-3781f16e04aa h1:SycZqHRFW+M1sZMlLvgmoVep2Fa+9IBIcOwQKTKmLQE=
go.mondoo.com/mondoo-go v0.0.0-20250307104419-3781f16e04aa/go.mod h1:0HMHhLaS0V1himFIJQxABmvqEAdWv1NUScXpSjrhxqo=
go.mondoo.com/ranger-rpc v0.6.5 h1:KKoeTGPonJI3T6lrT9oxdH9eNlZC6pdqYvsuWZWyB6w=
go.mondoo.com/ranger-rpc v0.6.5/go.mod h1:kwPJSYj32vZJjWoQSKEao5YoUO/ZRcjVGxBOL4tApf0=
go.mongodb.org/mongo-driver v1.10.0 h1:UtV6N5k14upNp4LTduX0QCufG124fSu25Wz9tu94GLg=
Expand Down
39 changes: 39 additions & 0 deletions internal/provider/integration_aws_serverless_resource.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package provider
import (
"context"
"fmt"
"slices"

"github.com/hashicorp/terraform-plugin-framework/resource"
"github.com/hashicorp/terraform-plugin-framework/resource/schema"
Expand Down Expand Up @@ -64,9 +65,12 @@ type ScanConfigurationInput struct {
}

type VPCConfigurationInput struct {
// (Optional.)
UseMondooVPC types.Bool `tfsdk:"use_mondoo_vpc"`
// (Optional.)
CIDR types.String `tfsdk:"cidr_block"`
// (Optional.)
VPCFlavour types.String `tfsdk:"vpc_flavour"`
}

type AWSEventPatternInput struct {
Expand Down Expand Up @@ -190,10 +194,18 @@ func (m integrationAwsServerlessResourceModel) GetConfigurationOptions() *mondoo

if m.ScanConfiguration.VpcConfiguration != nil {
useMondooVPC := m.ScanConfiguration.VpcConfiguration.UseMondooVPC.ValueBool()

var vpcFlavourPtr *mondoov1.VPCFlavour
if m.ScanConfiguration.VpcConfiguration.VPCFlavour.ValueString() != "" {
vpcFlavour := mondoov1.VPCFlavour(m.ScanConfiguration.VpcConfiguration.VPCFlavour.ValueString())
vpcFlavourPtr = &vpcFlavour
}

opts.ScanConfiguration.VpcConfiguration = &mondoov1.VPCConfigurationInput{
UseMondooVPC: mondoov1.NewBooleanPtr(mondoov1.Boolean(useMondooVPC)),
UseDefaultVPC: mondoov1.NewBooleanPtr(mondoov1.Boolean(!useMondooVPC)),
CIDR: mondoov1.NewStringPtr(mondoov1.String(m.ScanConfiguration.VpcConfiguration.CIDR.ValueString())),
VpcFlavour: vpcFlavourPtr,
}
}

Expand Down Expand Up @@ -271,11 +283,16 @@ func (r *integrationAwsServerlessResource) Schema(ctx context.Context, req resou
"use_mondoo_vpc": schema.BoolAttribute{
MarkdownDescription: "Use Mondoo VPC.",
Optional: true,
DeprecationMessage: "This field is deprecated and will be removed in the future.",
},
"cidr_block": schema.StringAttribute{
MarkdownDescription: "CIDR block for the Mondoo VPC.",
Optional: true,
},
"vpc_flavour": schema.StringAttribute{
MarkdownDescription: "VPC flavour, one of: DEFAULT_VPC, MONDOO_NATGW, MONDOO_IGW",
Optional: true,
},
},
},
"ec2_scan_options": schema.SingleNestedAttribute{
Expand Down Expand Up @@ -390,6 +407,28 @@ func (r integrationAwsServerlessResource) ValidateConfig(ctx context.Context, re
)
}
}

vpcFlavour := mondoov1.VPCFlavour(data.ScanConfiguration.VpcConfiguration.VPCFlavour.ValueString())
allowedVpcFlavours := []mondoov1.VPCFlavour{
mondoov1.VPCFlavourDefaultVpc, mondoov1.VPCFlavourMondooNatgw, mondoov1.VPCFlavourMondooIgw,
}
if vpcFlavour != "" {
if !slices.Contains(allowedVpcFlavours, vpcFlavour) {
resp.Diagnostics.AddError(
"InvalidAttributeValueError",
fmt.Sprintf("Attribute vpc_flavour must be one of %v, received: '%s'", allowedVpcFlavours, vpcFlavour),
)
}

if cidr := data.ScanConfiguration.VpcConfiguration.CIDR.ValueString(); slices.Contains([]mondoov1.VPCFlavour{
mondoov1.VPCFlavourMondooNatgw, mondoov1.VPCFlavourMondooIgw,
}, vpcFlavour) && cidr == "" {
resp.Diagnostics.AddError(
"MissingAttributeError",
"Attribute cidr_block must not be empty when Mondoo VPC is used.",
)
}
}
}

func (r *integrationAwsServerlessResource) Configure(ctx context.Context, req resource.ConfigureRequest, resp *resource.ConfigureResponse) {
Expand Down

0 comments on commit b51aa68

Please sign in to comment.