github.com/terraform-linters/tflint-ruleset-azurerm@v0.26.0/rules/apispec/azurerm_firewall_application_rule_collection_invalid_priority.go (about) 1 // This file generated by `tools/apispec-rule-gen/main.go`. DO NOT EDIT 2 3 package apispec 4 5 import ( 6 7 "github.com/terraform-linters/tflint-plugin-sdk/hclext" 8 "github.com/terraform-linters/tflint-plugin-sdk/tflint" 9 "github.com/terraform-linters/tflint-ruleset-azurerm/project" 10 ) 11 12 // AzurermFirewallApplicationRuleCollectionInvalidPriorityRule checks the pattern is valid 13 type AzurermFirewallApplicationRuleCollectionInvalidPriorityRule struct { 14 tflint.DefaultRule 15 16 resourceType string 17 attributeName string 18 max int 19 min int 20 } 21 22 // NewAzurermFirewallApplicationRuleCollectionInvalidPriorityRule returns new rule with default attributes 23 func NewAzurermFirewallApplicationRuleCollectionInvalidPriorityRule() *AzurermFirewallApplicationRuleCollectionInvalidPriorityRule { 24 return &AzurermFirewallApplicationRuleCollectionInvalidPriorityRule{ 25 resourceType: "azurerm_firewall_application_rule_collection", 26 attributeName: "priority", 27 max: 65000, 28 min: 100, 29 } 30 } 31 32 // Name returns the rule name 33 func (r *AzurermFirewallApplicationRuleCollectionInvalidPriorityRule) Name() string { 34 return "azurerm_firewall_application_rule_collection_invalid_priority" 35 } 36 37 // Enabled returns whether the rule is enabled by default 38 func (r *AzurermFirewallApplicationRuleCollectionInvalidPriorityRule) Enabled() bool { 39 return true 40 } 41 42 // Severity returns the rule severity 43 func (r *AzurermFirewallApplicationRuleCollectionInvalidPriorityRule) Severity() tflint.Severity { 44 return tflint.ERROR 45 } 46 47 // Link returns the rule reference link 48 func (r *AzurermFirewallApplicationRuleCollectionInvalidPriorityRule) Link() string { 49 return project.ReferenceLink(r.Name()) 50 } 51 52 // Check checks the pattern is valid 53 func (r *AzurermFirewallApplicationRuleCollectionInvalidPriorityRule) Check(runner tflint.Runner) error { 54 resources, err := runner.GetResourceContent(r.resourceType, &hclext.BodySchema{ 55 Attributes: []hclext.AttributeSchema{ 56 {Name: r.attributeName}, 57 }, 58 }, nil) 59 if err != nil { 60 return err 61 } 62 63 for _, resource := range resources.Blocks { 64 attribute, exists := resource.Body.Attributes[r.attributeName] 65 if !exists { 66 continue 67 } 68 err := runner.EvaluateExpr(attribute.Expr, func (val int) error { 69 if val > r.max { 70 runner.EmitIssue( 71 r, 72 "priority must be 65000 or less", 73 attribute.Expr.Range(), 74 ) 75 } 76 if val < r.min { 77 runner.EmitIssue( 78 r, 79 "priority must be 100 or higher", 80 attribute.Expr.Range(), 81 ) 82 } 83 return nil 84 }, nil) 85 if err != nil { 86 return err 87 } 88 } 89 90 return nil 91 }