Skip to content

Commit

Permalink
Show file tree
Hide file tree
Showing 6 changed files with 227 additions and 0 deletions.
3 changes: 3 additions & 0 deletions docs/rules/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -242,6 +242,9 @@ These rules enforce best practices and naming conventions:
|aws_athena_workgroup_invalid_state||
|aws_backup_selection_invalid_name||
|aws_backup_vault_invalid_name||
|aws_backup_vault_lock_configuration_invalid_backup_vault_name||
|aws_backup_vault_notifications_invalid_backup_vault_name||
|aws_backup_vault_policy_invalid_backup_vault_name||
|aws_batch_compute_environment_invalid_state||
|aws_batch_compute_environment_invalid_type||
|aws_batch_job_definition_invalid_type||
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// This file generated by `generator/`. DO NOT EDIT

package models

import (
"fmt"
"log"
"regexp"

hcl "github.com/hashicorp/hcl/v2"
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
)

// AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule checks the pattern is valid
type AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule struct {
resourceType string
attributeName string
pattern *regexp.Regexp
}

// NewAwsBackupVaultLockConfigurationInvalidBackupVaultNameRule returns new rule with default attributes
func NewAwsBackupVaultLockConfigurationInvalidBackupVaultNameRule() *AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule {
return &AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule{
resourceType: "aws_backup_vault_lock_configuration",
attributeName: "backup_vault_name",
pattern: regexp.MustCompile(`^[a-zA-Z0-9\-\_]{2,50}$`),
}
}

// Name returns the rule name
func (r *AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule) Name() string {
return "aws_backup_vault_lock_configuration_invalid_backup_vault_name"
}

// Enabled returns whether the rule is enabled by default
func (r *AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule) Enabled() bool {
return true
}

// Severity returns the rule severity
func (r *AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule) Severity() string {
return tflint.ERROR
}

// Link returns the rule reference link
func (r *AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule) Link() string {
return ""
}

// Check checks the pattern is valid
func (r *AwsBackupVaultLockConfigurationInvalidBackupVaultNameRule) Check(runner tflint.Runner) error {
log.Printf("[TRACE] Check `%s` rule", r.Name())

return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
var val string
err := runner.EvaluateExpr(attribute.Expr, &val, nil)

return runner.EnsureNoError(err, func() error {
if !r.pattern.MatchString(val) {
runner.EmitIssueOnExpr(
r,
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^[a-zA-Z0-9\-\_]{2,50}$`),
attribute.Expr,
)
}
return nil
})
})
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// This file generated by `generator/`. DO NOT EDIT

package models

import (
"fmt"
"log"
"regexp"

hcl "github.com/hashicorp/hcl/v2"
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
)

// AwsBackupVaultNotificationsInvalidBackupVaultNameRule checks the pattern is valid
type AwsBackupVaultNotificationsInvalidBackupVaultNameRule struct {
resourceType string
attributeName string
pattern *regexp.Regexp
}

// NewAwsBackupVaultNotificationsInvalidBackupVaultNameRule returns new rule with default attributes
func NewAwsBackupVaultNotificationsInvalidBackupVaultNameRule() *AwsBackupVaultNotificationsInvalidBackupVaultNameRule {
return &AwsBackupVaultNotificationsInvalidBackupVaultNameRule{
resourceType: "aws_backup_vault_notifications",
attributeName: "backup_vault_name",
pattern: regexp.MustCompile(`^[a-zA-Z0-9\-\_]{2,50}$`),
}
}

// Name returns the rule name
func (r *AwsBackupVaultNotificationsInvalidBackupVaultNameRule) Name() string {
return "aws_backup_vault_notifications_invalid_backup_vault_name"
}

// Enabled returns whether the rule is enabled by default
func (r *AwsBackupVaultNotificationsInvalidBackupVaultNameRule) Enabled() bool {
return true
}

// Severity returns the rule severity
func (r *AwsBackupVaultNotificationsInvalidBackupVaultNameRule) Severity() string {
return tflint.ERROR
}

// Link returns the rule reference link
func (r *AwsBackupVaultNotificationsInvalidBackupVaultNameRule) Link() string {
return ""
}

// Check checks the pattern is valid
func (r *AwsBackupVaultNotificationsInvalidBackupVaultNameRule) Check(runner tflint.Runner) error {
log.Printf("[TRACE] Check `%s` rule", r.Name())

return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
var val string
err := runner.EvaluateExpr(attribute.Expr, &val, nil)

return runner.EnsureNoError(err, func() error {
if !r.pattern.MatchString(val) {
runner.EmitIssueOnExpr(
r,
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^[a-zA-Z0-9\-\_]{2,50}$`),
attribute.Expr,
)
}
return nil
})
})
}
69 changes: 69 additions & 0 deletions rules/models/aws_backup_vault_policy_invalid_backup_vault_name.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
// This file generated by `generator/`. DO NOT EDIT

