509490e5d2
(cherry-picked from ent without _ent things) This is part 2/4 of e2e tests for Consul Namespaces. Took a first pass at what the parameterized tests can look like, but only on the ENT side for this PR. Will continue to refactor in the next PRs. Also fixes 2 bugs: - Config Entries registered by Nomad Server on job registration were not getting Namespace set - Group level script checks were not getting Namespace set Those changes will need to be copied back to Nomad OSS. Nomad OSS + no ACLs (previously, needs refactor) Nomad ENT + no ACLs (this) Nomad OSS + ACLs (todo) Nomad ENT + ALCs (todo)
40 lines
1.2 KiB
Go
40 lines
1.2 KiB
Go
package structs
|
|
|
|
// ConsulConfigEntries represents Consul ConfigEntry definitions from a job for
|
|
// a single Consul namespace.
|
|
type ConsulConfigEntries struct {
|
|
Ingress map[string]*ConsulIngressConfigEntry
|
|
Terminating map[string]*ConsulTerminatingConfigEntry
|
|
}
|
|
|
|
// ConfigEntries accumulates the Consul Configuration Entries defined in task groups
|
|
// of j, organized by Consul namespace.
|
|
func (j *Job) ConfigEntries() map[string]*ConsulConfigEntries {
|
|
collection := make(map[string]*ConsulConfigEntries)
|
|
|
|
for _, tg := range j.TaskGroups {
|
|
|
|
// accumulate config entries by namespace
|
|
ns := tg.Consul.GetNamespace()
|
|
if _, exists := collection[ns]; !exists {
|
|
collection[ns] = &ConsulConfigEntries{
|
|
Ingress: make(map[string]*ConsulIngressConfigEntry),
|
|
Terminating: make(map[string]*ConsulTerminatingConfigEntry),
|
|
}
|
|
}
|
|
|
|
for _, service := range tg.Services {
|
|
if service.Connect.IsGateway() {
|
|
gateway := service.Connect.Gateway
|
|
if ig := gateway.Ingress; ig != nil {
|
|
collection[ns].Ingress[service.Name] = ig
|
|
} else if term := gateway.Terminating; term != nil {
|
|
collection[ns].Terminating[service.Name] = term
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
return collection
|
|
}
|