Skip to content

Commit d0ff6cb

Browse files
committed
support custom tags
1 parent f8b97f6 commit d0ff6cb

File tree

2 files changed

+14
-3
lines changed

2 files changed

+14
-3
lines changed

contrib/registry/consul/client.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ type Client struct {
4141
deregisterCriticalServiceAfter int
4242
// serviceChecks user custom checks
4343
serviceChecks api.AgentServiceChecks
44+
//custom tags
45+
tags []string
4446
}
4547

4648
func defaultResolver(_ context.Context, entries []*api.ServiceEntry) []*registry.ServiceInstance {
@@ -143,7 +145,7 @@ func (c *Client) singleDCEntries(service, tag string, passingOnly bool, opts *ap
143145
}
144146

145147
// Register register service instance to consul
146-
func (c *Client) Register(_ context.Context, svc *registry.ServiceInstance, enableHealthCheck bool) error {
148+
func (c *Client) Register(_ context.Context, svc *registry.ServiceInstance, enableHealthCheck bool, tags []string) error {
147149
addresses := make(map[string]api.ServiceAddress, len(svc.Endpoints))
148150
checkAddresses := make([]string, 0, len(svc.Endpoints))
149151
for _, endpoint := range svc.Endpoints {
@@ -157,11 +159,12 @@ func (c *Client) Register(_ context.Context, svc *registry.ServiceInstance, enab
157159
checkAddresses = append(checkAddresses, net.JoinHostPort(addr, strconv.FormatUint(port, 10)))
158160
addresses[raw.Scheme] = api.ServiceAddress{Address: endpoint, Port: int(port)}
159161
}
162+
tags = append(tags, fmt.Sprintf("version=%s", svc.Version))
160163
asr := &api.AgentServiceRegistration{
161164
ID: svc.ID,
162165
Name: svc.Name,
163166
Meta: svc.Metadata,
164-
Tags: []string{fmt.Sprintf("version=%s", svc.Version)},
167+
Tags: tags,
165168
TaggedAddresses: addresses,
166169
}
167170
if len(checkAddresses) > 0 {

contrib/registry/consul/registry.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,14 @@ func WithServiceCheck(checks ...*api.AgentServiceCheck) Option {
8686
}
8787
}
8888

89+
func WithServiceTags(tags []string) Option {
90+
return func(o *Registry) {
91+
if len(tags) > 0 {
92+
o.cli.tags = tags
93+
}
94+
}
95+
}
96+
8997
// Config is consul registry config
9098
type Config struct {
9199
*api.Config
@@ -124,7 +132,7 @@ func New(apiClient *api.Client, opts ...Option) *Registry {
124132

125133
// Register register service
126134
func (r *Registry) Register(ctx context.Context, svc *registry.ServiceInstance) error {
127-
return r.cli.Register(ctx, svc, r.enableHealthCheck)
135+
return r.cli.Register(ctx, svc, r.enableHealthCheck, r.cli.tags)
128136
}
129137

130138
// Deregister deregister service

0 commit comments

Comments
 (0)