diff --git a/CHANGELOG.md b/CHANGELOG.md index 55ff251c6..b13a9fa77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -40,6 +40,7 @@ BUG FIXES: the client [GH-1641] * discovery/jobspec: Validate service name after interpolation [GH-1852] * driver/docker: Fix `local/` directory mount into container [GH-1830] + * jobspec: Tasks without a resource block no longer fail to validate [GH-1864] ## 0.4.1 (August 18, 2016) diff --git a/nomad/structs/structs.go b/nomad/structs/structs.go index 10c19fc6d..c7ea2e9ff 100644 --- a/nomad/structs/structs.go +++ b/nomad/structs/structs.go @@ -2106,7 +2106,10 @@ func (t *Task) Canonicalize(job *Job, tg *TaskGroup) { service.Canonicalize(job.Name, tg.Name, t.Name) } - if t.Resources != nil { + // If Resources are nil initialize them to defaults, otherwise canonicalize + if t.Resources == nil { + t.Resources = DefaultResources() + } else { t.Resources.Canonicalize() } @@ -2158,12 +2161,12 @@ func (t *Task) Validate(ephemeralDisk *EphemeralDisk) error { // Validate the resources. if t.Resources == nil { mErr.Errors = append(mErr.Errors, errors.New("Missing task resources")) - } else if err := t.Resources.MeetsMinResources(); err != nil { - mErr.Errors = append(mErr.Errors, err) - } + } else { + if err := t.Resources.MeetsMinResources(); err != nil { + mErr.Errors = append(mErr.Errors, err) + } - // Ensure the task isn't asking for disk resources - if t.Resources != nil { + // Ensure the task isn't asking for disk resources if t.Resources.DiskMB > 0 { mErr.Errors = append(mErr.Errors, errors.New("Task can't ask for disk resources, they have to be specified at the task group level.")) }