open-nomad/contributing/checklist-jobspec.md
Seth Hoenig d5ad580d5c structs: fix compatibility between api and nomad/structs proxy definitions
The field names within the structs representing the Connect proxy
definition were not the same (nomad/structs/ vs api/), causing the
values to be lost in translation for the 'nomad job inspect' command.

Since the field names already shipped in v0.11.0 we cannot simply
fix the names. Instead, use the json struct tag on the structs/ structs
to remap the name to match the publicly expose api/ package on json
encoding.

This means existing jobs from v0.11.0 will continue to work, and
the JSON API for job submission will remain backwards compatible.
2020-04-13 15:59:45 -06:00

1.5 KiB

New jobspec Entry Checklist

Code

  • Consider similar features in Consul, Kubernetes, and other tools. Is there prior art we should match? Terminology, structure, etc?
  • Parse in jobspec/parse.go
  • Test in jobspec/parse_test.go (preferably with a jobspec/text-fixtures/<feature>.hcl test file)
  • Add structs/fields to api/ package
    • structs usually have Canonicalize, Copy, and Merge methods
    • New fields should be added to existing Canonicalize, Copy, and Merge methods
    • Test the struct/field via all methods mentioned above
  • Add structs/fields to nomad/structs package
    • Validation happens in this package and must be implemented
    • Implement other methods and tests from api/ package
    • Note that analogous struct field names should match with api/ package
  • Add conversion between api/ and nomad/structs in command/agent/job_endpoint.go
  • Add check for job diff in nomad/structs/diff.go
    • Note that fields must be listed in alphabetical order in FieldDiff slices in nomad/structs/diff_test.go
  • Test conversion

Docs