switch usage directly to errdefs.(ErrAlreadyExists and ErrNotFound)
Signed-off-by: Zou Nengren <zouyee1989@gmail.com>
This commit is contained in:
parent
45e0e5a77e
commit
fcffe0c83a
@ -9,3 +9,5 @@
|
|||||||
// containerd to be the source of truth, helping us catch missing go.mod rules,
|
// containerd to be the source of truth, helping us catch missing go.mod rules,
|
||||||
// or version changes early.
|
// or version changes early.
|
||||||
module empty-mod
|
module empty-mod
|
||||||
|
|
||||||
|
go 1.13
|
||||||
|
@ -20,20 +20,19 @@ import (
|
|||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
|
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// RemoveContainer removes the container.
|
// RemoveContainer removes the container.
|
||||||
func (c *criService) RemoveContainer(ctx context.Context, r *runtime.RemoveContainerRequest) (_ *runtime.RemoveContainerResponse, retErr error) {
|
func (c *criService) RemoveContainer(ctx context.Context, r *runtime.RemoveContainerRequest) (_ *runtime.RemoveContainerResponse, retErr error) {
|
||||||
container, err := c.containerStore.Get(r.GetContainerId())
|
container, err := c.containerStore.Get(r.GetContainerId())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != store.ErrNotExist {
|
if !errdefs.IsNotFound(err) {
|
||||||
return nil, errors.Wrapf(err, "an error occurred when try to find container %q", r.GetContainerId())
|
return nil, errors.Wrapf(err, "an error occurred when try to find container %q", r.GetContainerId())
|
||||||
}
|
}
|
||||||
// Do not return error if container metadata doesn't exist.
|
// Do not return error if container metadata doesn't exist.
|
||||||
|
@ -19,13 +19,13 @@ package server
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
||||||
|
|
||||||
runtimespec "github.com/opencontainers/runtime-spec/specs-go"
|
runtimespec "github.com/opencontainers/runtime-spec/specs-go"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ContainerStatus inspects the container and returns the status.
|
// ContainerStatus inspects the container and returns the status.
|
||||||
@ -44,7 +44,7 @@ func (c *criService) ContainerStatus(ctx context.Context, r *runtime.ContainerSt
|
|||||||
imageRef := container.ImageRef
|
imageRef := container.ImageRef
|
||||||
image, err := c.imageStore.Get(imageRef)
|
image, err := c.imageStore.Get(imageRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != store.ErrNotExist {
|
if !errdefs.IsNotFound(err) {
|
||||||
return nil, errors.Wrapf(err, "failed to get image %q", imageRef)
|
return nil, errors.Wrapf(err, "failed to get image %q", imageRef)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
@ -24,14 +24,13 @@ import (
|
|||||||
eventtypes "github.com/containerd/containerd/api/events"
|
eventtypes "github.com/containerd/containerd/api/events"
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
|
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
||||||
|
ctrdutil "github.com/containerd/containerd/pkg/cri/util"
|
||||||
|
|
||||||
|
"github.com/moby/sys/signal"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
|
||||||
ctrdutil "github.com/containerd/containerd/pkg/cri/util"
|
|
||||||
"github.com/moby/sys/signal"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// StopContainer stops a running container with a grace period (i.e., timeout).
|
// StopContainer stops a running container with a grace period (i.e., timeout).
|
||||||
@ -116,7 +115,7 @@ func (c *criService) stopContainer(ctx context.Context, container containerstore
|
|||||||
// TODO(random-liu): Remove this logic when containerd 1.2 is deprecated.
|
// TODO(random-liu): Remove this logic when containerd 1.2 is deprecated.
|
||||||
image, err := c.imageStore.Get(container.ImageRef)
|
image, err := c.imageStore.Get(container.ImageRef)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != store.ErrNotExist {
|
if !errdefs.IsNotFound(err) {
|
||||||
return errors.Wrapf(err, "failed to get image %q", container.ImageRef)
|
return errors.Wrapf(err, "failed to get image %q", container.ImageRef)
|
||||||
}
|
}
|
||||||
log.G(ctx).Warningf("Image %q not found, stop container with signal %q", container.ImageRef, stopSignal)
|
log.G(ctx).Warningf("Image %q not found, stop container with signal %q", container.ImageRef, stopSignal)
|
||||||
|
@ -25,18 +25,17 @@ import (
|
|||||||
containerdio "github.com/containerd/containerd/cio"
|
containerdio "github.com/containerd/containerd/cio"
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/events"
|
"github.com/containerd/containerd/events"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/constants"
|
||||||
|
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
||||||
|
sandboxstore "github.com/containerd/containerd/pkg/cri/store/sandbox"
|
||||||
|
ctrdutil "github.com/containerd/containerd/pkg/cri/util"
|
||||||
"github.com/containerd/typeurl"
|
"github.com/containerd/typeurl"
|
||||||
|
|
||||||
gogotypes "github.com/gogo/protobuf/types"
|
gogotypes "github.com/gogo/protobuf/types"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
"k8s.io/apimachinery/pkg/util/clock"
|
"k8s.io/apimachinery/pkg/util/clock"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/constants"
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
|
||||||
sandboxstore "github.com/containerd/containerd/pkg/cri/store/sandbox"
|
|
||||||
ctrdutil "github.com/containerd/containerd/pkg/cri/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -141,7 +140,7 @@ func (em *eventMonitor) startSandboxExitMonitor(ctx context.Context, id string,
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
} else if err != store.ErrNotExist {
|
} else if !errdefs.IsNotFound(err) {
|
||||||
return errors.Wrapf(err, "failed to get sandbox %s", e.ID)
|
return errors.Wrapf(err, "failed to get sandbox %s", e.ID)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -192,7 +191,7 @@ func (em *eventMonitor) startContainerExitMonitor(ctx context.Context, id string
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
} else if err != store.ErrNotExist {
|
} else if !errdefs.IsNotFound(err) {
|
||||||
return errors.Wrapf(err, "failed to get container %s", e.ID)
|
return errors.Wrapf(err, "failed to get container %s", e.ID)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -318,7 +317,7 @@ func (em *eventMonitor) handleEvent(any interface{}) error {
|
|||||||
return errors.Wrap(err, "failed to handle container TaskExit event")
|
return errors.Wrap(err, "failed to handle container TaskExit event")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
} else if err != store.ErrNotExist {
|
} else if !errdefs.IsNotFound(err) {
|
||||||
return errors.Wrap(err, "can't find container for TaskExit event")
|
return errors.Wrap(err, "can't find container for TaskExit event")
|
||||||
}
|
}
|
||||||
sb, err := em.c.sandboxStore.Get(e.ID)
|
sb, err := em.c.sandboxStore.Get(e.ID)
|
||||||
@ -327,7 +326,7 @@ func (em *eventMonitor) handleEvent(any interface{}) error {
|
|||||||
return errors.Wrap(err, "failed to handle sandbox TaskExit event")
|
return errors.Wrap(err, "failed to handle sandbox TaskExit event")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
} else if err != store.ErrNotExist {
|
} else if !errdefs.IsNotFound(err) {
|
||||||
return errors.Wrap(err, "can't find sandbox for TaskExit event")
|
return errors.Wrap(err, "can't find sandbox for TaskExit event")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -336,7 +335,7 @@ func (em *eventMonitor) handleEvent(any interface{}) error {
|
|||||||
// For TaskOOM, we only care which container it belongs to.
|
// For TaskOOM, we only care which container it belongs to.
|
||||||
cntr, err := em.c.containerStore.Get(e.ContainerID)
|
cntr, err := em.c.containerStore.Get(e.ContainerID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != store.ErrNotExist {
|
if !errdefs.IsNotFound(err) {
|
||||||
return errors.Wrap(err, "can't find container for TaskOOM event")
|
return errors.Wrap(err, "can't find container for TaskOOM event")
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
@ -23,26 +23,26 @@ import (
|
|||||||
"strconv"
|
"strconv"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
runhcsoptions "github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"
|
|
||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/containers"
|
"github.com/containerd/containerd/containers"
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
criconfig "github.com/containerd/containerd/pkg/cri/config"
|
||||||
|
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
||||||
|
imagestore "github.com/containerd/containerd/pkg/cri/store/image"
|
||||||
|
sandboxstore "github.com/containerd/containerd/pkg/cri/store/sandbox"
|
||||||
|
runtimeoptions "github.com/containerd/containerd/pkg/runtimeoptions/v1"
|
||||||
"github.com/containerd/containerd/plugin"
|
"github.com/containerd/containerd/plugin"
|
||||||
"github.com/containerd/containerd/reference/docker"
|
"github.com/containerd/containerd/reference/docker"
|
||||||
"github.com/containerd/containerd/runtime/linux/runctypes"
|
"github.com/containerd/containerd/runtime/linux/runctypes"
|
||||||
runcoptions "github.com/containerd/containerd/runtime/v2/runc/options"
|
runcoptions "github.com/containerd/containerd/runtime/v2/runc/options"
|
||||||
"github.com/containerd/typeurl"
|
"github.com/containerd/typeurl"
|
||||||
|
|
||||||
|
runhcsoptions "github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"
|
||||||
imagedigest "github.com/opencontainers/go-digest"
|
imagedigest "github.com/opencontainers/go-digest"
|
||||||
"github.com/pelletier/go-toml"
|
"github.com/pelletier/go-toml"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
criconfig "github.com/containerd/containerd/pkg/cri/config"
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
|
||||||
imagestore "github.com/containerd/containerd/pkg/cri/store/image"
|
|
||||||
sandboxstore "github.com/containerd/containerd/pkg/cri/store/sandbox"
|
|
||||||
runtimeoptions "github.com/containerd/containerd/pkg/runtimeoptions/v1"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
@ -222,7 +222,7 @@ func getUserFromImage(user string) (*int64, string) {
|
|||||||
// pulled yet, the function will pull the image.
|
// pulled yet, the function will pull the image.
|
||||||
func (c *criService) ensureImageExists(ctx context.Context, ref string, config *runtime.PodSandboxConfig) (*imagestore.Image, error) {
|
func (c *criService) ensureImageExists(ctx context.Context, ref string, config *runtime.PodSandboxConfig) (*imagestore.Image, error) {
|
||||||
image, err := c.localResolve(ref)
|
image, err := c.localResolve(ref)
|
||||||
if err != nil && err != store.ErrNotExist {
|
if err != nil && !errdefs.IsNotFound(err) {
|
||||||
return nil, errors.Wrapf(err, "failed to get image %q", ref)
|
return nil, errors.Wrapf(err, "failed to get image %q", ref)
|
||||||
}
|
}
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
@ -22,21 +22,21 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/oci"
|
"github.com/containerd/containerd/oci"
|
||||||
|
criconfig "github.com/containerd/containerd/pkg/cri/config"
|
||||||
|
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
||||||
|
imagestore "github.com/containerd/containerd/pkg/cri/store/image"
|
||||||
"github.com/containerd/containerd/plugin"
|
"github.com/containerd/containerd/plugin"
|
||||||
"github.com/containerd/containerd/reference/docker"
|
"github.com/containerd/containerd/reference/docker"
|
||||||
"github.com/containerd/containerd/runtime/linux/runctypes"
|
"github.com/containerd/containerd/runtime/linux/runctypes"
|
||||||
runcoptions "github.com/containerd/containerd/runtime/v2/runc/options"
|
runcoptions "github.com/containerd/containerd/runtime/v2/runc/options"
|
||||||
|
|
||||||
imagedigest "github.com/opencontainers/go-digest"
|
imagedigest "github.com/opencontainers/go-digest"
|
||||||
runtimespec "github.com/opencontainers/runtime-spec/specs-go"
|
runtimespec "github.com/opencontainers/runtime-spec/specs-go"
|
||||||
"github.com/pelletier/go-toml"
|
"github.com/pelletier/go-toml"
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"github.com/stretchr/testify/require"
|
"github.com/stretchr/testify/require"
|
||||||
|
|
||||||
criconfig "github.com/containerd/containerd/pkg/cri/config"
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
containerstore "github.com/containerd/containerd/pkg/cri/store/container"
|
|
||||||
imagestore "github.com/containerd/containerd/pkg/cri/store/image"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// TestGetUserFromImage tests the logic of getting image uid or user name of image user.
|
// TestGetUserFromImage tests the logic of getting image uid or user name of image user.
|
||||||
@ -189,7 +189,7 @@ func TestLocalResolve(t *testing.T) {
|
|||||||
assert.Equal(t, image, img)
|
assert.Equal(t, image, img)
|
||||||
}
|
}
|
||||||
img, err := c.localResolve("randomid")
|
img, err := c.localResolve("randomid")
|
||||||
assert.Equal(t, store.ErrNotExist, err)
|
assert.Equal(t, errdefs.IsNotFound(err), true)
|
||||||
assert.Equal(t, imagestore.Image{}, img)
|
assert.Equal(t, imagestore.Image{}, img)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,11 +19,10 @@ package server
|
|||||||
import (
|
import (
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/images"
|
"github.com/containerd/containerd/images"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// RemoveImage removes the image.
|
// RemoveImage removes the image.
|
||||||
@ -35,7 +34,7 @@ import (
|
|||||||
func (c *criService) RemoveImage(ctx context.Context, r *runtime.RemoveImageRequest) (*runtime.RemoveImageResponse, error) {
|
func (c *criService) RemoveImage(ctx context.Context, r *runtime.RemoveImageRequest) (*runtime.RemoveImageResponse, error) {
|
||||||
image, err := c.localResolve(r.GetImage().GetImage())
|
image, err := c.localResolve(r.GetImage().GetImage())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == store.ErrNotExist {
|
if errdefs.IsNotFound(err) {
|
||||||
// return empty without error when image not found.
|
// return empty without error when image not found.
|
||||||
return &runtime.RemoveImageResponse{}, nil
|
return &runtime.RemoveImageResponse{}, nil
|
||||||
}
|
}
|
||||||
|
@ -19,14 +19,14 @@ package server
|
|||||||
import (
|
import (
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
|
imagestore "github.com/containerd/containerd/pkg/cri/store/image"
|
||||||
|
|
||||||
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
|
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
imagestore "github.com/containerd/containerd/pkg/cri/store/image"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ImageStatus returns the status of the image, returns nil if the image isn't present.
|
// ImageStatus returns the status of the image, returns nil if the image isn't present.
|
||||||
@ -35,7 +35,7 @@ import (
|
|||||||
func (c *criService) ImageStatus(ctx context.Context, r *runtime.ImageStatusRequest) (*runtime.ImageStatusResponse, error) {
|
func (c *criService) ImageStatus(ctx context.Context, r *runtime.ImageStatusRequest) (*runtime.ImageStatusResponse, error) {
|
||||||
image, err := c.localResolve(r.GetImage().GetImage())
|
image, err := c.localResolve(r.GetImage().GetImage())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == store.ErrNotExist {
|
if errdefs.IsNotFound(err) {
|
||||||
// return empty without error when image not found.
|
// return empty without error when image not found.
|
||||||
return &runtime.ImageStatusResponse{}, nil
|
return &runtime.ImageStatusResponse{}, nil
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,11 @@ import (
|
|||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/log"
|
"github.com/containerd/containerd/log"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
"golang.org/x/net/context"
|
"golang.org/x/net/context"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// RemovePodSandbox removes the sandbox. If there are running containers in the
|
// RemovePodSandbox removes the sandbox. If there are running containers in the
|
||||||
@ -33,7 +32,7 @@ import (
|
|||||||
func (c *criService) RemovePodSandbox(ctx context.Context, r *runtime.RemovePodSandboxRequest) (*runtime.RemovePodSandboxResponse, error) {
|
func (c *criService) RemovePodSandbox(ctx context.Context, r *runtime.RemovePodSandboxRequest) (*runtime.RemovePodSandboxResponse, error) {
|
||||||
sandbox, err := c.sandboxStore.Get(r.GetPodSandboxId())
|
sandbox, err := c.sandboxStore.Get(r.GetPodSandboxId())
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != store.ErrNotExist {
|
if !errdefs.IsNotFound(err) {
|
||||||
return nil, errors.Wrapf(err, "an error occurred when try to find sandbox %q",
|
return nil, errors.Wrapf(err, "an error occurred when try to find sandbox %q",
|
||||||
r.GetPodSandboxId())
|
r.GetPodSandboxId())
|
||||||
}
|
}
|
||||||
|
@ -20,12 +20,13 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/pkg/cri/store/label"
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/pkg/cri/store/truncindex"
|
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
|
||||||
|
|
||||||
cio "github.com/containerd/containerd/pkg/cri/io"
|
cio "github.com/containerd/containerd/pkg/cri/io"
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
"github.com/containerd/containerd/pkg/cri/store"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/store/label"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/store/truncindex"
|
||||||
|
|
||||||
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Container contains all resources associated with the container. All methods to
|
// Container contains all resources associated with the container. All methods to
|
||||||
@ -124,7 +125,7 @@ func (s *Store) Add(c Container) error {
|
|||||||
s.lock.Lock()
|
s.lock.Lock()
|
||||||
defer s.lock.Unlock()
|
defer s.lock.Unlock()
|
||||||
if _, ok := s.containers[c.ID]; ok {
|
if _, ok := s.containers[c.ID]; ok {
|
||||||
return store.ErrAlreadyExist
|
return errdefs.ErrAlreadyExists
|
||||||
}
|
}
|
||||||
if err := s.labels.Reserve(c.ProcessLabel); err != nil {
|
if err := s.labels.Reserve(c.ProcessLabel); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -144,14 +145,14 @@ func (s *Store) Get(id string) (Container, error) {
|
|||||||
id, err := s.idIndex.Get(id)
|
id, err := s.idIndex.Get(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == truncindex.ErrNotExist {
|
if err == truncindex.ErrNotExist {
|
||||||
err = store.ErrNotExist
|
err = errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
return Container{}, err
|
return Container{}, err
|
||||||
}
|
}
|
||||||
if c, ok := s.containers[id]; ok {
|
if c, ok := s.containers[id]; ok {
|
||||||
return c, nil
|
return c, nil
|
||||||
}
|
}
|
||||||
return Container{}, store.ErrNotExist
|
return Container{}, errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
// List lists all containers.
|
// List lists all containers.
|
||||||
|
@ -21,13 +21,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
cio "github.com/containerd/containerd/pkg/cri/io"
|
||||||
"github.com/containerd/containerd/pkg/cri/store/label"
|
"github.com/containerd/containerd/pkg/cri/store/label"
|
||||||
|
|
||||||
"github.com/opencontainers/selinux/go-selinux"
|
"github.com/opencontainers/selinux/go-selinux"
|
||||||
assertlib "github.com/stretchr/testify/assert"
|
assertlib "github.com/stretchr/testify/assert"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
cio "github.com/containerd/containerd/pkg/cri/io"
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestContainerStore(t *testing.T) {
|
func TestContainerStore(t *testing.T) {
|
||||||
@ -183,7 +183,7 @@ func TestContainerStore(t *testing.T) {
|
|||||||
truncID := genTruncIndex(testID)
|
truncID := genTruncIndex(testID)
|
||||||
|
|
||||||
t.Logf("add should return already exists error for duplicated container")
|
t.Logf("add should return already exists error for duplicated container")
|
||||||
assert.Equal(store.ErrAlreadyExist, s.Add(v))
|
assert.Equal(errdefs.ErrAlreadyExists, s.Add(v))
|
||||||
|
|
||||||
t.Logf("should be able to delete container")
|
t.Logf("should be able to delete container")
|
||||||
s.Delete(truncID)
|
s.Delete(truncID)
|
||||||
@ -194,7 +194,7 @@ func TestContainerStore(t *testing.T) {
|
|||||||
t.Logf("get should return not exist error after deletion")
|
t.Logf("get should return not exist error after deletion")
|
||||||
c, err := s.Get(truncID)
|
c, err := s.Get(truncID)
|
||||||
assert.Equal(Container{}, c)
|
assert.Equal(Container{}, c)
|
||||||
assert.Equal(store.ErrNotExist, err)
|
assert.Equal(errdefs.ErrNotFound, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if selinux.GetEnabled() {
|
if selinux.GetEnabled() {
|
||||||
|
@ -19,14 +19,14 @@ package store
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
|
||||||
"google.golang.org/grpc/codes"
|
"google.golang.org/grpc/codes"
|
||||||
"google.golang.org/grpc/status"
|
"google.golang.org/grpc/status"
|
||||||
|
|
||||||
"github.com/containerd/containerd/errdefs"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestStoreErrAlreadyExistGRPCStatus(t *testing.T) {
|
func TestStoreErrAlreadyExistGRPCStatus(t *testing.T) {
|
||||||
err := errdefs.ToGRPC(ErrAlreadyExist)
|
err := errdefs.ToGRPC(errdefs.ErrAlreadyExists)
|
||||||
s, ok := status.FromError(err)
|
s, ok := status.FromError(err)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("failed to convert err: %v to status: %d", err, codes.AlreadyExists)
|
t.Fatalf("failed to convert err: %v to status: %d", err, codes.AlreadyExists)
|
||||||
@ -37,7 +37,7 @@ func TestStoreErrAlreadyExistGRPCStatus(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestStoreErrNotExistGRPCStatus(t *testing.T) {
|
func TestStoreErrNotExistGRPCStatus(t *testing.T) {
|
||||||
err := errdefs.ToGRPC(ErrNotExist)
|
err := errdefs.ToGRPC(errdefs.ErrNotFound)
|
||||||
s, ok := status.FromError(err)
|
s, ok := status.FromError(err)
|
||||||
if !ok {
|
if !ok {
|
||||||
t.Fatalf("failed to convert err: %v to status: %d", err, codes.NotFound)
|
t.Fatalf("failed to convert err: %v to status: %d", err, codes.NotFound)
|
||||||
|
@ -24,14 +24,13 @@ import (
|
|||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
"github.com/containerd/containerd/content"
|
"github.com/containerd/containerd/content"
|
||||||
"github.com/containerd/containerd/errdefs"
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/util"
|
||||||
|
|
||||||
imagedigest "github.com/opencontainers/go-digest"
|
imagedigest "github.com/opencontainers/go-digest"
|
||||||
"github.com/opencontainers/go-digest/digestset"
|
"github.com/opencontainers/go-digest/digestset"
|
||||||
imageidentity "github.com/opencontainers/image-spec/identity"
|
imageidentity "github.com/opencontainers/image-spec/identity"
|
||||||
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
|
imagespec "github.com/opencontainers/image-spec/specs-go/v1"
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
|
|
||||||
storeutil "github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
"github.com/containerd/containerd/pkg/cri/util"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Image contains all resources associated with the image. All fields
|
// Image contains all resources associated with the image. All fields
|
||||||
@ -159,7 +158,7 @@ func (s *Store) Resolve(ref string) (string, error) {
|
|||||||
defer s.lock.RUnlock()
|
defer s.lock.RUnlock()
|
||||||
id, ok := s.refCache[ref]
|
id, ok := s.refCache[ref]
|
||||||
if !ok {
|
if !ok {
|
||||||
return "", storeutil.ErrNotExist
|
return "", errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
return id, nil
|
return id, nil
|
||||||
}
|
}
|
||||||
@ -222,14 +221,14 @@ func (s *store) get(id string) (Image, error) {
|
|||||||
digest, err := s.digestSet.Lookup(id)
|
digest, err := s.digestSet.Lookup(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == digestset.ErrDigestNotFound {
|
if err == digestset.ErrDigestNotFound {
|
||||||
err = storeutil.ErrNotExist
|
err = errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
return Image{}, err
|
return Image{}, err
|
||||||
}
|
}
|
||||||
if i, ok := s.images[digest.String()]; ok {
|
if i, ok := s.images[digest.String()]; ok {
|
||||||
return i, nil
|
return i, nil
|
||||||
}
|
}
|
||||||
return Image{}, storeutil.ErrNotExist
|
return Image{}, errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *store) delete(id, ref string) {
|
func (s *store) delete(id, ref string) {
|
||||||
|
@ -21,10 +21,10 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
|
||||||
"github.com/opencontainers/go-digest/digestset"
|
"github.com/opencontainers/go-digest/digestset"
|
||||||
assertlib "github.com/stretchr/testify/assert"
|
assertlib "github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
storeutil "github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInternalStore(t *testing.T) {
|
func TestInternalStore(t *testing.T) {
|
||||||
@ -128,7 +128,7 @@ func TestInternalStore(t *testing.T) {
|
|||||||
t.Logf("should be able to delete image")
|
t.Logf("should be able to delete image")
|
||||||
s.delete(truncID, newRef)
|
s.delete(truncID, newRef)
|
||||||
got, err = s.get(truncID)
|
got, err = s.get(truncID)
|
||||||
assert.Equal(storeutil.ErrNotExist, err)
|
assert.Equal(errdefs.ErrNotFound, err)
|
||||||
assert.Equal(Image{}, got)
|
assert.Equal(Image{}, got)
|
||||||
|
|
||||||
imageNum--
|
imageNum--
|
||||||
@ -241,7 +241,7 @@ func TestImageStore(t *testing.T) {
|
|||||||
if test.image == nil {
|
if test.image == nil {
|
||||||
// Shouldn't be able to index by removed ref.
|
// Shouldn't be able to index by removed ref.
|
||||||
id, err := s.Resolve(test.ref)
|
id, err := s.Resolve(test.ref)
|
||||||
assert.Equal(storeutil.ErrNotExist, err)
|
assert.Equal(errdefs.ErrNotFound, err)
|
||||||
assert.Empty(id)
|
assert.Empty(id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -20,10 +20,10 @@ import (
|
|||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
"github.com/containerd/containerd"
|
"github.com/containerd/containerd"
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
|
"github.com/containerd/containerd/pkg/cri/store"
|
||||||
"github.com/containerd/containerd/pkg/cri/store/label"
|
"github.com/containerd/containerd/pkg/cri/store/label"
|
||||||
"github.com/containerd/containerd/pkg/cri/store/truncindex"
|
"github.com/containerd/containerd/pkg/cri/store/truncindex"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
"github.com/containerd/containerd/pkg/netns"
|
"github.com/containerd/containerd/pkg/netns"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -80,7 +80,7 @@ func (s *Store) Add(sb Sandbox) error {
|
|||||||
s.lock.Lock()
|
s.lock.Lock()
|
||||||
defer s.lock.Unlock()
|
defer s.lock.Unlock()
|
||||||
if _, ok := s.sandboxes[sb.ID]; ok {
|
if _, ok := s.sandboxes[sb.ID]; ok {
|
||||||
return store.ErrAlreadyExist
|
return errdefs.ErrAlreadyExists
|
||||||
}
|
}
|
||||||
if err := s.labels.Reserve(sb.ProcessLabel); err != nil {
|
if err := s.labels.Reserve(sb.ProcessLabel); err != nil {
|
||||||
return err
|
return err
|
||||||
@ -100,14 +100,14 @@ func (s *Store) Get(id string) (Sandbox, error) {
|
|||||||
id, err := s.idIndex.Get(id)
|
id, err := s.idIndex.Get(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err == truncindex.ErrNotExist {
|
if err == truncindex.ErrNotExist {
|
||||||
err = store.ErrNotExist
|
err = errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
return Sandbox{}, err
|
return Sandbox{}, err
|
||||||
}
|
}
|
||||||
if sb, ok := s.sandboxes[id]; ok {
|
if sb, ok := s.sandboxes[id]; ok {
|
||||||
return sb, nil
|
return sb, nil
|
||||||
}
|
}
|
||||||
return Sandbox{}, store.ErrNotExist
|
return Sandbox{}, errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
// List lists all sandboxes.
|
// List lists all sandboxes.
|
||||||
|
@ -19,11 +19,11 @@ package sandbox
|
|||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
"github.com/containerd/containerd/pkg/cri/store/label"
|
"github.com/containerd/containerd/pkg/cri/store/label"
|
||||||
|
|
||||||
assertlib "github.com/stretchr/testify/assert"
|
assertlib "github.com/stretchr/testify/assert"
|
||||||
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSandboxStore(t *testing.T) {
|
func TestSandboxStore(t *testing.T) {
|
||||||
@ -140,7 +140,7 @@ func TestSandboxStore(t *testing.T) {
|
|||||||
truncID := genTruncIndex(testID)
|
truncID := genTruncIndex(testID)
|
||||||
|
|
||||||
t.Logf("add should return already exists error for duplicated sandbox")
|
t.Logf("add should return already exists error for duplicated sandbox")
|
||||||
assert.Equal(store.ErrAlreadyExist, s.Add(v))
|
assert.Equal(errdefs.ErrAlreadyExists, s.Add(v))
|
||||||
|
|
||||||
t.Logf("should be able to delete sandbox")
|
t.Logf("should be able to delete sandbox")
|
||||||
s.Delete(truncID)
|
s.Delete(truncID)
|
||||||
@ -151,6 +151,6 @@ func TestSandboxStore(t *testing.T) {
|
|||||||
t.Logf("get should return not exist error after deletion")
|
t.Logf("get should return not exist error after deletion")
|
||||||
sb, err := s.Get(truncID)
|
sb, err := s.Get(truncID)
|
||||||
assert.Equal(Sandbox{}, sb)
|
assert.Equal(Sandbox{}, sb)
|
||||||
assert.Equal(store.ErrNotExist, err)
|
assert.Equal(errdefs.ErrNotFound, err)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,9 +19,8 @@ package snapshot
|
|||||||
import (
|
import (
|
||||||
"sync"
|
"sync"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
snapshot "github.com/containerd/containerd/snapshots"
|
snapshot "github.com/containerd/containerd/snapshots"
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// Snapshot contains the information about the snapshot.
|
// Snapshot contains the information about the snapshot.
|
||||||
@ -65,7 +64,7 @@ func (s *Store) Get(key string) (Snapshot, error) {
|
|||||||
if sn, ok := s.snapshots[key]; ok {
|
if sn, ok := s.snapshots[key]; ok {
|
||||||
return sn, nil
|
return sn, nil
|
||||||
}
|
}
|
||||||
return Snapshot{}, store.ErrNotExist
|
return Snapshot{}, errdefs.ErrNotFound
|
||||||
}
|
}
|
||||||
|
|
||||||
// List lists all snapshots.
|
// List lists all snapshots.
|
||||||
|
@ -20,10 +20,10 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/containerd/containerd/errdefs"
|
||||||
snapshot "github.com/containerd/containerd/snapshots"
|
snapshot "github.com/containerd/containerd/snapshots"
|
||||||
assertlib "github.com/stretchr/testify/assert"
|
|
||||||
|
|
||||||
"github.com/containerd/containerd/pkg/cri/store"
|
assertlib "github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestSnapshotStore(t *testing.T) {
|
func TestSnapshotStore(t *testing.T) {
|
||||||
@ -80,5 +80,5 @@ func TestSnapshotStore(t *testing.T) {
|
|||||||
t.Logf("get should return empty struct and ErrNotExist after deletion")
|
t.Logf("get should return empty struct and ErrNotExist after deletion")
|
||||||
sn, err := s.Get(testKey)
|
sn, err := s.Get(testKey)
|
||||||
assert.Equal(Snapshot{}, sn)
|
assert.Equal(Snapshot{}, sn)
|
||||||
assert.Equal(store.ErrNotExist, err)
|
assert.Equal(errdefs.ErrNotFound, err)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user