Skip to content

File tree

6 files changed

+260
-0
lines changed

6 files changed

+260
-0
lines changed

docs/rules/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -919,6 +919,9 @@ These rules enforce best practices and naming conventions:
919919
|aws_macie_s3_bucket_association_invalid_prefix||
920920
|aws_media_store_container_invalid_name||
921921
|aws_media_store_container_policy_invalid_container_name||
922+
|aws_memorydb_cluster_invalid_acl_name||
923+
|aws_memorydb_user_invalid_access_string||
924+
|aws_memorydb_user_invalid_user_name||
922925
|aws_mq_broker_invalid_deployment_mode||
923926
|aws_msk_cluster_invalid_cluster_name||
924927
|aws_msk_cluster_invalid_enhanced_monitoring||
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// This file generated by `generator/`. DO NOT EDIT
2+
3+
package models
4+
5+
import (
6+
"fmt"
7+
"log"
8+
"regexp"
9+
10+
hcl "github.com/hashicorp/hcl/v2"
11+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
12+
)
13+
14+
// AwsMemoryDBClusterInvalidACLNameRule checks the pattern is valid
15+
type AwsMemoryDBClusterInvalidACLNameRule struct {
16+
resourceType string
17+
attributeName string
18+
min int
19+
pattern *regexp.Regexp
20+
}
21+
22+
// NewAwsMemoryDBClusterInvalidACLNameRule returns new rule with default attributes
23+
func NewAwsMemoryDBClusterInvalidACLNameRule() *AwsMemoryDBClusterInvalidACLNameRule {
24+
return &AwsMemoryDBClusterInvalidACLNameRule{
25+
resourceType: "aws_memorydb_cluster",
26+
attributeName: "acl_name",
27+
min: 1,
28+
pattern: regexp.MustCompile(`^[a-zA-Z][a-zA-Z0-9\-]*$`),
29+
}
30+
}
31+
32+
// Name returns the rule name
33+
func (r *AwsMemoryDBClusterInvalidACLNameRule) Name() string {
34+
return "aws_memorydb_cluster_invalid_acl_name"
35+
}
36+
37+
// Enabled returns whether the rule is enabled by default
38+
func (r *AwsMemoryDBClusterInvalidACLNameRule) Enabled() bool {
39+
return true
40+
}
41+
42+
// Severity returns the rule severity
43+
func (r *AwsMemoryDBClusterInvalidACLNameRule) Severity() string {
44+
return tflint.ERROR
45+
}
46+
47+
// Link returns the rule reference link
48+
func (r *AwsMemoryDBClusterInvalidACLNameRule) Link() string {
49+
return ""
50+
}
51+
52+
// Check checks the pattern is valid
53+
func (r *AwsMemoryDBClusterInvalidACLNameRule) 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+
if len(val) < r.min {
62+
runner.EmitIssueOnExpr(
63+
r,
64+
"acl_name must be 1 characters or higher",
65+
attribute.Expr,
66+
)
67+
}
68+
if !r.pattern.MatchString(val) {
69+
runner.EmitIssueOnExpr(
70+
r,
71+
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^[a-zA-Z][a-zA-Z0-9\-]*$`),
72+
attribute.Expr,
73+
)
74+
}
75+
return nil
76+
})
77+
})
78+
}
Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
// This file generated by `generator/`. DO NOT EDIT
2+
3+
package models
4+
5+
import (
6+
"fmt"
7+
"log"
8+
"regexp"
9+
10+
hcl "github.com/hashicorp/hcl/v2"
11+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
12+
)
13+
14+
// AwsMemoryDBUserInvalidAccessStringRule checks the pattern is valid
15+
type AwsMemoryDBUserInvalidAccessStringRule struct {
16+
resourceType string
17+
attributeName string
18+
pattern *regexp.Regexp
19+
}
20+
21+
// NewAwsMemoryDBUserInvalidAccessStringRule returns new rule with default attributes
22+
func NewAwsMemoryDBUserInvalidAccessStringRule() *AwsMemoryDBUserInvalidAccessStringRule {
23+
return &AwsMemoryDBUserInvalidAccessStringRule{
24+
resourceType: "aws_memorydb_user",
25+
attributeName: "access_string",
26+
pattern: regexp.MustCompile(`^.*\S.*$`),
27+
}
28+
}
29+
30+
// Name returns the rule name
31+
func (r *AwsMemoryDBUserInvalidAccessStringRule) Name() string {
32+
return "aws_memorydb_user_invalid_access_string"
33+
}
34+
35+
// Enabled returns whether the rule is enabled by default
36+
func (r *AwsMemoryDBUserInvalidAccessStringRule) Enabled() bool {
37+
return true
38+
}
39+
40+
// Severity returns the rule severity
41+
func (r *AwsMemoryDBUserInvalidAccessStringRule) Severity() string {
42+
return tflint.ERROR
43+
}
44+
45+
// Link returns the rule reference link
46+
func (r *AwsMemoryDBUserInvalidAccessStringRule) Link() string {
47+
return ""
48+
}
49+
50+
// Check checks the pattern is valid
51+
func (r *AwsMemoryDBUserInvalidAccessStringRule) Check(runner tflint.Runner) error {
52+
log.Printf("[TRACE] Check `%s` rule", r.Name())
53+
54+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
55+
var val string
56+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
57+
58+
return runner.EnsureNoError(err, func() error {
59+
if !r.pattern.MatchString(val) {
60+
runner.EmitIssueOnExpr(
61+
r,
62+
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^.*\S.*$`),
63+
attribute.Expr,
64+
)
65+
}
66+
return nil
67+
})
68+
})
69+
}
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
// This file generated by `generator/`. DO NOT EDIT
2+
3+
package models
4+
5+
import (
6+
"fmt"
7+
"log"
8+
"regexp"
9+
10+
hcl "github.com/hashicorp/hcl/v2"
11+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
12+
)
13+
14+
// AwsMemoryDBUserInvalidUserNameRule checks the pattern is valid
15+
type AwsMemoryDBUserInvalidUserNameRule struct {
16+
resourceType string
17+
attributeName string
18+
min int
19+
pattern *regexp.Regexp
20+
}
21+
22+
// NewAwsMemoryDBUserInvalidUserNameRule returns new rule with default attributes
23+
func NewAwsMemoryDBUserInvalidUserNameRule() *AwsMemoryDBUserInvalidUserNameRule {
24+
return &AwsMemoryDBUserInvalidUserNameRule{
25+
resourceType: "aws_memorydb_user",
26+
attributeName: "user_name",
27+
min: 1,
28+
pattern: regexp.MustCompile(`^[a-zA-Z][a-zA-Z0-9\-]*$`),
29+
}
30+
}
31+
32+
// Name returns the rule name
33+
func (r *AwsMemoryDBUserInvalidUserNameRule) Name() string {
34+
return "aws_memorydb_user_invalid_user_name"
35+
}
36+
37+
// Enabled returns whether the rule is enabled by default
38+
func (r *AwsMemoryDBUserInvalidUserNameRule) Enabled() bool {
39+
return true
40+
}
41+
42+
// Severity returns the rule severity
43+
func (r *AwsMemoryDBUserInvalidUserNameRule) Severity() string {
44+
return tflint.ERROR
45+
}
46+
47+
// Link returns the rule reference link
48+
func (r *AwsMemoryDBUserInvalidUserNameRule) Link() string {
49+
return ""
50+
}
51+
52+
// Check checks the pattern is valid
53+
func (r *AwsMemoryDBUserInvalidUserNameRule) 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+
if len(val) < r.min {
62+
runner.EmitIssueOnExpr(
63+
r,
64+
"user_name must be 1 characters or higher",
65+
attribute.Expr,
66+
)
67+
}
68+
if !r.pattern.MatchString(val) {
69+
runner.EmitIssueOnExpr(
70+
r,
71+
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^[a-zA-Z][a-zA-Z0-9\-]*$`),
72+
attribute.Expr,
73+
)
74+
}
75+
return nil
76+
})
77+
})
78+
}

rules/models/mappings/memorydb.hcl

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import = "aws-sdk-go/models/apis/memorydb/2021-01-01/api-2.json"
2+
3+
mapping "aws_memorydb_acl" {
4+
user_names = UserNameListInput
5+
tags = TagList
6+
}
7+
8+
mapping "aws_memorydb_cluster" {
9+
acl_name = ACLName
10+
security_group_ids = SecurityGroupIdsList
11+
snapshot_arns = SnapshotArnsList
12+
tags = TagList
13+
}
14+
15+
mapping "aws_memorydb_parameter_group" {
16+
tags = TagList
17+
}
18+
19+
mapping "aws_memorydb_subnet_group" {
20+
subnet_ids = SubnetIdentifierList
21+
tags = TagList
22+
}
23+
24+
mapping "aws_memorydb_user" {
25+
access_string = AccessString
26+
authentication_mode = AuthenticationMode
27+
user_name = UserName
28+
tags = TagList
29+
}

rules/models/provider.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -847,6 +847,9 @@ var Rules = []tflint.Rule{
847847
NewAwsMacieS3BucketAssociationInvalidPrefixRule(),
848848
NewAwsMediaStoreContainerInvalidNameRule(),
849849
NewAwsMediaStoreContainerPolicyInvalidContainerNameRule(),
850+
NewAwsMemoryDBClusterInvalidACLNameRule(),
851+
NewAwsMemoryDBUserInvalidAccessStringRule(),
852+
NewAwsMemoryDBUserInvalidUserNameRule(),
850853
NewAwsMqBrokerInvalidDeploymentModeRule(),
851854
NewAwsMskClusterInvalidClusterNameRule(),
852855
NewAwsMskClusterInvalidEnhancedMonitoringRule(),

0 commit comments

Comments
 (0)