diff options
author | Alex Auvolat <alex@adnab.me> | 2020-01-26 21:03:18 +0100 |
---|---|---|
committer | Alex Auvolat <alex@adnab.me> | 2020-01-26 21:03:18 +0100 |
commit | 8e4537d2ef7cad3428d1ca668568d928f2a472d3 (patch) | |
tree | 3618552d5ac9658bebc9f6d34cf8d0114dfc423c /util.go | |
parent | 0bd2aeef061618d933477c71b69d209d6599bda2 (diff) | |
download | bottin-8e4537d2ef7cad3428d1ca668568d928f2a472d3.tar.gz bottin-8e4537d2ef7cad3428d1ca668568d928f2a472d3.zip |
Fixes
Diffstat (limited to 'util.go')
-rw-r--r-- | util.go | 14 |
1 files changed, 7 insertions, 7 deletions
@@ -3,7 +3,6 @@ package main import ( "encoding/json" "fmt" - "log" "strings" consul "github.com/hashicorp/consul/api" @@ -24,7 +23,7 @@ func dnToConsul(dn string) (string, error) { return strings.Join(rdns, "/"), nil } -func consulToDN(key string) (string, string) { +func consulToDN(key string) (string, string, error) { path := strings.Split(key, "/") dn := "" for _, cpath := range path { @@ -33,16 +32,14 @@ func consulToDN(key string) (string, string) { } kv := strings.Split(cpath, "=") if len(kv) == 2 && kv[0] == "attribute" { - return dn, kv[1] + return dn, kv[1], nil } if dn != "" { dn = "," + dn } dn = cpath + dn } - // TODO don't panic, handle this - log.Panicf("Consul key %s does not end with attribute=something", key) - panic("unreachable") + return "", "", fmt.Errorf("Consul key %s does not end with attribute=something", key) } func parseValue(value []byte) ([]string, error) { @@ -65,7 +62,10 @@ func parseConsulResult(data []*consul.KVPair) (map[string]Entry, error) { aggregator := map[string]Entry{} for _, kv := range data { - dn, attr := consulToDN(kv.Key) + dn, attr, err := consulToDN(kv.Key) + if err != nil { + continue + } if _, exists := aggregator[dn]; !exists { aggregator[dn] = Entry{} } |