Skip to content

File tree

4 files changed

+101
-0
lines changed

4 files changed

+101
-0
lines changed

docs/rules/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -519,12 +519,14 @@ These rules enforce best practices and naming conventions:
519519
|aws_ecr_repository_invalid_name||
520520
|aws_ecr_repository_policy_invalid_policy||
521521
|aws_ecr_repository_policy_invalid_repository||
522+
|aws_ecs_account_setting_default_invalid_name||
522523
|aws_ecs_service_invalid_launch_type||
523524
|aws_ecs_service_invalid_propagate_tags||
524525
|aws_ecs_service_invalid_scheduling_strategy||
525526
|aws_ecs_task_definition_invalid_ipc_mode||
526527
|aws_ecs_task_definition_invalid_network_mode||
527528
|aws_ecs_task_definition_invalid_pid_mode||
529+
|aws_ecs_task_set_invalid_launch_type||
528530
|aws_efs_file_system_invalid_creation_token||
529531
|aws_efs_file_system_invalid_kms_key_id||
530532
|aws_efs_file_system_invalid_performance_mode||
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+
9+
hcl "github.com/hashicorp/hcl/v2"
10+
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
11+
)
12+
13+
// AwsEcsTaskSetInvalidLaunchTypeRule checks the pattern is valid
14+
type AwsEcsTaskSetInvalidLaunchTypeRule struct {
15+
resourceType string
16+
attributeName string
17+
enum []string
18+
}
19+
20+
// NewAwsEcsTaskSetInvalidLaunchTypeRule returns new rule with default attributes
21+
func NewAwsEcsTaskSetInvalidLaunchTypeRule() *AwsEcsTaskSetInvalidLaunchTypeRule {
22+
return &AwsEcsTaskSetInvalidLaunchTypeRule{
23+
resourceType: "aws_ecs_task_set",
24+
attributeName: "launch_type",
25+
enum: []string{
26+
"EC2",
27+
"FARGATE",
28+
"EXTERNAL",
29+
},
30+
}
31+
}
32+
33+
// Name returns the rule name
34+
func (r *AwsEcsTaskSetInvalidLaunchTypeRule) Name() string {
35+
return "aws_ecs_task_set_invalid_launch_type"
36+
}
37+
38+
// Enabled returns whether the rule is enabled by default
39+
func (r *AwsEcsTaskSetInvalidLaunchTypeRule) Enabled() bool {
40+
return true
41+
}
42+
43+
// Severity returns the rule severity
44+
func (r *AwsEcsTaskSetInvalidLaunchTypeRule) Severity() string {
45+
return tflint.ERROR
46+
}
47+
48+
// Link returns the rule reference link
49+
func (r *AwsEcsTaskSetInvalidLaunchTypeRule) Link() string {
50+
return ""
51+
}
52+
53+
// Check checks the pattern is valid
54+
func (r *AwsEcsTaskSetInvalidLaunchTypeRule) Check(runner tflint.Runner) error {
55+
log.Printf("[TRACE] Check `%s` rule", r.Name())
56+
57+
return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
58+
var val string
59+
err := runner.EvaluateExpr(attribute.Expr, &val, nil)
60+
61+
return runner.EnsureNoError(err, func() error {
62+
found := false
63+
for _, item := range r.enum {
64+
if item == val {
65+
found = true
66+
}
67+
}
68+
if !found {
69+
runner.EmitIssueOnExpr(
70+
r,
71+
fmt.Sprintf(`"%s" is an invalid value as launch_type`, truncateLongMessage(val)),
72+
attribute.Expr,
73+
)
74+
}
75+
return nil
76+
})
77+
})
78+
}

rules/models/mappings/ecs.hcl

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,14 @@
11
import = "aws-sdk-go/models/apis/ecs/2014-11-13/api-2.json"
22

3+
mapping "aws_ecs_account_setting_default" {
4+
name = SettingName
5+
}
6+
7+
mapping "aws_ecs_capacity_provider" {
8+
auto_scaling_group_provider = AutoScalingGroupProvider
9+
tags = Tags
10+
}
11+
312
mapping "aws_ecs_cluster" {
413
name = String
514
tags = Tags
@@ -44,6 +53,16 @@ mapping "aws_ecs_task_definition" {
4453
tags = Tags
4554
}
4655

56+
mapping "aws_ecs_task_set" {
57+
capacity_provider_strategy = CapacityProviderStrategy
58+
launch_type = LaunchType
59+
load_balancer = LoadBalancers
60+
network_configuration = NetworkConfiguration
61+
scale = Scale
62+
service_registries = ServiceRegistries
63+
tags = Tags
64+
}
65+
4766
test "aws_ecs_service" "launch_type" {
4867
ok = "FARGATE"
4968
ng = "POD"

rules/models/provider.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -447,12 +447,14 @@ var Rules = []tflint.Rule{
447447
NewAwsEcrRepositoryInvalidNameRule(),
448448
NewAwsEcrRepositoryPolicyInvalidPolicyRule(),
449449
NewAwsEcrRepositoryPolicyInvalidRepositoryRule(),
450+
NewAwsEcsAccountSettingDefaultInvalidNameRule(),
450451
NewAwsEcsServiceInvalidLaunchTypeRule(),
451452
NewAwsEcsServiceInvalidPropagateTagsRule(),
452453
NewAwsEcsServiceInvalidSchedulingStrategyRule(),
453454
NewAwsEcsTaskDefinitionInvalidIpcModeRule(),
454455
NewAwsEcsTaskDefinitionInvalidNetworkModeRule(),
455456
NewAwsEcsTaskDefinitionInvalidPidModeRule(),
457+
NewAwsEcsTaskSetInvalidLaunchTypeRule(),
456458
NewAwsEfsFileSystemInvalidCreationTokenRule(),
457459
NewAwsEfsFileSystemInvalidKmsKeyIDRule(),
458460
NewAwsEfsFileSystemInvalidPerformanceModeRule(),

0 commit comments

Comments
 (0)