Improve whitelisting to allow regexes and fuzzy/strict matching

This commit is contained in:
Quinn Stevens
2020-07-24 15:44:37 +01:00
parent 2186f648c8
commit 28b3604b1c
2 changed files with 21 additions and 3 deletions

View File

@@ -112,13 +112,20 @@ textFail(){
level="FAIL"
colorcode="$BAD"
while read -r i; do
ignore_check_name="${i%:*}"
ignore_value="${i#*${CHECK_NAME}:}"
ignore_check_name="${i%%:*}" # Check name is everything up to the first :
ignore_value="${i#*${CHECK_NAME}:}" # Ignore value is everything after the first :
if [[ ${ignore_value} =~ .*:f ]]; then
# Fuzzy search - if this pattern appears anywhere in the line, it matches.
resource_value=".*${ignore_value%:*}.*"
else
# Strict search - pattern has to be its own word.
resource_value="[[:space:]^]${ignore_value}[[:space:]$]"
fi
if [[ ${ignore_check_name} != "${CHECK_NAME}" ]]; then
# not for this check
continue
fi
if [[ $1 =~ .*"${ignore_value}".* ]]; then
if [[ $1 =~ ${resource_value} ]]; then
level="WARNING"
colorcode="$WARNING"
break

View File

@@ -3,6 +3,13 @@
# Example: Will not consider a myignoredbucket failures as full failure. (Still printed as a warning)
check26:myignoredbucket
# By default, whitelisting something (e.g. "ci-logs") will only whitelist resources specifically called
# "ci-logs". However, if you put ":f" at the end of the line, it will do a fuzzy match, and will
# whitelist all resources with "ci-logs" in their name.
# For example:
# extra718:ci-logs # Will block bucket "ci-logs" but not bucket "ci-logs-replica"
# extra718:ci-logs:f # Will block any bucket containing the term "ci-logs"
# line starting with # are ignored as comments
# add a line per resource as here:
#<checkid1>:<resource to ignore 1>
@@ -10,3 +17,7 @@ check26:myignoredbucket
# checkid2
#<checkid2>:<resource to ignore 1>
# REGEXES
# This whitelist works with regexes (ERE, the same style of regex as grep -E and bash's =~ use)
# therefore:
# extra718:[[:alnum:]]+-logs:f # will ignore all buckets containing the terms ci-logs, qa-logs, etc.