Skip to content

Commit eafbc93

Browse files
authored
mapping other services (#288)
* mapping aws_codebuild https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/codebuild_report_group https://github.com/aws/aws-sdk-go/blob/main/models/apis/codebuild/2016-10-06/api-2.json * mapping aws_cognito https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/cognito_user_pool_ui_customization https://github.com/aws/aws-sdk-go/blob/main/models/apis/cognito-idp/2016-04-18/api-2.json * mapping aws_dms https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/dms_event_subscription https://github.com/aws/aws-sdk-go/blob/main/models/apis/dms/2016-01-01/api-2.json * mapping aws_docdb https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/docdb_global_cluster https://github.com/aws/aws-sdk-go/blob/main/models/apis/docdb/2014-10-31/api-2.json * mapping aws_ebs https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/ebs_snapshot_import https://github.com/aws/aws-sdk-go/blob/main/models/apis/ec2/2016-11-15/api-2.json * mapping aws_es https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/elasticsearch_domain_saml_options https://github.com/aws/aws-sdk-go/blob/main/models/apis/es/2015-01-01/api-2.json * mapping aws_fms https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/fms_policy https://github.com/aws/aws-sdk-go/blob/main/models/apis/fms/2018-01-01/api-2.json * mapping aws_lightsail https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/lightsail_instance_public_ports https://github.com/aws/aws-sdk-go/blob/main/models/apis/lightsail/2016-11-28/api-2.json * mapping aws_neptune https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/neptune_cluster_endpoint https://github.com/aws/aws-sdk-go/blob/main/models/apis/neptune/2014-10-31/api-2.json * mapping aws_organizations https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/organizations_delegated_administrator https://github.com/aws/aws-sdk-go/blob/main/models/apis/organizations/2016-11-28/api-2.json * mapping aws_rds https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/rds_cluster_role_association https://github.com/aws/aws-sdk-go/blob/main/models/apis/rds/2014-10-31/api-2.json * mapping aws_redshift https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/redshift_scheduled_action https://github.com/aws/aws-sdk-go/blob/main/models/apis/redshift/2012-12-01/api-2.json * mapping aws_service_discovery https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/service_discovery_instance https://github.com/aws/aws-sdk-go/blob/main/models/apis/servicediscovery/2017-03-14/api-2.json * mapping aws_shield https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/shield_protection_group https://github.com/aws/aws-sdk-go/blob/main/models/apis/shield/2016-06-02/api-2.json * mapping aws_transfer https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/transfer_access https://github.com/aws/aws-sdk-go/blob/main/models/apis/transfer/2018-11-05/api-2.json
1 parent ba6d9ee commit eafbc93

File tree

41 files changed

+2091
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+2091
-0
lines changed

docs/rules/README.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -354,6 +354,8 @@ These rules enforce best practices and naming conventions:
354354
|aws_codeartifact_repository_permissions_policy_invalid_policy_revision||
355355
|aws_codeartifact_repository_permissions_policy_invalid_repository||
356356
|aws_codebuild_project_invalid_description||
357+
|aws_codebuild_report_group_invalid_name||
358+
|aws_codebuild_report_group_invalid_type||
357359
|aws_codebuild_source_credential_invalid_auth_type||
358360
|aws_codebuild_source_credential_invalid_server_type||
359361
|aws_codecommit_approval_rule_template_association_invalid_approval_rule_template_name||
@@ -407,6 +409,8 @@ These rules enforce best practices and naming conventions:
407409
|aws_cognito_user_pool_invalid_name||
408410
|aws_cognito_user_pool_invalid_sms_authentication_message||
409411
|aws_cognito_user_pool_invalid_sms_verification_message||
412+
|aws_cognito_user_pool_ui_customization_invalid_client_id||
413+
|aws_cognito_user_pool_ui_customization_invalid_user_pool_id||
410414
|aws_config_aggregate_authorization_invalid_account_id||
411415
|aws_config_aggregate_authorization_invalid_region||
412416
|aws_config_config_rule_invalid_description||
@@ -507,6 +511,7 @@ These rules enforce best practices and naming conventions:
507511
|aws_dms_endpoint_invalid_endpoint_type||
508512
|aws_dms_endpoint_invalid_ssl_mode||
509513
|aws_dms_replication_task_invalid_migration_type||
514+
|aws_docdb_global_cluster_invalid_global_cluster_identifier||
510515
|aws_dx_bgp_peer_invalid_address_family||
511516
|aws_dx_hosted_private_virtual_interface_invalid_address_family||
512517
|aws_dx_hosted_public_virtual_interface_invalid_address_family||
@@ -604,6 +609,7 @@ These rules enforce best practices and naming conventions:
604609
|aws_elasticsearch_domain_invalid_domain_name||
605610
|aws_elasticsearch_domain_invalid_elasticsearch_version||
606611
|aws_elasticsearch_domain_policy_invalid_domain_name||
612+
|aws_elasticsearch_domain_saml_options_invalid_domain_name||
607613
|aws_elastictranscoder_pipeline_invalid_aws_kms_key_arn||
608614
|aws_elastictranscoder_pipeline_invalid_input_bucket||
609615
|aws_elastictranscoder_pipeline_invalid_name||
@@ -618,6 +624,8 @@ These rules enforce best practices and naming conventions:
618624
|aws_flow_log_invalid_log_destination_type||
619625
|aws_flow_log_invalid_traffic_type||
620626
|aws_fms_admin_account_invalid_account_id||
627+
|aws_fms_policy_invalid_name||
628+
|aws_fms_policy_invalid_resource_type||
621629
|aws_fsx_backup_invalid_file_system_id||
622630
|aws_fsx_backup_invalid_volume_id||
623631
|aws_fsx_lustre_file_system_invalid_weekly_maintenance_start_time||
@@ -875,6 +883,7 @@ These rules enforce best practices and naming conventions:
875883
|aws_lightsail_instance_invalid_blueprint_id||
876884
|aws_lightsail_instance_invalid_bundle_id||
877885
|aws_lightsail_instance_invalid_key_pair_name||
886+
|aws_lightsail_instance_public_ports_invalid_instance_name||
878887
|aws_lightsail_key_pair_invalid_name||
879888
|aws_lightsail_static_ip_attachment_invalid_instance_name||
880889
|aws_lightsail_static_ip_attachment_invalid_static_ip_name||
@@ -918,6 +927,8 @@ These rules enforce best practices and naming conventions:
918927
|aws_organizations_account_invalid_name||
919928
|aws_organizations_account_invalid_parent_id||
920929
|aws_organizations_account_invalid_role_name||
930+
|aws_organizations_delegated_administrator_invalid_account_id||
931+
|aws_organizations_delegated_administrator_invalid_service_principal||
921932
|aws_organizations_organization_invalid_feature_set||
922933
|aws_organizations_organizational_unit_invalid_name||
923934
|aws_organizations_organizational_unit_invalid_parent_id||
@@ -949,6 +960,7 @@ These rules enforce best practices and naming conventions:
949960
|aws_quicksight_user_invalid_session_name||
950961
|aws_quicksight_user_invalid_user_name||
951962
|aws_quicksight_user_invalid_user_role||
963+
|aws_rds_cluster_role_association_invalid_db_cluster_identifier||
952964
|aws_redshift_cluster_invalid_availability_zone||
953965
|aws_redshift_cluster_invalid_cluster_identifier||
954966
|aws_redshift_cluster_invalid_cluster_parameter_group_name||
@@ -1151,6 +1163,8 @@ These rules enforce best practices and naming conventions:
11511163
|aws_securityhub_standards_subscription_invalid_standards_arn||
11521164
|aws_service_discovery_http_namespace_invalid_description||
11531165
|aws_service_discovery_http_namespace_invalid_name||
1166+
|aws_service_discovery_instance_invalid_instance_id||
1167+
|aws_service_discovery_instance_invalid_service_id||
11541168
|aws_service_discovery_private_dns_namespace_invalid_description||
11551169
|aws_service_discovery_private_dns_namespace_invalid_name||
11561170
|aws_service_discovery_private_dns_namespace_invalid_vpc||
@@ -1219,6 +1233,10 @@ These rules enforce best practices and naming conventions:
12191233
|aws_sfn_state_machine_invalid_definition||
12201234
|aws_sfn_state_machine_invalid_name||
12211235
|aws_sfn_state_machine_invalid_role_arn||
1236+
|aws_shield_protection_group_invalid_aggregation||
1237+
|aws_shield_protection_group_invalid_pattern||
1238+
|aws_shield_protection_group_invalid_protection_group_id||
1239+
|aws_shield_protection_group_invalid_resource_type||
12221240
|aws_shield_protection_invalid_name||
12231241
|aws_shield_protection_invalid_resource_arn||
12241242
|aws_signer_signing_job_invalid_profile_name||
@@ -1339,6 +1357,12 @@ These rules enforce best practices and naming conventions:
13391357
|aws_timestreamwrite_database_invalid_kms_key_id||
13401358
|aws_timestreamwrite_table_invalid_database_name||
13411359
|aws_timestreamwrite_table_invalid_table_name||
1360+
|aws_transfer_access_invalid_external_id||
1361+
|aws_transfer_access_invalid_home_directory||
1362+
|aws_transfer_access_invalid_home_directory_type||
1363+
|aws_transfer_access_invalid_policy||
1364+
|aws_transfer_access_invalid_role||
1365+
|aws_transfer_access_invalid_server_id||
13421366
|aws_transfer_server_invalid_endpoint_type||
13431367
|aws_transfer_server_invalid_identity_provider_type||
13441368
|aws_transfer_server_invalid_invocation_role||
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
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+
// AwsCodebuildReportGroupInvalidNameRule checks the pattern is valid
13+
type AwsCodebuildReportGroupInvalidNameRule struct {
14+
resourceType string
15+
attributeName string
16+
max int
17+
min int
18+
}
19+
20+
// NewAwsCodebuildReportGroupInvalidNameRule returns new rule with default attributes
21+
func NewAwsCodebuildReportGroupInvalidNameRule() *AwsCodebuildReportGroupInvalidNameRule {
22+
return &AwsCodebuildReportGroupInvalidNameRule{
23+
resourceType: "aws_codebuild_report_group",
24+
attributeName: "name",
25+
max: 128,
26+
min: 2,
27+
}
28+
}
29+
30+
// Name returns the rule name
31+
func (r *AwsCodebuildReportGroupInvalidNameRule) Name() string {
32+
return "aws_codebuild_report_group_invalid_name"
33+
}
34+
35+
// Enabled returns whether the rule is enabled by default
36+
func (r *AwsCodebuildReportGroupInvalidNameRule) Enabled() bool {
37+
return true
38+
}
39+
40+
// Severity returns the rule severity
41+
func (r *AwsCodebuildReportGroupInvalidNameRule) Severity() string {
42+
return tflint.ERROR
43+
}
44+
45+
// Link returns the rule reference link
46+
func (r *AwsCodebuildReportGroupInvalidNameRule) Link() string {
47+
return ""
48+
}
49+
50+
// Check checks the pattern is valid
51+
func (r *AwsCodebuildReportGroupInvalidNameRule) 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 len(val) > r.max {
60+
runner.EmitIssueOnExpr(
61+
r,
62+
"name must be 128 characters or less",
63+
attribute.Expr,
64+
)
65+
}
66+
if len(val) < r.min {
67+
runner.EmitIssueOnExpr(
68+
r,
69+
"name must be 2 characters or higher",
70+
attribute.Expr,
71+
)
72+
}
73+
return nil
74+
})
75+
})
76+
}
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+
// AwsCodebuildReportGroupInvalidTypeRule checks the pattern is valid
14+
type AwsCodebuildReportGroupInvalidTypeRule struct {
15+
resourceType string
16+
attributeName string
17+
enum []string
18+
}
19+
20+
// NewAwsCodebuildReportGroupInvalidTypeRule returns new rule with default attributes
21+
func NewAwsCodebuildReportGroupInvalidTypeRule() *AwsCodebuildReportGroupInvalidTypeRule {
22+
return &AwsCodebuildReportGroupInvalidTypeRule{
23+
resourceType: "aws_codebuild_report_group",
24+
attributeName: "type",
25+
enum: []string{
26+
"TEST",
27+
"CODE_COVERAGE",
28+
},
29+
}
30+
}
31+
32+
// Name returns the rule name
33+
func (r *AwsCodebuildReportGroupInvalidTypeRule) Name() string {
34+
return "aws_codebuild_report_group_invalid_type"
35+
}
36+
37+
// Enabled returns whether the rule is enabled by default
38+
func (r *AwsCodebuildReportGroupInvalidTypeRule) Enabled() bool {
39+
return true
40+
}
41+
42+
// Severity returns the rule severity
43+
func (r *AwsCodebuildReportGroupInvalidTypeRule) Severity() string {
44+
return tflint.ERROR
45+
}
46+
47+
// Link returns the rule reference link
48+
func (r *AwsCodebuildReportGroupInvalidTypeRule) Link() string {
49+
return ""
50+
}
51+
52+
// Check checks the pattern is valid
53+
func (r *AwsCodebuildReportGroupInvalidTypeRule) 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 type`, truncateLongMessage(val)),
71+
attribute.Expr,
72+
)
73+
}
74+
return nil
75+
})
76+
})
77+
}
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+
// AwsCognitoUserPoolUICustomizationInvalidClientIDRule checks the pattern is valid
15+
type AwsCognitoUserPoolUICustomizationInvalidClientIDRule struct {
16+
resourceType string
17+
attributeName string
18+
max int
19+
min int
20+
pattern *regexp.Regexp
21+
}
22+
23+
// NewAwsCognitoUserPoolUICustomizationInvalidClientIDRule returns new rule with default attributes
24+
func NewAwsCognitoUserPoolUICustomizationInvalidClientIDRule() *AwsCognitoUserPoolUICustomizationInvalidClientIDRule {
25+
return &AwsCognitoUserPoolUICustomizationInvalidClientIDRule{
26+
resourceType: "aws_cognito_user_pool_ui_customization",
27+
attributeName: "client_id",
28+
max: 128,
29+
min: 1,
30+
pattern: regexp.MustCompile(`^[\w+]+$`),
31+
}
32+
}
33+
34+
// Name returns the rule name
35+
func (r *AwsCognitoUserPoolUICustomizationInvalidClientIDRule) Name() string {
36+
return "aws_cognito_user_pool_ui_customization_invalid_client_id"
37+
}
38+
39+
// Enabled returns whether the rule is enabled by default
40+
func (r *AwsCognitoUserPoolUICustomizationInvalidClientIDRule) Enabled() bool {
41+
return true
42+
}
43+
44+
// Severity returns the rule severity
45+
func (r *AwsCognitoUserPoolUICustomizationInvalidClientIDRule) Severity() string {
46+
return tflint.ERROR
47+
}
48+
49+
// Link returns the rule reference link
50+
func (r *AwsCognitoUserPoolUICustomizationInvalidClientIDRule) Link() string {
51+
return ""
52+
}
53+
54+
// Check checks the pattern is valid
55+
func (r *AwsCognitoUserPoolUICustomizationInvalidClientIDRule) 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+
"client_id must be 128 characters or less",
67+
attribute.Expr,
68+
)
69+
}
70+
if len(val) < r.min {
71+
runner.EmitIssueOnExpr(
72+
r,
73+
"client_id 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), `^[\w+]+$`),
81+
attribute.Expr,
82+
)
83+
}
84+
return nil
85+
})
86+
})
87+
}

0 commit comments

Comments
 (0)