Skip to content

9 files changed

+525
-0
lines changed

docs/rules/README.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -798,6 +798,12 @@ These rules enforce best practices and naming conventions:
798798
|aws_kinesis_stream_invalid_encryption_type||
799799
|aws_kinesis_stream_invalid_kms_key_id||
800800
|aws_kinesis_stream_invalid_name||
801+
|aws_kinesisanalyticsv2_application_invalid_description||
802+
|aws_kinesisanalyticsv2_application_invalid_name||
803+
|aws_kinesisanalyticsv2_application_invalid_runtime_environment||
804+
|aws_kinesisanalyticsv2_application_invalid_service_execution_role||
805+
|aws_kinesisanalyticsv2_application_snapshot_invalid_application_name||
806+
|aws_kinesisanalyticsv2_application_snapshot_invalid_snapshot_name||
801807
|aws_kms_alias_invalid_name||
802808
|aws_kms_alias_invalid_target_key_id||
803809
|aws_kms_ciphertext_invalid_key_id||
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
// This file generated by `generator/`. DO NOT EDIT
2+
3+
package models
4+
5+
import (
6+
"log"
7+
8+
hcl "github.com/hashicorp/hcl/v2"
9+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
10+
)
11+
12+
// AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule checks the pattern is valid
13+
type AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule struct {
14+
resourceType string
15+
attributeName string
16+
max int
17+
}
18+
19+
// NewAwsKinesisanalyticsv2ApplicationInvalidDescriptionRule returns new rule with default attributes
20+
func NewAwsKinesisanalyticsv2ApplicationInvalidDescriptionRule() *AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule {
21+
return &AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule{
22+
resourceType: "aws_kinesisanalyticsv2_application",
23+
attributeName: "description",
24+
max: 1024,
25+
}
26+
}
27+
28+
// Name returns the rule name
29+
func (r *AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule) Name() string {
30+
return "aws_kinesisanalyticsv2_application_invalid_description"
31+
}
32+
33+
// Enabled returns whether the rule is enabled by default
34+
func (r *AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule) Enabled() bool {
35+
return true
36+
}
37+
38+
// Severity returns the rule severity
39+
func (r *AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule) Severity() string {
40+
return tflint.ERROR
41+
}
42+
43+
// Link returns the rule reference link
44+
func (r *AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule) Link() string {
45+
return ""
46+
}
47+
48+
// Check checks the pattern is valid
49+
func (r *AwsKinesisanalyticsv2ApplicationInvalidDescriptionRule) Check(runner tflint.Runner) error {
50+
log.Printf("[TRACE] Check `%s` rule", r.Name())
51+
52+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
53+
var val string
54+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
55+
56+
return runner.EnsureNoError(err, func() error {
57+
if len(val) > r.max {
58+
runner.EmitIssueOnExpr(
59+
r,
60+
"description must be 1024 characters or less",
61+
attribute.Expr,
62+
)
63+
}
64+
return nil
65+
})
66+
})
67+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
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+
// AwsKinesisanalyticsv2ApplicationInvalidNameRule checks the pattern is valid
15+
type AwsKinesisanalyticsv2ApplicationInvalidNameRule struct {
16+
resourceType string
17+
attributeName string
18+
max int
19+
min int
20+
pattern *regexp.Regexp
21+
}
22+
23+
// NewAwsKinesisanalyticsv2ApplicationInvalidNameRule returns new rule with default attributes
24+
func NewAwsKinesisanalyticsv2ApplicationInvalidNameRule() *AwsKinesisanalyticsv2ApplicationInvalidNameRule {
25+
return &AwsKinesisanalyticsv2ApplicationInvalidNameRule{
26+
resourceType: "aws_kinesisanalyticsv2_application",
27+
attributeName: "name",
28+
max: 128,
29+
min: 1,
30+
pattern: regexp.MustCompile(`^[a-zA-Z0-9_.-]+$`),
31+
}
32+
}
33+
34+
// Name returns the rule name
35+
func (r *AwsKinesisanalyticsv2ApplicationInvalidNameRule) Name() string {
36+
return "aws_kinesisanalyticsv2_application_invalid_name"
37+
}
38+
39+
// Enabled returns whether the rule is enabled by default
40+
func (r *AwsKinesisanalyticsv2ApplicationInvalidNameRule) Enabled() bool {
41+
return true
42+
}
43+
44+
// Severity returns the rule severity
45+
func (r *AwsKinesisanalyticsv2ApplicationInvalidNameRule) Severity() string {
46+
return tflint.ERROR
47+
}
48+
49+
// Link returns the rule reference link
50+
func (r *AwsKinesisanalyticsv2ApplicationInvalidNameRule) Link() string {
51+
return ""
52+
}
53+
54+
// Check checks the pattern is valid
55+
func (r *AwsKinesisanalyticsv2ApplicationInvalidNameRule) Check(runner tflint.Runner) error {
56+
log.Printf("[TRACE] Check `%s` rule", r.Name())
57+
58+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
59+
var val string
60+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
61+
62+
return runner.EnsureNoError(err, func() error {
63+
if len(val) > r.max {
64+
runner.EmitIssueOnExpr(
65+
r,
66+
"name must be 128 characters or less",
67+
attribute.Expr,
68+
)
69+
}
70+
if len(val) < r.min {
71+
runner.EmitIssueOnExpr(
72+
r,
73+
"name must be 1 characters or higher",
74+
attribute.Expr,
75+
)
76+
}
77+
if !r.pattern.MatchString(val) {
78+
runner.EmitIssueOnExpr(
79+
r,
80+
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^[a-zA-Z0-9_.-]+$`),
81+
attribute.Expr,
82+
)
83+
}
84+
return nil
85+
})
86+
})
87+
}
Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,82 @@
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+
// AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule checks the pattern is valid
14+
type AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule struct {
15+
resourceType string
16+
attributeName string
17+
enum []string
18+
}
19+
20+
// NewAwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule returns new rule with default attributes
21+
func NewAwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule() *AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule {
22+
return &AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule{
23+
resourceType: "aws_kinesisanalyticsv2_application",
24+
attributeName: "runtime_environment",
25+
enum: []string{
26+
"SQL-1_0",
27+
"FLINK-1_6",
28+
"FLINK-1_8",
29+
"ZEPPELIN-FLINK-1_0",
30+
"FLINK-1_11",
31+
"FLINK-1_13",
32+
"ZEPPELIN-FLINK-2_0",
33+
},
34+
}
35+
}
36+
37+
// Name returns the rule name
38+
func (r *AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule) Name() string {
39+
return "aws_kinesisanalyticsv2_application_invalid_runtime_environment"
40+
}
41+
42+
// Enabled returns whether the rule is enabled by default
43+
func (r *AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule) Enabled() bool {
44+
return true
45+
}
46+
47+
// Severity returns the rule severity
48+
func (r *AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule) Severity() string {
49+
return tflint.ERROR
50+
}
51+
52+
// Link returns the rule reference link
53+
func (r *AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule) Link() string {
54+
return ""
55+
}
56+
57+
// Check checks the pattern is valid
58+
func (r *AwsKinesisanalyticsv2ApplicationInvalidRuntimeEnvironmentRule) Check(runner tflint.Runner) error {
59+
log.Printf("[TRACE] Check `%s` rule", r.Name())
60+
61+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
62+
var val string
63+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
64+
65+
return runner.EnsureNoError(err, func() error {
66+
found := false
67+
for _, item := range r.enum {
68+
if item == val {
69+
found = true
70+
}
71+
}
72+
if !found {
73+
runner.EmitIssueOnExpr(
74+
r,
75+
fmt.Sprintf(`"%s" is an invalid value as runtime_environment`, truncateLongMessage(val)),
76+
attribute.Expr,
77+
)
78+
}
79+
return nil
80+
})
81+
})
82+
}
Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
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+
// AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule checks the pattern is valid
15+
type AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule struct {
16+
resourceType string
17+
attributeName string
18+
max int
19+
min int
20+
pattern *regexp.Regexp
21+
}
22+
23+
// NewAwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule returns new rule with default attributes
24+
func NewAwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule() *AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule {
25+
return &AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule{
26+
resourceType: "aws_kinesisanalyticsv2_application",
27+
attributeName: "service_execution_role",
28+
max: 2048,
29+
min: 1,
30+
pattern: regexp.MustCompile(`^arn:.*$`),
31+
}
32+
}
33+
34+
// Name returns the rule name
35+
func (r *AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule) Name() string {
36+
return "aws_kinesisanalyticsv2_application_invalid_service_execution_role"
37+
}
38+
39+
// Enabled returns whether the rule is enabled by default
40+
func (r *AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule) Enabled() bool {
41+
return true
42+
}
43+
44+
// Severity returns the rule severity
45+
func (r *AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule) Severity() string {
46+
return tflint.ERROR
47+
}
48+
49+
// Link returns the rule reference link
50+
func (r *AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule) Link() string {
51+
return ""
52+
}
53+
54+
// Check checks the pattern is valid
55+
func (r *AwsKinesisanalyticsv2ApplicationInvalidServiceExecutionRoleRule) Check(runner tflint.Runner) error {
56+
log.Printf("[TRACE] Check `%s` rule", r.Name())
57+
58+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
59+
var val string
60+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
61+
62+
return runner.EnsureNoError(err, func() error {
63+
if len(val) > r.max {
64+
runner.EmitIssueOnExpr(
65+
r,
66+
"service_execution_role must be 2048 characters or less",
67+
attribute.Expr,
68+
)
69+
}
70+
if len(val) < r.min {
71+
runner.EmitIssueOnExpr(
72+
r,
73+
"service_execution_role must be 1 characters or higher",
74+
attribute.Expr,
75+
)
76+
}
77+
if !r.pattern.MatchString(val) {
78+
runner.EmitIssueOnExpr(
79+
r,
80+
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^arn:.*$`),
81+
attribute.Expr,
82+
)
83+
}
84+
return nil
85+
})
86+
})
87+
}

0 commit comments

Comments
 (0)