Compare commits
2 Commits
Author | SHA1 | Date | |
---|---|---|---|
80462220e2 | |||
a4002ae8eb |
56
consul.go
56
consul.go
@@ -1,4 +1,4 @@
|
||||
package consul
|
||||
package consul // import "go.unistack.org/micro-config-consul/v3"
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -6,8 +6,8 @@ import (
|
||||
|
||||
"github.com/hashicorp/consul/api"
|
||||
"github.com/imdario/mergo"
|
||||
"github.com/unistack-org/micro/v3/config"
|
||||
rutil "github.com/unistack-org/micro/v3/util/reflect"
|
||||
"go.unistack.org/micro/v3/config"
|
||||
rutil "go.unistack.org/micro/v3/util/reflect"
|
||||
)
|
||||
|
||||
var DefaultStructTag = "consul"
|
||||
@@ -82,38 +82,23 @@ func (c *consulConfig) Init(opts ...config.Option) error {
|
||||
}
|
||||
|
||||
func (c *consulConfig) Load(ctx context.Context, opts ...config.LoadOption) error {
|
||||
for _, fn := range c.opts.BeforeLoad {
|
||||
if err := fn(ctx, c); err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul load err: %v", err)
|
||||
if !c.opts.AllowFail {
|
||||
if err := config.DefaultBeforeLoad(ctx, c); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pair, _, err := c.cli.KV().Get(c.path, nil)
|
||||
if err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul load path %s err: %v", c.path, err)
|
||||
if !c.opts.AllowFail {
|
||||
return fmt.Errorf("consul path %s load error: %v", c.path, err)
|
||||
}
|
||||
err = fmt.Errorf("consul path %s load error: %w", c.path, err)
|
||||
} else if pair == nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul load path %s not found", c.path)
|
||||
if !c.opts.AllowFail {
|
||||
return fmt.Errorf("consul path %s not found", c.path)
|
||||
}
|
||||
err = fmt.Errorf("consul path %s load error: not found", c.path)
|
||||
}
|
||||
|
||||
if err != nil || pair == nil {
|
||||
for _, fn := range c.opts.AfterLoad {
|
||||
if err := fn(ctx, c); err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul load err: %v", err)
|
||||
if err != nil {
|
||||
c.opts.Logger.Error(c.opts.Context, err)
|
||||
if !c.opts.AllowFail {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
return nil
|
||||
return config.DefaultAfterLoad(ctx, c)
|
||||
}
|
||||
|
||||
options := config.NewLoadOptions(opts...)
|
||||
@@ -145,27 +130,17 @@ func (c *consulConfig) Load(ctx context.Context, opts ...config.LoadOption) erro
|
||||
}
|
||||
}
|
||||
|
||||
for _, fn := range c.opts.AfterLoad {
|
||||
if err := fn(ctx, c); err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul load err: %v", err)
|
||||
if !c.opts.AllowFail {
|
||||
if err := config.DefaultAfterLoad(ctx, c); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
func (c *consulConfig) Save(ctx context.Context, opts ...config.SaveOption) error {
|
||||
for _, fn := range c.opts.BeforeSave {
|
||||
if err := fn(ctx, c); err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul save err: %v", err)
|
||||
if !c.opts.AllowFail {
|
||||
if err := config.DefaultBeforeSave(ctx, c); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
buf, err := c.opts.Codec.Marshal(c.opts.Struct)
|
||||
if err == nil {
|
||||
@@ -173,20 +148,15 @@ func (c *consulConfig) Save(ctx context.Context, opts ...config.SaveOption) erro
|
||||
}
|
||||
|
||||
if err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul path %s save err: %v", c.path, err)
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul path %s save error: %v", c.path, err)
|
||||
if !c.opts.AllowFail {
|
||||
return fmt.Errorf("consul path %s save error: %v", c.path, err)
|
||||
}
|
||||
}
|
||||
|
||||
for _, fn := range c.opts.AfterSave {
|
||||
if err := fn(ctx, c); err != nil {
|
||||
c.opts.Logger.Errorf(c.opts.Context, "consul save err: %v", err)
|
||||
if !c.opts.AllowFail {
|
||||
if err := config.DefaultAfterSave(ctx, c); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
4
go.mod
4
go.mod
@@ -1,4 +1,4 @@
|
||||
module github.com/unistack-org/micro-config-consul/v3
|
||||
module go.unistack.org/micro-config-consul/v3
|
||||
|
||||
go 1.16
|
||||
|
||||
@@ -16,5 +16,5 @@ require (
|
||||
github.com/mitchellh/mapstructure v1.4.2 // indirect
|
||||
github.com/pkg/errors v0.9.1 // indirect
|
||||
github.com/stretchr/testify v1.7.0 // indirect
|
||||
github.com/unistack-org/micro/v3 v3.7.5
|
||||
go.unistack.org/micro/v3 v3.8.5
|
||||
)
|
||||
|
8
go.sum
8
go.sum
@@ -162,10 +162,10 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM=
|
||||
github.com/unistack-org/micro-proto v0.0.9 h1:KrWLS4FUX7UAWNAilQf70uad6ZPf/0EudeddCXllRVc=
|
||||
github.com/unistack-org/micro-proto v0.0.9/go.mod h1:Cckwmzd89gvS7ThxzZp9kQR/EOdksFQcsTAtDDyKwrg=
|
||||
github.com/unistack-org/micro/v3 v3.7.5 h1:ucNsxi6mApYRpYHbiNKqTLY3V8oGQDfnHn+AbtnFBdo=
|
||||
github.com/unistack-org/micro/v3 v3.7.5/go.mod h1:Ke/8WJlNZi4ZYwL9HcsANAbQ66/HocTBEZM+od99/mM=
|
||||
go.unistack.org/micro-proto/v3 v3.1.0 h1:q39FwjFiRZn+Ux/tt+d3bJTmDtsQQWa+3SLYVo1vLfA=
|
||||
go.unistack.org/micro-proto/v3 v3.1.0/go.mod h1:DpRhYCBXlmSJ/AAXTmntvlh7kQkYU6eFvlmYAx4BQS8=
|
||||
go.unistack.org/micro/v3 v3.8.5 h1:DIYWRsQF+NPhKZP45sCtNsUhaRw6u2+Ps7U+pKU7i3s=
|
||||
go.unistack.org/micro/v3 v3.8.5/go.mod h1:KMMmOmbgo/D52/rCAbqeKbBsgEEbSKM69he54J3ZIuA=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
|
@@ -9,7 +9,7 @@ import (
|
||||
"os"
|
||||
|
||||
hclog "github.com/hashicorp/go-hclog"
|
||||
"github.com/unistack-org/micro/v3/logger"
|
||||
"go.unistack.org/micro/v3/logger"
|
||||
)
|
||||
|
||||
// to check implementation
|
||||
|
@@ -4,7 +4,7 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/consul/api"
|
||||
"github.com/unistack-org/micro/v3/config"
|
||||
"go.unistack.org/micro/v3/config"
|
||||
)
|
||||
|
||||
type configKey struct{}
|
||||
|
@@ -5,9 +5,9 @@ import (
|
||||
"reflect"
|
||||
|
||||
"github.com/hashicorp/consul/api"
|
||||
"github.com/unistack-org/micro/v3/config"
|
||||
"github.com/unistack-org/micro/v3/util/jitter"
|
||||
rutil "github.com/unistack-org/micro/v3/util/reflect"
|
||||
"go.unistack.org/micro/v3/config"
|
||||
"go.unistack.org/micro/v3/util/jitter"
|
||||
rutil "go.unistack.org/micro/v3/util/reflect"
|
||||
)
|
||||
|
||||
type consulWatcher struct {
|
||||
|
Reference in New Issue
Block a user