From 169bb0f99c60555d2d11b9de097befb8abcb6b1f Mon Sep 17 00:00:00 2001 From: Diptanu Choudhury Date: Tue, 17 Nov 2015 16:44:05 -0800 Subject: [PATCH] Adding prefix to user defined name and forcing id to be blank during parsing --- jobspec/parse.go | 8 +++++++- nomad/structs/structs.go | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/jobspec/parse.go b/jobspec/parse.go index 6a9df3425..0f1ea8d0f 100644 --- a/jobspec/parse.go +++ b/jobspec/parse.go @@ -464,6 +464,7 @@ func parseTasks(jobName string, taskGroupName string, result *[]*structs.Task, l func parseServices(jobName string, taskGroupName string, task *structs.Task, serviceObjs *ast.ObjectList) error { task.Services = make([]structs.Service, len(serviceObjs.Items)) + var defaultServiceName bool for idx, o := range serviceObjs.Items { var service structs.Service var m map[string]interface{} @@ -477,14 +478,19 @@ func parseServices(jobName string, taskGroupName string, task *structs.Task, ser return err } - if idx > 0 && service.Name == "" { + if defaultServiceName && service.Name == "" { return fmt.Errorf("More than one service block is declared, please name each service explicitly") } if service.Name == "" { + defaultServiceName = true service.Name = fmt.Sprintf("%s-%s-%s", jobName, taskGroupName, task.Name) + } else { + service.Name = fmt.Sprintf("%s-%s-%s-%s", jobName, taskGroupName, task.Name, service.Name) } + service.Id = "" // Forcing this to be blank while parsing since we will autogenerate this + // Fileter checks var checkList *ast.ObjectList if ot, ok := o.Val.(*ast.ObjectType); ok { diff --git a/nomad/structs/structs.go b/nomad/structs/structs.go index 794c91b39..4a0f29f88 100644 --- a/nomad/structs/structs.go +++ b/nomad/structs/structs.go @@ -1005,7 +1005,7 @@ const ( // The ServiceCheck data model represents the consul health check that // Nomad registers for a Task type ServiceCheck struct { - Id string // If of the check + Id string // Id of the check, must be unique and it is autogenrated Name string // Name of the check, defaults to id Type string // Type of the check - tcp, http, docker and script Script string // Script to invoke for script check