Make error messages a bit more user friendly.
Updated error messages so that it doesn't print full Go struct representations when running a new container in a sandbox. For example, this occurs frequently when commands are not found when doing a 'kubectl exec'. PiperOrigin-RevId: 219729141 Change-Id: Ic3a7bc84cd7b2167f495d48a1da241d621d3ca09
This commit is contained in:
parent
0e277a39c8
commit
9d69d85bc1
|
@ -19,6 +19,7 @@ import (
|
|||
"encoding/json"
|
||||
"fmt"
|
||||
"sort"
|
||||
"strings"
|
||||
"text/tabwriter"
|
||||
"time"
|
||||
|
||||
|
@ -88,6 +89,16 @@ type ExecArgs struct {
|
|||
ContainerID string
|
||||
}
|
||||
|
||||
// String prints the arguments as a string.
|
||||
func (args ExecArgs) String() string {
|
||||
a := make([]string, len(args.Argv))
|
||||
copy(a, args.Argv)
|
||||
if args.Filename != "" {
|
||||
a[0] = args.Filename
|
||||
}
|
||||
return strings.Join(a, " ")
|
||||
}
|
||||
|
||||
// Exec runs a new task.
|
||||
func (proc *Proc) Exec(args *ExecArgs, waitStatus *uint32) error {
|
||||
newTG, _, _, err := proc.execAsync(args)
|
||||
|
|
|
@ -618,7 +618,7 @@ func (l *Loader) executeAsync(args *control.ExecArgs) (kernel.ThreadID, error) {
|
|||
ep, ok := l.processes[rootKey]
|
||||
l.mu.Unlock()
|
||||
if !ok {
|
||||
return 0, fmt.Errorf("cannot exec in container %q: no such container", args.ContainerID)
|
||||
return 0, fmt.Errorf("no such container: %q", args.ContainerID)
|
||||
}
|
||||
ep.tg.Leader().WithMuLocked(func(t *kernel.Task) {
|
||||
args.Root = t.FSContext().RootDirectory()
|
||||
|
@ -631,7 +631,7 @@ func (l *Loader) executeAsync(args *control.ExecArgs) (kernel.ThreadID, error) {
|
|||
proc := control.Proc{Kernel: l.k}
|
||||
tg, tgid, ttyFile, err := control.ExecAsync(&proc, args)
|
||||
if err != nil {
|
||||
return 0, fmt.Errorf("error executing: %+v: %v", args, err)
|
||||
return 0, err
|
||||
}
|
||||
|
||||
// Insert the process into processes so that we can wait on it
|
||||
|
|
|
@ -229,7 +229,7 @@ func (s *Sandbox) Execute(args *control.ExecArgs) (int32, error) {
|
|||
// Send a message to the sandbox control server to start the container.
|
||||
var pid int32
|
||||
if err := conn.Call(boot.ContainerExecuteAsync, args, &pid); err != nil {
|
||||
return 0, fmt.Errorf("error executing in sandbox: %v", err)
|
||||
return 0, fmt.Errorf("error executing command %q in sandbox: %v", args, err)
|
||||
}
|
||||
return pid, nil
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue