cli: forward request for job validation to nomad leader
This PR changes the behavior of 'nomad job validate' to forward the request to the nomad leader, rather than responding from any server. This is because we need the leader when validating Vault tokens, since the leader is the only server with an active vault client.
This commit is contained in:
parent
34104488a3
commit
3aaaedf52e
|
@ -0,0 +1,3 @@
|
||||||
|
```release-note:bug
|
||||||
|
cli: Fixed a bug where job validation requeset was not sent to leader
|
||||||
|
```
|
|
@ -464,10 +464,8 @@ func getSignalConstraint(signals []string) *structs.Constraint {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Summary retrieves the summary of a job
|
// Summary retrieves the summary of a job.
|
||||||
func (j *Job) Summary(args *structs.JobSummaryRequest,
|
func (j *Job) Summary(args *structs.JobSummaryRequest, reply *structs.JobSummaryResponse) error {
|
||||||
reply *structs.JobSummaryResponse) error {
|
|
||||||
|
|
||||||
if done, err := j.srv.forward("Job.Summary", args, args, reply); done {
|
if done, err := j.srv.forward("Job.Summary", args, args, reply); done {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
@ -511,8 +509,14 @@ func (j *Job) Summary(args *structs.JobSummaryRequest,
|
||||||
return j.srv.blockingRPC(&opts)
|
return j.srv.blockingRPC(&opts)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Validate validates a job
|
// Validate validates a job.
|
||||||
|
//
|
||||||
|
// Must forward to the leader, because only the leader will have a live Vault
|
||||||
|
// client with which to validate vault tokens.
|
||||||
func (j *Job) Validate(args *structs.JobValidateRequest, reply *structs.JobValidateResponse) error {
|
func (j *Job) Validate(args *structs.JobValidateRequest, reply *structs.JobValidateResponse) error {
|
||||||
|
if done, err := j.srv.forward("Job.Validate", args, args, reply); done {
|
||||||
|
return err
|
||||||
|
}
|
||||||
defer metrics.MeasureSince([]string{"nomad", "job", "validate"}, time.Now())
|
defer metrics.MeasureSince([]string{"nomad", "job", "validate"}, time.Now())
|
||||||
|
|
||||||
// defensive check; http layer and RPC requester should ensure namespaces are set consistently
|
// defensive check; http layer and RPC requester should ensure namespaces are set consistently
|
||||||
|
|
|
@ -14,7 +14,7 @@ types.
|
||||||
## Validate Job
|
## Validate Job
|
||||||
|
|
||||||
This endpoint validates a Nomad job file. The local Nomad agent forwards the
|
This endpoint validates a Nomad job file. The local Nomad agent forwards the
|
||||||
request to a server. In the event a server can't be reached the agent verifies
|
request to the leader. In the event the leader cannot be reached the agent verifies
|
||||||
the job file locally but skips validating driver configurations.
|
the job file locally but skips validating driver configurations.
|
||||||
|
|
||||||
~> This endpoint accepts a **JSON job file**, not an HCL job file.
|
~> This endpoint accepts a **JSON job file**, not an HCL job file.
|
||||||
|
|
Loading…
Reference in New Issue