fix: discover mounted geoip db files (#7228)

* fix: discover mounted geoip db files

* add test

* fix runtime reload of config.MaxmindEditionFiles

* add e2e test

* log missing geoip2 db
This commit is contained in:
Tom Hayward 2021-07-08 17:16:53 -07:00 committed by GitHub
parent b0ae678ce6
commit abf22b2014
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 127 additions and 10 deletions

View file

@ -64,12 +64,19 @@ const (
// GeoLite2DBExists checks if the required databases for
// the GeoIP2 NGINX module are present in the filesystem
// and indexes the discovered databases for iteration in
// the config.
func GeoLite2DBExists() bool {
files := []string{}
for _, dbName := range strings.Split(MaxmindEditionIDs, ",") {
if !fileExists(path.Join(geoIPPath, dbName+dbExtension)) {
filename := dbName + dbExtension
if !fileExists(path.Join(geoIPPath, filename)) {
klog.Error(filename, " not found")
return false
}
files = append(files, filename)
}
MaxmindEditionFiles = files
return true
}
@ -101,7 +108,6 @@ func DownloadGeoLite2DB(attempts int, period time.Duration) error {
if dlError != nil {
break
}
MaxmindEditionFiles = append(MaxmindEditionFiles, dbName+dbExtension)
}
lastErr = dlError
@ -217,7 +223,7 @@ func ValidateGeoLite2DBEditions() error {
return nil
}
func fileExists(filePath string) bool {
func _fileExists(filePath string) bool {
info, err := os.Stat(filePath)
if os.IsNotExist(err) {
return false
@ -225,3 +231,5 @@ func fileExists(filePath string) bool {
return !info.IsDir()
}
var fileExists = _fileExists