Merge pull request #139 from simplechris/feature/consul-config

Add ability to pass consul client config via registry options.
This commit is contained in:
Asim Aslam 2016-11-18 07:28:01 +00:00 committed by GitHub
commit 1688329049
2 changed files with 37 additions and 1 deletions

View File

@ -0,0 +1,25 @@
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)
}
}
func Token(t string) registry.Option {
return func(o *registry.Options) {
if o.Context == nil {
o.Context = context.Background()
}
o.Context = context.WithValue(o.Context, "consul_token", t)
}
}

View File

@ -53,6 +53,17 @@ func newConsulRegistry(opts ...Option) Registry {
// use default config // use default config
config := consul.DefaultConfig() 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)
}
t := options.Context.Value("consul_token")
if t != nil {
config.Token = t.(string)
}
}
// set timeout // set timeout
if options.Timeout > 0 { if options.Timeout > 0 {
@ -253,7 +264,7 @@ func (c *consulRegistry) ListServices() ([]*Service, error) {
var services []*Service var services []*Service
for service, _ := range rsp { for service := range rsp {
services = append(services, &Service{Name: service}) services = append(services, &Service{Name: service})
} }