summaryrefslogtreecommitdiff
path: root/data
diff options
context:
space:
mode:
authorSalvador Girones <sgirones@users.noreply.github.com>2019-05-27 11:39:54 +0200
committerSalvador Girones <sgirones@users.noreply.github.com>2019-05-27 11:41:21 +0200
commit8584f8ea04856f17c9abe16980db8b9a0437631d (patch)
tree3ca802a44f5891d4977755fc620d492d175e21bf /data
parent6e5b686043c47603eb3137d0f5ff8ffe72446219 (diff)
Support LIST method in Consul datasource
Diffstat (limited to 'data')
-rw-r--r--data/datasource.go25
-rw-r--r--data/datasource_consul.go38
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
+}