Skip to content

Commit

Permalink
added support for consul EnableTagOverride hashicorp#2057
Browse files Browse the repository at this point in the history
  • Loading branch information
bogdanalbei committed May 31, 2019
1 parent 23c4597 commit 04ac30e
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 5 deletions.
1 change: 1 addition & 0 deletions api/tasks.go
Original file line number Diff line number Diff line change
Expand Up @@ -372,6 +372,7 @@ type Service struct {
AddressMode string `mapstructure:"address_mode"`
Checks []ServiceCheck
CheckRestart *CheckRestart `mapstructure:"check_restart"`
EnableTagOverride bool
}

func (s *Service) Canonicalize(t *Task, tg *TaskGroup, job *Job) {
Expand Down
1 change: 1 addition & 0 deletions command/agent/consul/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -671,6 +671,7 @@ func (c *ServiceClient) serviceRegs(ops *operations, service *structs.Service, t
Meta: map[string]string{
"external-source": "nomad",
},
EnableTagOverride: service.EnableTagOverride,
}
ops.regServices = append(ops.regServices, serviceReg)

Expand Down
30 changes: 30 additions & 0 deletions command/agent/consul/unit_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1404,6 +1404,36 @@ func TestConsul_CanaryTags_NoTags(t *testing.T) {
require.Len(ctx.FakeConsul.services, 0)
}

// TestConsul_EnableTagOverrideEnabled asserts EnableTagOverride is set when EnableTagOverride=true
func TestConsul_EnableTagOverrideEnabled(t *testing.T) {
t.Parallel()
require := require.New(t)
ctx := setupFake(t)

ctx.Task.Services[0].EnableTagOverride = true

require.NoError(ctx.ServiceClient.RegisterTask(ctx.Task))
require.NoError(ctx.syncOnce())
require.Len(ctx.FakeConsul.services, 1)
for _, service := range ctx.FakeConsul.services {
require.Equal(true, service.EnableTagOverride)
}
}

// TestConsul_EnableTagOverrideIsDisabledByDefault asserts EnableTagOverride is disabled by default
func TestConsul_EnableTagOverrideIsDisabledByDefault(t *testing.T) {
t.Parallel()
require := require.New(t)
ctx := setupFake(t)

require.NoError(ctx.ServiceClient.RegisterTask(ctx.Task))
require.NoError(ctx.syncOnce())
require.Len(ctx.FakeConsul.services, 1)
for _, service := range ctx.FakeConsul.services {
require.Equal(false, service.EnableTagOverride)
}
}

// TestConsul_PeriodicSync asserts that Nomad periodically reconciles with
// Consul.
func TestConsul_PeriodicSync(t *testing.T) {
Expand Down
11 changes: 6 additions & 5 deletions command/agent/job_endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -751,11 +751,12 @@ func ApiTaskToStructsTask(apiTask *api.Task, structsTask *structs.Task) {
structsTask.Services = make([]*structs.Service, l)
for i, service := range apiTask.Services {
structsTask.Services[i] = &structs.Service{
Name: service.Name,
PortLabel: service.PortLabel,
Tags: service.Tags,
CanaryTags: service.CanaryTags,
AddressMode: service.AddressMode,
Name: service.Name,
PortLabel: service.PortLabel,
Tags: service.Tags,
CanaryTags: service.CanaryTags,
AddressMode: service.AddressMode,
EnableTagOverride: service.EnableTagOverride,
}

if l := len(service.Checks); l != 0 {
Expand Down
10 changes: 10 additions & 0 deletions command/agent/job_endpoint_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1394,6 +1394,11 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
},
},
},
{
Id: "id_serviceB",
Name: "serviceB",
EnableTagOverride: true,
},
},
Resources: &api.Resources{
CPU: helper.IntToPtr(100),
Expand Down Expand Up @@ -1693,6 +1698,11 @@ func TestJobs_ApiJobToStructsJob(t *testing.T) {
},
},
},
{
Name: "serviceB",
EnableTagOverride: true,
AddressMode: "auto",
},
},
Resources: &structs.Resources{
CPU: 100,
Expand Down
1 change: 1 addition & 0 deletions nomad/structs/structs.go
Original file line number Diff line number Diff line change
Expand Up @@ -4958,6 +4958,7 @@ type Service struct {
Tags []string // List of tags for the service
CanaryTags []string // List of tags for the service when it is a canary
Checks []*ServiceCheck // List of checks associated with the service
EnableTagOverride bool // Allow external agents to change the tags for a service
}

func (s *Service) Copy() *Service {
Expand Down

0 comments on commit 04ac30e

Please sign in to comment.