package models

import (
"fmt"
"log"
"regexp"

hcl "github.com/hashicorp/hcl/v2"
"github.com/terraform-linters/tflint-plugin-sdk/tflint"
)

// AwsBackupVaultPolicyInvalidBackupVaultNameRule checks the pattern is valid
type AwsBackupVaultPolicyInvalidBackupVaultNameRule struct {
resourceType string
attributeName string
pattern *regexp.Regexp
}

// NewAwsBackupVaultPolicyInvalidBackupVaultNameRule returns new rule with default attributes
func NewAwsBackupVaultPolicyInvalidBackupVaultNameRule() *AwsBackupVaultPolicyInvalidBackupVaultNameRule {
return &AwsBackupVaultPolicyInvalidBackupVaultNameRule{
resourceType: "aws_backup_vault_policy",
attributeName: "backup_vault_name",
pattern: regexp.MustCompile(`^[a-zA-Z0-9\-\_]{2,50}$`),
}
}

// Name returns the rule name
func (r *AwsBackupVaultPolicyInvalidBackupVaultNameRule) Name() string {
return "aws_backup_vault_policy_invalid_backup_vault_name"
}

// Enabled returns whether the rule is enabled by default
func (r *AwsBackupVaultPolicyInvalidBackupVaultNameRule) Enabled() bool {
return true
}

// Severity returns the rule severity
func (r *AwsBackupVaultPolicyInvalidBackupVaultNameRule) Severity() string {
return tflint.ERROR
}

// Link returns the rule reference link
func (r *AwsBackupVaultPolicyInvalidBackupVaultNameRule) Link() string {
return ""
}

// Check checks the pattern is valid
func (r *AwsBackupVaultPolicyInvalidBackupVaultNameRule) Check(runner tflint.Runner) error {
log.Printf("[TRACE] Check `%s` rule", r.Name())

return runner.WalkResourceAttributes(r.resourceType, r.attributeName, func(attribute *hcl.Attribute) error {
var val string
err := runner.EvaluateExpr(attribute.Expr, &val, nil)

return runner.EnsureNoError(err, func() error {
if !r.pattern.MatchString(val) {
runner.EmitIssueOnExpr(
r,
fmt.Sprintf(`"%s" does not match valid pattern %s`, truncateLongMessage(val), `^[a-zA-Z0-9\-\_]{2,50}$`),
attribute.Expr,
)
}
return nil
})
})
}
14 changes: 14 additions & 0 deletions rules/models/mappings/backup.hcl
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,20 @@ mapping "aws_backup_vault" {
name = BackupVaultName
}

mapping "aws_backup_vault_lock_configuration" {
backup_vault_name = BackupVaultName
}

mapping "aws_backup_vault_notifications" {
backup_vault_name = BackupVaultName
sns_topic_arn = ARN
backup_vault_events = BackupVaultEvents
}

mapping "aws_backup_vault_policy" {
backup_vault_name = BackupVaultName
}

test "aws_backup_selection" "name" {
ok = "tf_example_backup_selection"
ng = "tf_example_backup_selection_tf_example_backup_selection"
Expand Down
3 changes: 3 additions & 0 deletions rules/models/provider.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,9 @@ var Rules = []tflint.Rule{
NewAwsAthenaWorkgroupInvalidStateRule(),
NewAwsBackupSelectionInvalidNameRule(),
NewAwsBackupVaultInvalidNameRule(),
NewAwsBackupVaultLockConfigurationInvalidBackupVaultNameRule(),
NewAwsBackupVaultNotificationsInvalidBackupVaultNameRule(),
NewAwsBackupVaultPolicyInvalidBackupVaultNameRule(),
NewAwsBatchComputeEnvironmentInvalidStateRule(),
NewAwsBatchComputeEnvironmentInvalidTypeRule(),
NewAwsBatchJobDefinitionInvalidTypeRule(),
Expand Down

0 comments on commit 08036ee

Please sign in to comment.