mirror of
https://github.com/containers/podman.git
synced 2025-12-09 23:27:09 +08:00
Merge pull request #2404 from baude/remoteerrors
make remote-client error messaging more robust
This commit is contained in:
41
cmd/podman/errors.go
Normal file
41
cmd/podman/errors.go
Normal file
@@ -0,0 +1,41 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
"os/exec"
|
||||
"syscall"
|
||||
|
||||
"github.com/containers/libpod/cmd/podman/varlink"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
func outputError(err error) {
|
||||
if MainGlobalOpts.LogLevel == "debug" {
|
||||
logrus.Errorf(err.Error())
|
||||
} else {
|
||||
if ee, ok := err.(*exec.ExitError); ok {
|
||||
if status, ok := ee.Sys().(syscall.WaitStatus); ok {
|
||||
exitCode = status.ExitStatus()
|
||||
}
|
||||
}
|
||||
var ne error
|
||||
switch e := err.(type) {
|
||||
// For some reason golang wont let me list them with commas so listing them all.
|
||||
case *iopodman.ImageNotFound:
|
||||
ne = errors.New(e.Reason)
|
||||
case *iopodman.ContainerNotFound:
|
||||
ne = errors.New(e.Reason)
|
||||
case *iopodman.PodNotFound:
|
||||
ne = errors.New(e.Reason)
|
||||
case *iopodman.VolumeNotFound:
|
||||
ne = errors.New(e.Reason)
|
||||
case *iopodman.ErrorOccurred:
|
||||
ne = errors.New(e.Reason)
|
||||
default:
|
||||
ne = err
|
||||
}
|
||||
fmt.Fprintln(os.Stderr, "Error:", ne.Error())
|
||||
}
|
||||
}
|
||||
@@ -2,11 +2,9 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"io"
|
||||
"log/syslog"
|
||||
"os"
|
||||
"os/exec"
|
||||
"runtime/pprof"
|
||||
"strings"
|
||||
"syscall"
|
||||
@@ -18,7 +16,7 @@ import (
|
||||
"github.com/containers/libpod/pkg/tracing"
|
||||
"github.com/containers/libpod/version"
|
||||
"github.com/containers/storage/pkg/reexec"
|
||||
opentracing "github.com/opentracing/opentracing-go"
|
||||
"github.com/opentracing/opentracing-go"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
lsyslog "github.com/sirupsen/logrus/hooks/syslog"
|
||||
@@ -224,16 +222,7 @@ func main() {
|
||||
return
|
||||
}
|
||||
if err := rootCmd.Execute(); err != nil {
|
||||
if MainGlobalOpts.LogLevel == "debug" {
|
||||
logrus.Errorf(err.Error())
|
||||
} else {
|
||||
if ee, ok := err.(*exec.ExitError); ok {
|
||||
if status, ok := ee.Sys().(syscall.WaitStatus); ok {
|
||||
exitCode = status.ExitStatus()
|
||||
}
|
||||
}
|
||||
fmt.Fprintln(os.Stderr, "Error:", err.Error())
|
||||
}
|
||||
outputError(err)
|
||||
} else {
|
||||
// The exitCode modified from 125, indicates an application
|
||||
// running inside of a container failed, as opposed to the
|
||||
|
||||
@@ -1116,16 +1116,19 @@ method GetPodsByContext(all: bool, latest: bool, args: []string) -> (pods: []str
|
||||
method LoadImage(name: string, inputFile: string, quiet: bool, deleteFile: bool) -> (reply: MoreResponse)
|
||||
|
||||
# ImageNotFound means the image could not be found by the provided name or ID in local storage.
|
||||
error ImageNotFound (id: string)
|
||||
error ImageNotFound (id: string, reason: string)
|
||||
|
||||
# ContainerNotFound means the container could not be found by the provided name or ID in local storage.
|
||||
error ContainerNotFound (id: string)
|
||||
error ContainerNotFound (id: string, reason: string)
|
||||
|
||||
# NoContainerRunning means none of the containers requested are running in a command that requires a running container.
|
||||
error NoContainerRunning ()
|
||||
|
||||
# PodNotFound means the pod could not be found by the provided name or ID in local storage.
|
||||
error PodNotFound (name: string)
|
||||
error PodNotFound (name: string, reason: string)
|
||||
|
||||
# VolumeNotFound means the volume could not be found by the name or ID in local storage.
|
||||
error VolumeNotFound (id: string, reason: string)
|
||||
|
||||
# PodContainerError means a container associated with a pod failed to preform an operation. It contains
|
||||
# a container ID of the container that failed.
|
||||
|
||||
Reference in New Issue
Block a user