func printTaskSummary(task *api.Task, res *common.Resolver) { w := tabwriter.NewWriter(os.Stdout, 8, 8, 8, ' ', 0) defer w.Flush() fmt.Fprintf(w, "ID\t: %s\n", task.ID) fmt.Fprintf(w, "Slot\t: %d\n", task.Slot) fmt.Fprintf(w, "Service\t: %s\n", res.Resolve(api.Service{}, task.ServiceID)) printTaskStatus(w, task) fmt.Fprintf(w, "Node\t: %s\n", res.Resolve(api.Node{}, task.NodeID)) fmt.Fprintln(w, "Spec\t") ctr := task.Spec.GetContainer() common.FprintfIfNotEmpty(w, " Image\t: %s\n", ctr.Image) common.FprintfIfNotEmpty(w, " Command\t: %q\n", strings.Join(ctr.Command, " ")) common.FprintfIfNotEmpty(w, " Args\t: [%s]\n", strings.Join(ctr.Args, ", ")) common.FprintfIfNotEmpty(w, " Env\t: [%s]\n", strings.Join(ctr.Env, ", ")) if len(ctr.Secrets) > 0 { fmt.Fprintln(w, " Secrets:") for _, sr := range ctr.Secrets { var targetName, mode string if sr.GetFile() != nil { targetName = sr.GetFile().Name mode = "FILE" } fmt.Fprintf(w, " [%s] %s:%s\n", mode, sr.SecretName, targetName) } } }
func printTaskSummary(task *api.Task, res *common.Resolver) { w := tabwriter.NewWriter(os.Stdout, 8, 8, 8, ' ', 0) defer w.Flush() fmt.Fprintf(w, "ID\t: %s\n", task.ID) fmt.Fprintf(w, "Slot\t: %d\n", task.Slot) fmt.Fprintf(w, "Service\t: %s\n", res.Resolve(api.Service{}, task.ServiceID)) printTaskStatus(w, task) fmt.Fprintf(w, "Node\t: %s\n", res.Resolve(api.Node{}, task.NodeID)) fmt.Fprintln(w, "Spec\t") ctr := task.Spec.GetContainer() common.FprintfIfNotEmpty(w, " Image\t: %s\n", ctr.Image) common.FprintfIfNotEmpty(w, " Command\t: %q\n", strings.Join(ctr.Command, " ")) common.FprintfIfNotEmpty(w, " Args\t: [%s]\n", strings.Join(ctr.Args, ", ")) common.FprintfIfNotEmpty(w, " Env\t: [%s]\n", strings.Join(ctr.Env, ", ")) }
// Print prints a list of tasks. func Print(tasks []*api.Task, all bool, res *common.Resolver) { w := tabwriter.NewWriter(os.Stdout, 4, 4, 4, ' ', 0) defer w.Flush() common.PrintHeader(w, "Task ID", "Service", "Slot", "Image", "Desired State", "Last State", "Node") sort.Stable(tasksBySlot(tasks)) for _, t := range tasks { if !all && t.DesiredState > api.TaskStateRunning { continue } c := t.Spec.GetContainer() fmt.Fprintf(w, "%s\t%s\t%d\t%s\t%s\t%s %s\t%s\n", t.ID, t.ServiceAnnotations.Name, t.Slot, c.Image, t.DesiredState.String(), t.Status.State.String(), common.TimestampAgo(t.Status.Timestamp), res.Resolve(api.Node{}, t.NodeID), ) } }