Merge branch 'consul_path_prefix_leading_slash' into dev

This commit is contained in:
magodo 2019-06-21 16:53:21 +08:00
commit 3c82b2e9e8
3 changed files with 6 additions and 5 deletions

View File

@ -4,7 +4,7 @@ The consul source reads config from consul key/values
## Consul Format ## Consul Format
The consul source expects keys under the default prefix `micro/config` The consul source expects keys under the default prefix `/micro/config`
Values are expected to be json Values are expected to be json
@ -29,8 +29,8 @@ Specify source with data
consulSource := consul.NewSource( consulSource := consul.NewSource(
// optionally specify consul address; default to localhost:8500 // optionally specify consul address; default to localhost:8500
consul.WithAddress("10.0.0.10:8500"), consul.WithAddress("10.0.0.10:8500"),
// optionally specify prefix; defaults to micro/config // optionally specify prefix; defaults to /micro/config
consul.WithPrefix("my/prefix"), consul.WithPrefix("/my/prefix"),
// optionally strip the provided prefix from the keys, defaults to false // optionally strip the provided prefix from the keys, defaults to false
consul.StripPrefix(true), consul.StripPrefix(true),
) )

View File

@ -21,7 +21,7 @@ type consul struct {
var ( var (
// DefaultPrefix is the prefix that consul keys will be assumed to have if you // DefaultPrefix is the prefix that consul keys will be assumed to have if you
// haven't specified one // haven't specified one
DefaultPrefix = "micro/config/" DefaultPrefix = "/micro/config/"
) )
func (c *consul) Read() (*source.ChangeSet, error) { func (c *consul) Read() (*source.ChangeSet, error) {

View File

@ -36,7 +36,7 @@ func makeMap(e encoder.Encoder, kv api.KVPairs, stripPrefix string) (map[string]
// consul guarantees lexicographic order, so no need to sort // consul guarantees lexicographic order, so no need to sort
for _, v := range kv { for _, v := range kv {
pathString := strings.TrimPrefix(strings.TrimPrefix(v.Key, stripPrefix), "/") pathString := strings.TrimPrefix(strings.TrimPrefix(v.Key, strings.TrimPrefix(stripPrefix, "/")), "/")
if pathString == "" { if pathString == "" {
continue continue
} }
@ -58,6 +58,7 @@ func makeMap(e encoder.Encoder, kv api.KVPairs, stripPrefix string) (map[string]
} }
} }
// set target at the root
target := data target := data
path := strings.Split(pathString, "/") path := strings.Split(pathString, "/")
// find (or create) the leaf node we want to put this value at // find (or create) the leaf node we want to put this value at