mirror of
https://github.com/containers/podman.git
synced 2025-10-15 18:23:30 +08:00
libpod: switch to golang native error wrapping
We now use the golang error wrapping format specifier `%w` instead of the deprecated github.com/pkg/errors package. [NO NEW TESTS NEEDED] Signed-off-by: Sascha Grunert <sgrunert@redhat.com>
This commit is contained in:
@ -19,7 +19,6 @@ import (
|
||||
"github.com/containers/podman/v4/libpod/lock"
|
||||
"github.com/containers/storage"
|
||||
spec "github.com/opencontainers/runtime-spec/specs-go"
|
||||
"github.com/pkg/errors"
|
||||
"github.com/sirupsen/logrus"
|
||||
)
|
||||
|
||||
@ -355,14 +354,14 @@ func (c *Container) specFromState() (*spec.Spec, error) {
|
||||
returnSpec = new(spec.Spec)
|
||||
content, err := ioutil.ReadAll(f)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "error reading container config")
|
||||
return nil, fmt.Errorf("error reading container config: %w", err)
|
||||
}
|
||||
if err := json.Unmarshal(content, &returnSpec); err != nil {
|
||||
return nil, errors.Wrapf(err, "error unmarshalling container config")
|
||||
return nil, fmt.Errorf("error unmarshalling container config: %w", err)
|
||||
}
|
||||
} else if !os.IsNotExist(err) {
|
||||
// ignore when the file does not exist
|
||||
return nil, errors.Wrapf(err, "error opening container config")
|
||||
return nil, fmt.Errorf("error opening container config: %w", err)
|
||||
}
|
||||
|
||||
return returnSpec, nil
|
||||
@ -518,7 +517,7 @@ func (c *Container) PortMappings() ([]types.PortMapping, error) {
|
||||
if len(c.config.NetNsCtr) > 0 {
|
||||
netNsCtr, err := c.runtime.GetContainer(c.config.NetNsCtr)
|
||||
if err != nil {
|
||||
return nil, errors.Wrapf(err, "unable to look up network namespace for container %s", c.ID())
|
||||
return nil, fmt.Errorf("unable to look up network namespace for container %s: %w", c.ID(), err)
|
||||
}
|
||||
return netNsCtr.PortMappings()
|
||||
}
|
||||
@ -705,7 +704,7 @@ func (c *Container) Mounted() (bool, string, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return false, "", errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return false, "", fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
// We cannot directly return c.state.Mountpoint as it is not guaranteed
|
||||
@ -735,7 +734,7 @@ func (c *Container) StartedTime() (time.Time, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return time.Time{}, errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return time.Time{}, fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.state.StartedTime, nil
|
||||
@ -747,7 +746,7 @@ func (c *Container) FinishedTime() (time.Time, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return time.Time{}, errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return time.Time{}, fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.state.FinishedTime, nil
|
||||
@ -762,7 +761,7 @@ func (c *Container) ExitCode() (int32, bool, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return 0, false, errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return 0, false, fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.state.ExitCode, c.state.Exited, nil
|
||||
@ -774,7 +773,7 @@ func (c *Container) OOMKilled() (bool, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return false, errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return false, fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.state.OOMKilled, nil
|
||||
@ -845,7 +844,7 @@ func (c *Container) execSessionNoCopy(id string) (*ExecSession, error) {
|
||||
|
||||
session, ok := c.state.ExecSessions[id]
|
||||
if !ok {
|
||||
return nil, errors.Wrapf(define.ErrNoSuchExecSession, "no exec session with ID %s found in container %s", id, c.ID())
|
||||
return nil, fmt.Errorf("no exec session with ID %s found in container %s: %w", id, c.ID(), define.ErrNoSuchExecSession)
|
||||
}
|
||||
|
||||
return session, nil
|
||||
@ -861,7 +860,7 @@ func (c *Container) ExecSession(id string) (*ExecSession, error) {
|
||||
|
||||
returnSession := new(ExecSession)
|
||||
if err := JSONDeepCopy(session, returnSession); err != nil {
|
||||
return nil, errors.Wrapf(err, "error copying contents of container %s exec session %s", c.ID(), session.ID())
|
||||
return nil, fmt.Errorf("error copying contents of container %s exec session %s: %w", c.ID(), session.ID(), err)
|
||||
}
|
||||
|
||||
return returnSession, nil
|
||||
@ -921,7 +920,7 @@ func (c *Container) NamespacePath(linuxNS LinuxNS) (string, error) { //nolint:in
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return "", errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return "", fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
|
||||
@ -932,11 +931,11 @@ func (c *Container) NamespacePath(linuxNS LinuxNS) (string, error) { //nolint:in
|
||||
// If the container is not running, an error will be returned
|
||||
func (c *Container) namespacePath(linuxNS LinuxNS) (string, error) { //nolint:interfacer
|
||||
if c.state.State != define.ContainerStateRunning && c.state.State != define.ContainerStatePaused {
|
||||
return "", errors.Wrapf(define.ErrCtrStopped, "cannot get namespace path unless container %s is running", c.ID())
|
||||
return "", fmt.Errorf("cannot get namespace path unless container %s is running: %w", c.ID(), define.ErrCtrStopped)
|
||||
}
|
||||
|
||||
if linuxNS == InvalidNS {
|
||||
return "", errors.Wrapf(define.ErrInvalidArg, "invalid namespace requested from container %s", c.ID())
|
||||
return "", fmt.Errorf("invalid namespace requested from container %s: %w", c.ID(), define.ErrInvalidArg)
|
||||
}
|
||||
|
||||
return fmt.Sprintf("/proc/%d/ns/%s", c.state.PID, linuxNS.String()), nil
|
||||
@ -959,7 +958,7 @@ func (c *Container) CgroupPath() (string, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return "", errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return "", fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.cGroupPath()
|
||||
@ -971,10 +970,10 @@ func (c *Container) CgroupPath() (string, error) {
|
||||
// NOTE: only call this when owning the container's lock.
|
||||
func (c *Container) cGroupPath() (string, error) {
|
||||
if c.config.NoCgroups || c.config.CgroupsMode == "disabled" {
|
||||
return "", errors.Wrapf(define.ErrNoCgroups, "this container is not creating cgroups")
|
||||
return "", fmt.Errorf("this container is not creating cgroups: %w", define.ErrNoCgroups)
|
||||
}
|
||||
if c.state.State != define.ContainerStateRunning && c.state.State != define.ContainerStatePaused {
|
||||
return "", errors.Wrapf(define.ErrCtrStopped, "cannot get cgroup path unless container %s is running", c.ID())
|
||||
return "", fmt.Errorf("cannot get cgroup path unless container %s is running: %w", c.ID(), define.ErrCtrStopped)
|
||||
}
|
||||
|
||||
// Read /proc/{PID}/cgroup and find the *longest* cgroup entry. That's
|
||||
@ -995,7 +994,7 @@ func (c *Container) cGroupPath() (string, error) {
|
||||
// If the file doesn't exist, it means the container could have been terminated
|
||||
// so report it.
|
||||
if os.IsNotExist(err) {
|
||||
return "", errors.Wrapf(define.ErrCtrStopped, "cannot get cgroup path unless container %s is running", c.ID())
|
||||
return "", fmt.Errorf("cannot get cgroup path unless container %s is running: %w", c.ID(), define.ErrCtrStopped)
|
||||
}
|
||||
return "", err
|
||||
}
|
||||
@ -1024,7 +1023,7 @@ func (c *Container) cGroupPath() (string, error) {
|
||||
}
|
||||
|
||||
if len(cgroupPath) == 0 {
|
||||
return "", errors.Errorf("could not find any cgroup in %q", procPath)
|
||||
return "", fmt.Errorf("could not find any cgroup in %q", procPath)
|
||||
}
|
||||
|
||||
cgroupManager := c.CgroupManager()
|
||||
@ -1059,7 +1058,7 @@ func (c *Container) RootFsSize() (int64, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return -1, errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return -1, fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.rootFsSize()
|
||||
@ -1071,7 +1070,7 @@ func (c *Container) RWSize() (int64, error) {
|
||||
c.lock.Lock()
|
||||
defer c.lock.Unlock()
|
||||
if err := c.syncContainer(); err != nil {
|
||||
return -1, errors.Wrapf(err, "error updating container %s state", c.ID())
|
||||
return -1, fmt.Errorf("error updating container %s state: %w", c.ID(), err)
|
||||
}
|
||||
}
|
||||
return c.rwSize()
|
||||
@ -1173,7 +1172,7 @@ func (c *Container) ContainerState() (*ContainerState, error) {
|
||||
}
|
||||
returnConfig := new(ContainerState)
|
||||
if err := JSONDeepCopy(c.state, returnConfig); err != nil {
|
||||
return nil, errors.Wrapf(err, "error copying container %s state", c.ID())
|
||||
return nil, fmt.Errorf("error copying container %s state: %w", c.ID(), err)
|
||||
}
|
||||
return c.state, nil
|
||||
}
|
||||
|
Reference in New Issue
Block a user