Add the ability to pass consul client config via registry options.
This can be used when you need to configure the consul client to use a specific configuration (E.G to pass a Token if consul is using ACL policies)
This commit is contained in:
parent
74d8ea6817
commit
3d7187f405
16
registry/consul/options.go
Normal file
16
registry/consul/options.go
Normal file
@ -0,0 +1,16 @@
|
||||
package consul
|
||||
|
||||
import (
|
||||
consul "github.com/hashicorp/consul/api"
|
||||
"github.com/micro/go-micro/registry"
|
||||
"golang.org/x/net/context"
|
||||
)
|
||||
|
||||
func Config(c *consul.Config) registry.Option {
|
||||
return func(o *registry.Options) {
|
||||
if o.Context == nil {
|
||||
o.Context = context.Background()
|
||||
}
|
||||
o.Context = context.WithValue(o.Context, "consul_config", c)
|
||||
}
|
||||
}
|
@ -53,6 +53,13 @@ func newConsulRegistry(opts ...Option) Registry {
|
||||
|
||||
// use default config
|
||||
config := consul.DefaultConfig()
|
||||
if options.Context != nil {
|
||||
// Use the consul config passed in the options, if available
|
||||
c := options.Context.Value("consul_config")
|
||||
if c != nil {
|
||||
config = c.(*consul.Config)
|
||||
}
|
||||
}
|
||||
|
||||
// set timeout
|
||||
if options.Timeout > 0 {
|
||||
@ -253,7 +260,7 @@ func (c *consulRegistry) ListServices() ([]*Service, error) {
|
||||
|
||||
var services []*Service
|
||||
|
||||
for service, _ := range rsp {
|
||||
for service := range rsp {
|
||||
services = append(services, &Service{Name: service})
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user