Skip to content

File tree

5 files changed

+173
-0
lines changed

5 files changed

+173
-0
lines changed

docs/rules/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -613,6 +613,8 @@ These rules enforce best practices and naming conventions:
613613
|aws_elastictranscoder_preset_invalid_description||
614614
|aws_elastictranscoder_preset_invalid_name||
615615
|aws_emr_cluster_invalid_scale_down_behavior||
616+
|aws_emr_studio_invalid_auth_mode||
617+
|aws_emr_studio_session_mapping_invalid_identity_type||
616618
|aws_flow_log_invalid_log_destination_type||
617619
|aws_flow_log_invalid_traffic_type||
618620
|aws_fms_admin_account_invalid_account_id||
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// This file generated by `generator/`. DO NOT EDIT
2+
3+
package models
4+
5+
import (
6+
"fmt"
7+
"log"
8+
9+
hcl "github.com/hashicorp/hcl/v2"
10+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
11+
)
12+
13+
// AwsEmrStudioInvalidAuthModeRule checks the pattern is valid
14+
type AwsEmrStudioInvalidAuthModeRule struct {
15+
resourceType string
16+
attributeName string
17+
enum []string
18+
}
19+
20+
// NewAwsEmrStudioInvalidAuthModeRule returns new rule with default attributes
21+
func NewAwsEmrStudioInvalidAuthModeRule() *AwsEmrStudioInvalidAuthModeRule {
22+
return &AwsEmrStudioInvalidAuthModeRule{
23+
resourceType: "aws_emr_studio",
24+
attributeName: "auth_mode",
25+
enum: []string{
26+
"SSO",
27+
"IAM",
28+
},
29+
}
30+
}
31+
32+
// Name returns the rule name
33+
func (r *AwsEmrStudioInvalidAuthModeRule) Name() string {
34+
return "aws_emr_studio_invalid_auth_mode"
35+
}
36+
37+
// Enabled returns whether the rule is enabled by default
38+
func (r *AwsEmrStudioInvalidAuthModeRule) Enabled() bool {
39+
return true
40+
}
41+
42+
// Severity returns the rule severity
43+
func (r *AwsEmrStudioInvalidAuthModeRule) Severity() string {
44+
return tflint.ERROR
45+
}
46+
47+
// Link returns the rule reference link
48+
func (r *AwsEmrStudioInvalidAuthModeRule) Link() string {
49+
return ""
50+
}
51+
52+
// Check checks the pattern is valid
53+
func (r *AwsEmrStudioInvalidAuthModeRule) Check(runner tflint.Runner) error {
54+
log.Printf("[TRACE] Check `%s` rule", r.Name())
55+
56+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
57+
var val string
58+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
59+
60+
return runner.EnsureNoError(err, func() error {
61+
found := false
62+
for _, item := range r.enum {
63+
if item == val {
64+
found = true
65+
}
66+
}
67+
if !found {
68+
runner.EmitIssueOnExpr(
69+
r,
70+
fmt.Sprintf(`"%s" is an invalid value as auth_mode`, truncateLongMessage(val)),
71+
attribute.Expr,
72+
)
73+
}
74+
return nil
75+
})
76+
})
77+
}
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
// This file generated by `generator/`. DO NOT EDIT
2+
3+
package models
4+
5+
import (
6+
"fmt"
7+
"log"
8+
9+
hcl "github.com/hashicorp/hcl/v2"
10+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
11+
)
12+
13+
// AwsEmrStudioSessionMappingInvalidIdentityTypeRule checks the pattern is valid
14+
type AwsEmrStudioSessionMappingInvalidIdentityTypeRule struct {
15+
resourceType string
16+
attributeName string
17+
enum []string
18+
}
19+
20+
// NewAwsEmrStudioSessionMappingInvalidIdentityTypeRule returns new rule with default attributes
21+
func NewAwsEmrStudioSessionMappingInvalidIdentityTypeRule() *AwsEmrStudioSessionMappingInvalidIdentityTypeRule {
22+
return &AwsEmrStudioSessionMappingInvalidIdentityTypeRule{
23+
resourceType: "aws_emr_studio_session_mapping",
24+
attributeName: "identity_type",
25+
enum: []string{
26+
"USER",
27+
"GROUP",
28+
},
29+
}
30+
}
31+
32+
// Name returns the rule name
33+
func (r *AwsEmrStudioSessionMappingInvalidIdentityTypeRule) Name() string {
34+
return "aws_emr_studio_session_mapping_invalid_identity_type"
35+
}
36+
37+
// Enabled returns whether the rule is enabled by default
38+
func (r *AwsEmrStudioSessionMappingInvalidIdentityTypeRule) Enabled() bool {
39+
return true
40+
}
41+
42+
// Severity returns the rule severity
43+
func (r *AwsEmrStudioSessionMappingInvalidIdentityTypeRule) Severity() string {
44+
return tflint.ERROR
45+
}
46+
47+
// Link returns the rule reference link
48+
func (r *AwsEmrStudioSessionMappingInvalidIdentityTypeRule) Link() string {
49+
return ""
50+
}
51+
52+
// Check checks the pattern is valid
53+
func (r *AwsEmrStudioSessionMappingInvalidIdentityTypeRule) Check(runner tflint.Runner) error {
54+
log.Printf("[TRACE] Check `%s` rule", r.Name())
55+
56+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
57+
var val string
58+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
59+
60+
return runner.EnsureNoError(err, func() error {
61+
found := false
62+
for _, item := range r.enum {
63+
if item == val {
64+
found = true
65+
}
66+
}
67+
if !found {
68+
runner.EmitIssueOnExpr(
69+
r,
70+
fmt.Sprintf(`"%s" is an invalid value as identity_type`, truncateLongMessage(val)),
71+
attribute.Expr,
72+
)
73+
}
74+
return nil
75+
})
76+
})
77+
}

rules/models/mappings/emr.hcl

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,11 @@ mapping "aws_emr_cluster" {
2626
tags = TagList
2727
}
2828

29+
mapping "aws_emr_instance_fleet" {
30+
instance_type_configs = InstanceTypeConfigList
31+
launch_specifications = InstanceFleetProvisioningSpecifications
32+
}
33+
2934
mapping "aws_emr_instance_group" {
3035
name = any // XmlStringMaxLen256
3136
cluster_id = ClusterId
@@ -42,3 +47,13 @@ mapping "aws_emr_security_configuration" {
4247
name_prefix = String
4348
configuration = String
4449
}
50+
51+
mapping "aws_emr_studio" {
52+
auth_mode = AuthMode
53+
subnet_ids = SubnetIdList
54+
tags = TagList
55+
}
56+
57+
mapping "aws_emr_studio_session_mapping" {
58+
identity_type = IdentityType
59+
}

rules/models/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -541,6 +541,8 @@ var Rules = []tflint.Rule{
541541
NewAwsElastictranscoderPresetInvalidDescriptionRule(),
542542
NewAwsElastictranscoderPresetInvalidNameRule(),
543543
NewAwsEmrClusterInvalidScaleDownBehaviorRule(),
544+
NewAwsEmrStudioInvalidAuthModeRule(),
545+
NewAwsEmrStudioSessionMappingInvalidIdentityTypeRule(),
544546
NewAwsFlowLogInvalidLogDestinationTypeRule(),
545547
NewAwsFlowLogInvalidTrafficTypeRule(),
546548
NewAwsFmsAdminAccountInvalidAccountIDRule(),

0 commit comments

Comments
 (0)