mirror of
https://github.com/kemko/nomad.git
synced 2026-01-07 19:05:42 +03:00
api: add test for canonicalized jobs/parse
This commit is contained in:
16
api/jobs.go
16
api/jobs.go
@@ -40,6 +40,7 @@ type Jobs struct {
|
||||
type JobsParseRequest struct {
|
||||
//JobHCL is an hcl jobspec
|
||||
JobHCL string
|
||||
|
||||
//Canonicalize is a flag as to if the server should return default values
|
||||
//for unset fields
|
||||
Canonicalize bool
|
||||
@@ -50,13 +51,16 @@ func (c *Client) Jobs() *Jobs {
|
||||
return &Jobs{client: c}
|
||||
}
|
||||
|
||||
// Parse is used to convert the HCL repesentation of a Job to JSON server side
|
||||
// Parse is used to convert the HCL repesentation of a Job to JSON server side.
|
||||
// To parse the HCL client side see package github.com/hashicorp/nomad/jobspec
|
||||
func (j *Jobs) Parse(jobHCL string) (*Job, error) {
|
||||
var job *Job
|
||||
req := &JobsParseRequest{JobHCL: jobHCL}
|
||||
_, err := j.client.write("/v1/jobs/parse", req, job, nil)
|
||||
return job, err
|
||||
func (j *Jobs) Parse(jobHCL string, canonicalize bool) (*Job, error) {
|
||||
var job Job
|
||||
req := &JobsParseRequest{
|
||||
JobHCL: jobHCL,
|
||||
Canonicalize: canonicalize,
|
||||
}
|
||||
_, err := j.client.write("/v1/jobs/parse", req, &job, nil)
|
||||
return &job, err
|
||||
}
|
||||
|
||||
func (j *Jobs) Validate(job *Job, q *WriteOptions) (*JobValidateResponse, *WriteMeta, error) {
|
||||
|
||||
@@ -47,6 +47,43 @@ func TestJobs_Register(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestJobs_Parse(t *testing.T) {
|
||||
t.Parallel()
|
||||
c, s := makeClient(t, nil, nil)
|
||||
defer s.Stop()
|
||||
|
||||
jobs := c.Jobs()
|
||||
|
||||
checkJob := func(job *Job, expected string) {
|
||||
if job == nil {
|
||||
t.Fatal("job should not be nil")
|
||||
}
|
||||
|
||||
region := job.Region
|
||||
|
||||
if region == nil {
|
||||
if expected != "" {
|
||||
t.Fatalf("expected job region to be '%s' but was unset", expected)
|
||||
}
|
||||
} else {
|
||||
if expected != *region {
|
||||
t.Fatalf("expected job region '%s', but got '%s'", expected, *region)
|
||||
}
|
||||
}
|
||||
}
|
||||
job, err := jobs.Parse(mock.HCL(), true)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
checkJob(job, "global")
|
||||
|
||||
job, err = jobs.Parse(mock.HCL(), false)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
checkJob(job, "")
|
||||
}
|
||||
|
||||
func TestJobs_Validate(t *testing.T) {
|
||||
t.Parallel()
|
||||
c, s := makeClient(t, nil, nil)
|
||||
|
||||
Reference in New Issue
Block a user