diff options
| author | Salvador Girones <sgirones@users.noreply.github.com> | 2019-05-27 11:39:54 +0200 |
|---|---|---|
| committer | Salvador Girones <sgirones@users.noreply.github.com> | 2019-05-27 11:41:21 +0200 |
| commit | 8584f8ea04856f17c9abe16980db8b9a0437631d (patch) | |
| tree | 3ca802a44f5891d4977755fc620d492d175e21bf /data | |
| parent | 6e5b686043c47603eb3137d0f5ff8ffe72446219 (diff) | |
Support LIST method in Consul datasource
Diffstat (limited to 'data')
| -rw-r--r-- | data/datasource.go | 25 | ||||
| -rw-r--r-- | data/datasource_consul.go | 38 |
2 files changed, 38 insertions, 25 deletions
diff --git a/data/datasource.go b/data/datasource.go index 40795e09..50ee3c78 100644 --- a/data/datasource.go +++ b/data/datasource.go @@ -422,31 +422,6 @@ func readStdin(source *Source, args ...string) ([]byte, error) { return b, nil } -func readConsul(source *Source, args ...string) (data []byte, err error) { - if source.kv == nil { - source.kv, err = libkv.NewConsul(source.URL) - if err != nil { - return nil, err - } - err = source.kv.Login() - if err != nil { - return nil, err - } - } - - p := source.URL.Path - if len(args) == 1 { - p = p + "/" + args[0] - } - - data, err = source.kv.Read(p) - if err != nil { - return nil, err - } - - return data, nil -} - func readBoltDB(source *Source, args ...string) (data []byte, err error) { if source.kv == nil { source.kv, err = libkv.NewBoltDB(source.URL) diff --git a/data/datasource_consul.go b/data/datasource_consul.go new file mode 100644 index 00000000..17db1a99 --- /dev/null +++ b/data/datasource_consul.go @@ -0,0 +1,38 @@ +package data + +import ( + "strings" + + "github.com/hairyhenderson/gomplate/libkv" +) + +func readConsul(source *Source, args ...string) (data []byte, err error) { + if source.kv == nil { + source.kv, err = libkv.NewConsul(source.URL) + if err != nil { + return nil, err + } + err = source.kv.Login() + if err != nil { + return nil, err + } + } + + p := source.URL.Path + if len(args) == 1 { + p = strings.TrimRight(p, "/") + "/" + args[0] + } + + if strings.HasSuffix(p, "/") { + source.mediaType = jsonArrayMimetype + data, err = source.kv.List(p) + } else { + data, err = source.kv.Read(p) + } + + if err != nil { + return nil, err + } + + return data, nil +} |
