open-nomad/command/eval.go

69 lines
1.6 KiB
Go

package command
import (
"fmt"
"strings"
"github.com/hashicorp/nomad/api"
"github.com/mitchellh/cli"
)
type EvalCommand struct {
Meta
}
func (f *EvalCommand) Help() string {
helpText := `
Usage: nomad eval <subcommand> [options] [args]
This command groups subcommands for interacting with evaluations. Evaluations
are used to trigger a scheduling event. As such, evaluations are an internal
detail but can be useful for debugging placement failures when the cluster
does not have the resources to run a given job.
List evaluations:
$ nomad eval list
Examine an evaluations status:
$ nomad eval status <eval-id>
Delete evaluations:
$ nomad eval delete <eval-id>
Please see the individual subcommand help for detailed usage information.
`
return strings.TrimSpace(helpText)
}
func (f *EvalCommand) Synopsis() string {
return "Interact with evaluations"
}
func (f *EvalCommand) Name() string { return "eval" }
func (f *EvalCommand) Run(_ []string) int { return cli.RunResultHelp }
// outputEvalList is a helper which outputs an array of evaluations as a list
// to the UI with key information such as ID and status.
func outputEvalList(ui cli.Ui, evals []*api.Evaluation, length int) {
out := make([]string, len(evals)+1)
out[0] = "ID|Priority|Triggered By|Job ID|Status|Placement Failures"
for i, eval := range evals {
failures, _ := evalFailureStatus(eval)
out[i+1] = fmt.Sprintf("%s|%d|%s|%s|%s|%s",
limit(eval.ID, length),
eval.Priority,
eval.TriggeredBy,
eval.JobID,
eval.Status,
failures,
)
}
ui.Output(formatList(out))
}