Skip to content

Commit 792754a

Browse files
misiek08janisz
authored andcommitted
Enable tag override (#215)
In some cases we want to add tags to services already registered in consul. This option allow external tools to add tags to existing services and order Consul to keep tags and propagate to cluster.
1 parent ad55003 commit 792754a

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

consul/consul.go

+3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ func consulServiceToService(consulService *consulapi.CatalogService) *service.Se
126126
Name: consulService.ServiceName,
127127
Tags: consulService.ServiceTags,
128128
RegisteringAgentAddress: consulService.Address,
129+
EnableTagOverride: consulService.ServiceEnableTagOverride,
129130
}
130131
}
131132

@@ -186,6 +187,7 @@ func (c *Consul) register(service *consulapi.AgentServiceRegistration) error {
186187
"Tags": service.Tags,
187188
"Address": service.Address,
188189
"Port": service.Port,
190+
"EnableTagOverride": service.EnableTagOverride,
189191
}
190192
log.WithFields(fields).Info("Registering")
191193

@@ -291,6 +293,7 @@ func (c *Consul) marathonTaskToConsulServices(task *apps.Task, app *apps.App) ([
291293
Address: serviceAddress,
292294
Tags: tags,
293295
Checks: checks,
296+
EnableTagOverride: true,
294297
})
295298
}
296299
return registrations, nil

consul/consul_test.go

+26
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,32 @@ func TestGetService_FailingAgent_GivingUp(t *testing.T) {
133133
assert.Nil(t, services)
134134
}
135135

136+
func TestServiceHasEnabledTagOverriding(t *testing.T) {
137+
t.Parallel()
138+
139+
server := CreateTestServer(t)
140+
defer server.Stop()
141+
142+
consul := ClientAtServer(server)
143+
144+
app := utils.ConsulApp("serviceA", 1)
145+
app.Tasks[0].Host = server.Config.Bind
146+
app.Labels["test"] = "tag"
147+
148+
err := consul.Register(&app.Tasks[0], app)
149+
150+
assert.NoError(t, err)
151+
152+
consul_services, err := consul.GetServices("serviceA")
153+
services := make(map[string]*service.Service)
154+
for _, s := range consul_services {
155+
services[s.Name] = s
156+
}
157+
158+
assert.NoError(t, err)
159+
assert.True(t, services["serviceA"].EnableTagOverride)
160+
}
161+
136162
func TestGetServices_RemovingFailingAgentsAndRetrying(t *testing.T) {
137163
t.Parallel()
138164
// create server

service/service.go

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ type Service struct {
1919
Name string
2020
Tags []string
2121
RegisteringAgentAddress string
22+
EnableTagOverride bool
2223
}
2324

2425
func (s *Service) TaskId() (apps.TaskID, error) {

0 commit comments

Comments
 (0)