{"record":{"id":"3df5d7be872fae0d","repo":"hashicorp/nomad","slug":"iops-has-been-deprecated-as-of-nomad-0-9-0-please","errorCode":null,"errorMessage":"IOPS has been deprecated as of Nomad 0.9.0. Please remove IOPS from resource block.","messagePattern":"IOPS has been deprecated as of Nomad 0\\.9\\.0\\. Please remove IOPS from resource block\\.","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"warning","filePath":"nomad/structs/structs.go","lineNumber":8629,"sourceCode":"\n\t\t\t// Keep order deterministic\n\t\t\tsort.Strings(names)\n\t\t\tjoined := strings.Join(names, \", \")\n\t\t\terr := fmt.Errorf(\"port label %q referenced by services %v does not exist\", servicePort, joined)\n\t\t\tmErr.Errors = append(mErr.Errors, err)\n\t\t}\n\t}\n\n\t// Ensure address mode is valid\n\treturn mErr.ErrorOrNil()\n}\n\nfunc (t *Task) Warnings() error {\n\tvar mErr multierror.Error\n\n\t// Validate the resources\n\tif t.Resources != nil && t.Resources.IOPS != 0 {\n\t\tmErr.Errors = append(mErr.Errors, fmt.Errorf(\"IOPS has been deprecated as of Nomad 0.9.0. Please remove IOPS from resource block.\"))\n\t}\n\n\tif t.Resources != nil && len(t.Resources.Networks) != 0 {\n\t\tmErr.Errors = append(mErr.Errors, fmt.Errorf(\"task network resources have been deprecated as of Nomad 0.12.0. Please configure networking via group network block.\"))\n\t}\n\n\tfor idx, tmpl := range t.Templates {\n\t\tif err := tmpl.Warnings(); err != nil {\n\t\t\terr = multierror.Prefix(err, fmt.Sprintf(\"Template[%d]\", idx))\n\t\t\tmErr = *multierror.Append(&mErr, err)\n\t\t}\n\t}\n\n\t// Validate task-level services.\n\tfor _, s := range t.Services {\n\t\tif err := s.Warnings(); err != nil {\n\t\t\terr = multierror.Prefix(err, fmt.Sprintf(\"Service %q:\", s.Name))\n\t\t\tmErr = *multierror.Append(&mErr, err)","sourceCodeStart":8611,"sourceCodeEnd":8647,"githubUrl":"https://github.com/hashicorp/nomad/blob/482b49bf1aec006f089bcfc7e632d8f6ac303e5e/nomad/structs/structs.go#L8611-L8647","documentation":"A warning (not fatal) produced by Task.Warnings() in nomad/structs when a task's resources block still sets the legacy `iops` field. Nomad deprecated task-level IOPS in 0.9.0 and surfaces this to inform users to remove the field. The job still submits; this is surfaced via the API's Warnings header/field.","triggerScenarios":"Submitting a job whose task resources stanza contains a non-zero `iops` value, e.g. resources { cpu = 500, memory = 256, iops = 100 }. Evaluated on every job validation/submission where Resources.IOPS != 0.","commonSituations":"Old jobs written before Nomad 0.9.0 being redeployed; copy-pasted legacy HCL; Terraform/modules generated from ancient Nomad examples.","solutions":["Delete the `iops` field from the task's resources block.","Re-validate the job with `nomad job validate` to confirm the warning is gone.","Update any templating/modules that regenerate the job spec to omit iops."],"exampleFix":"// before\nresources {\n  cpu    = 500\n  memory = 256\n  iops   = 100\n}\n// after\nresources {\n  cpu    = 500\n  memory = 256\n}","handlingStrategy":"validation","validationCode":"// Strip deprecated iops before submitting\nclean := func(t *TaskResource) *TaskResource { t.IOPS = 0; return t }","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Grep job repos for `iops` and remove it once.","Pin job templates to a modern Nomad version's examples.","Treat submission Warnings header as actionable in your deploy pipeline."],"tags":["nomad","deprecation","resources","warnings"],"backgroundTag":"deprecated-field-warning","analyzedSha":"482b49bf1aec006f089bcfc7e632d8f6ac303e5e","analyzedAt":"2026-09-04T07:54:14.808Z","contentChangedAt":"2026-09-04T07:54:14.808Z","schemaVersion":2},"datasetVersion":"2026-09-08T10:18:20.063Z"}