Skip to content

Commit

Permalink
add except handling to terraform and kubernetes linters
Browse files Browse the repository at this point in the history
  • Loading branch information
lhitchon committed Mar 12, 2018
1 parent e4342f4 commit 866cc38
Show file tree
Hide file tree
Showing 3 changed files with 33 additions and 22 deletions.
26 changes: 15 additions & 11 deletions cli/kubernetes.go
Original file line number Diff line number Diff line change
Expand Up @@ -60,18 +60,22 @@ func validateKubernetesResources(report *filter.ValidationReport, resources []fi
log(fmt.Sprintf("Rule %s: %s", rule.Id, rule.Message))
for _, ruleFilter := range rule.Filters {
for _, resource := range filterKubernetesResourcesByType(resources, rule.Resource) {
log(fmt.Sprintf("Checking resource %s", resource.Id))
status := filter.ApplyFilter(rule, ruleFilter, resource, log)
if status != "OK" {
v := filter.Violation{
RuleId: rule.Id,
ResourceId: resource.Id,
ResourceType: resource.Type,
Status: status,
Message: rule.Message,
Filename: resource.Filename,
if filter.ExcludeResource(rule, resource) {
log(fmt.Sprintf("Ignoring resource %s", resource.Id))
} else {
log(fmt.Sprintf("Checking resource %s", resource.Id))
status := filter.ApplyFilter(rule, ruleFilter, resource, log)
if status != "OK" {
v := filter.Violation{
RuleId: rule.Id,
ResourceId: resource.Id,
ResourceType: resource.Type,
Status: status,
Message: rule.Message,
Filename: resource.Filename,
}
report.Violations[status] = append(report.Violations[status], v)
}
report.Violations[status] = append(report.Violations[status], v)
}
}
}
Expand Down
26 changes: 15 additions & 11 deletions cli/terraform.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,22 @@ func validateTerraformResources(report *filter.ValidationReport, resources []fil
log(fmt.Sprintf("Rule %s: %s", rule.Id, rule.Message))
for _, ruleFilter := range rule.Filters {
for _, resource := range filterTerraformResourcesByType(resources, rule.Resource) {
log(fmt.Sprintf("Checking resource %s", resource.Id))
status := filter.ApplyFilter(rule, ruleFilter, resource, log)
if status != "OK" {
v := filter.Violation{
RuleId: rule.Id,
ResourceId: resource.Id,
ResourceType: resource.Type,
Status: status,
Message: rule.Message,
Filename: resource.Filename,
if filter.ExcludeResource(rule, resource) {
log(fmt.Sprintf("Ignoring resource %s", resource.Id))
} else {
log(fmt.Sprintf("Checking resource %s", resource.Id))
status := filter.ApplyFilter(rule, ruleFilter, resource, log)
if status != "OK" {
v := filter.Violation{
RuleId: rule.Id,
ResourceId: resource.Id,
ResourceType: resource.Type,
Status: status,
Message: rule.Message,
Filename: resource.Filename,
}
report.Violations[status] = append(report.Violations[status], v)
}
report.Violations[status] = append(report.Violations[status], v)
}
}
}
Expand Down
3 changes: 3 additions & 0 deletions example-files/rules/terraform.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,9 @@ Rules:
- id: R3
message: Department tag is not valid
resource: aws_instance
except:
- foo
- third
filters:
- type: value
key: "tags[].Department | [0]"
Expand Down

0 comments on commit 866cc38

Please sign in to comment.