From 8584f8ea04856f17c9abe16980db8b9a0437631d Mon Sep 17 00:00:00 2001 From: Salvador Girones Date: Mon, 27 May 2019 11:39:54 +0200 Subject: Support LIST method in Consul datasource --- data/datasource.go | 25 ------------------------- data/datasource_consul.go | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+), 25 deletions(-) create mode 100644 data/datasource_consul.go (limited to 'data') 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 +} -- cgit v1.2.3