diff --git a/.changelog/13493.txt b/.changelog/13493.txt new file mode 100644 index 000000000000..0d19a993807e --- /dev/null +++ b/.changelog/13493.txt @@ -0,0 +1,3 @@ +```release-note:bug +client: Fixed a problem calculating a services namespace +``` diff --git a/nomad/structs/alloc.go b/nomad/structs/alloc.go index a0277477373c..2f5c0cfa9d17 100644 --- a/nomad/structs/alloc.go +++ b/nomad/structs/alloc.go @@ -43,9 +43,9 @@ func (a *Allocation) ServiceProviderNamespace() string { } } - if len(tg.Tasks) > 0 { - if len(tg.Tasks[0].Services) > 0 { - switch tg.Tasks[0].Services[0].Provider { + for _, task := range tg.Tasks { + if len(task.Services) > 0 { + switch task.Services[0].Provider { case ServiceProviderNomad: return a.Job.Namespace default: diff --git a/nomad/structs/alloc_test.go b/nomad/structs/alloc_test.go index 92bc61615502..bbb874a39a7a 100644 --- a/nomad/structs/alloc_test.go +++ b/nomad/structs/alloc_test.go @@ -103,6 +103,34 @@ func Test_Allocation_ServiceProviderNamespace(t *testing.T) { expectedOutput: "platform", name: "nomad task service", }, + { + inputAllocation: &Allocation{ + Job: &Job{ + Namespace: "platform", + TaskGroups: []*TaskGroup{ + { + Name: "test-group", + Tasks: []*Task{ + { + Name: "task1", + }, + { + Name: "task2", + Services: []*Service{ + { + Provider: ServiceProviderNomad, + }, + }, + }, + }, + }, + }, + }, + TaskGroup: "test-group", + }, + expectedOutput: "platform", + name: "multiple tasks with service not in first", + }, } for _, tc := range testCases {