mirror of
https://github.com/kemko/nomad.git
synced 2026-01-04 17:35:43 +03:00
command/run: validate job before submission
This commit is contained in:
@@ -79,6 +79,12 @@ func (c *RunCommand) Run(args []string) int {
|
||||
return 1
|
||||
}
|
||||
|
||||
// Check that the job is valid
|
||||
if err := job.Validate(); err != nil {
|
||||
c.Ui.Error(fmt.Sprintf("Error validating job: %s", err))
|
||||
return 1
|
||||
}
|
||||
|
||||
// Convert it to something we can use
|
||||
apiJob, err := convertJob(job)
|
||||
if err != nil {
|
||||
|
||||
@@ -35,7 +35,7 @@ func TestRunCommand_Fails(t *testing.T) {
|
||||
}
|
||||
ui.ErrorWriter.Reset()
|
||||
|
||||
// Fails on invalid job
|
||||
// Fails on invalid HCL
|
||||
fh1, err := ioutil.TempFile("", "nomad")
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
@@ -52,16 +52,47 @@ func TestRunCommand_Fails(t *testing.T) {
|
||||
}
|
||||
ui.ErrorWriter.Reset()
|
||||
|
||||
// Fails on connection failure
|
||||
// Fails on invalid job spec
|
||||
fh2, err := ioutil.TempFile("", "nomad")
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
defer os.Remove(fh2.Name())
|
||||
if _, err := fh2.WriteString(`job "hello" {}`); err != nil {
|
||||
if _, err := fh2.WriteString(`job "job1" {}`); err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
if code := cmd.Run([]string{"-address=nope", fh2.Name()}); code != 1 {
|
||||
if code := cmd.Run([]string{fh2.Name()}); code != 1 {
|
||||
t.Fatalf("expect exit 1, got: %d", code)
|
||||
}
|
||||
if out := ui.ErrorWriter.String(); !strings.Contains(out, "Error validating") {
|
||||
t.Fatalf("expect validation error, got: %s", out)
|
||||
}
|
||||
ui.ErrorWriter.Reset()
|
||||
|
||||
// Fails on connection failure (requires a valid job)
|
||||
fh3, err := ioutil.TempFile("", "nomad")
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
defer os.Remove(fh3.Name())
|
||||
_, err = fh3.WriteString(`
|
||||
job "job1" {
|
||||
datacenters = [ "dc1" ]
|
||||
group "group1" {
|
||||
count = 1
|
||||
task "task1" {
|
||||
driver = "exec"
|
||||
resources = {
|
||||
cpu = 1000
|
||||
mem = 512
|
||||
}
|
||||
}
|
||||
}
|
||||
}`)
|
||||
if err != nil {
|
||||
t.Fatalf("err: %s", err)
|
||||
}
|
||||
if code := cmd.Run([]string{"-address=nope", fh3.Name()}); code != 1 {
|
||||
t.Fatalf("expected exit code 1, got: %d", code)
|
||||
}
|
||||
if out := ui.ErrorWriter.String(); !strings.Contains(out, "Error submitting job") {
|
||||
|
||||
Reference in New Issue
Block a user