本文整理汇总了Golang中github.com/docker/docker/errors.NewRequestNotFoundError函数的典型用法代码示例。如果您正苦于以下问题:Golang NewRequestNotFoundError函数的具体用法?Golang NewRequestNotFoundError怎么用?Golang NewRequestNotFoundError使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了NewRequestNotFoundError函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: getImageConfigFromCache
// Retrieve the image metadata from the image cache.
func getImageConfigFromCache(image string) (*metadata.ImageConfig, error) {
// Use docker reference code to validate the id's format
digest, named, err := reference.ParseIDOrReference(image)
if err != nil {
return nil, err
}
// Try to get the image config from our image cache
imageCache := ImageCache()
if digest != "" {
config, err := imageCache.GetImageByDigest(digest)
if err != nil {
log.Errorf("Inspect lookup failed for image %s: %s. Returning no such image.", image, err)
return nil, derr.NewRequestNotFoundError(fmt.Errorf("No such image: %s", image))
}
if config != nil {
return config, nil
}
} else {
config, err := imageCache.GetImageByNamed(named)
if err != nil {
log.Errorf("Inspect lookup failed for image %s: %s. Returning no such image.", image, err)
return nil, derr.NewRequestNotFoundError(fmt.Errorf("No such image: %s", image))
}
if config != nil {
return config, nil
}
}
return nil, derr.NewRequestNotFoundError(fmt.Errorf("No such image: %s", image))
}
示例2: GetContainer
// GetContainer looks for a container using the provided information, which could be
// one of the following inputs from the caller:
// - A full container ID, which will exact match a container in daemon's list
// - A container name, which will only exact match via the GetByName() function
// - A partial container ID prefix (e.g. short ID) of any length that is
// unique enough to only return a single container object
// If none of these searches succeed, an error is returned
func (daemon *Daemon) GetContainer(prefixOrName string) (*container.Container, error) {
if len(prefixOrName) == 0 {
return nil, errors.NewBadRequestError(fmt.Errorf("No container name or ID supplied"))
}
if containerByID := daemon.containers.Get(prefixOrName); containerByID != nil {
// prefix is an exact match to a full container ID
return containerByID, nil
}
// GetByName will match only an exact name provided; we ignore errors
if containerByName, _ := daemon.GetByName(prefixOrName); containerByName != nil {
// prefix is an exact match to a full container Name
return containerByName, nil
}
containerID, indexError := daemon.idIndex.Get(prefixOrName)
if indexError != nil {
// When truncindex defines an error type, use that instead
if indexError == truncindex.ErrNotExist {
err := fmt.Errorf("No such container: %s", prefixOrName)
return nil, errors.NewRequestNotFoundError(err)
}
return nil, indexError
}
return daemon.containers.Get(containerID), nil
}
示例3: ContainerRunning
// ContainerRunning returns true if the given container is running
func (c *ContainerProxy) ContainerRunning(vc *viccontainer.VicContainer) (bool, error) {
defer trace.End(trace.Begin(""))
if c.client == nil {
return false, derr.NewErrorWithStatusCode(fmt.Errorf("ContainerProxy.CommitContainerHandle failed to create a portlayer client"),
http.StatusInternalServerError)
}
results, err := c.client.Containers.GetContainerInfo(containers.NewGetContainerInfoParamsWithContext(ctx).WithID(vc.ContainerID))
if err != nil {
switch err := err.(type) {
case *containers.GetContainerInfoNotFound:
return false, derr.NewRequestNotFoundError(fmt.Errorf("No such container: %s", vc.ContainerID))
case *containers.GetContainerInfoInternalServerError:
return false, derr.NewErrorWithStatusCode(fmt.Errorf("Error from portlayer: %#v", err.Payload), http.StatusInternalServerError)
default:
return false, derr.NewErrorWithStatusCode(fmt.Errorf("Unknown error from the container portlayer"), http.StatusInternalServerError)
}
}
inspectJSON, err := ContainerInfoToDockerContainerInspect(vc, results.Payload, c.portlayerName)
if err != nil {
log.Errorf("containerInfoToDockerContainerInspect failed with %s", err)
return false, err
}
return inspectJSON.State.Running, nil
}
示例4: VolumeRm
// VolumeRm : docker personality for VIC
func (v *Volume) VolumeRm(name string) error {
defer trace.End(trace.Begin("Volume.VolumeRm"))
client := PortLayerClient()
if client == nil {
return derr.NewErrorWithStatusCode(fmt.Errorf("Failed to get a portlayer client"), http.StatusInternalServerError)
}
// FIXME: check whether this is a name or a UUID. UUID expected for now.
_, err := client.Storage.RemoveVolume(storage.NewRemoveVolumeParamsWithContext(ctx).WithName(name))
if err != nil {
switch err := err.(type) {
case *storage.RemoveVolumeNotFound:
return derr.NewRequestNotFoundError(fmt.Errorf("Get %s: no such volume", name))
case *storage.RemoveVolumeConflict:
return derr.NewRequestConflictError(fmt.Errorf(err.Payload.Message))
case *storage.RemoveVolumeInternalServerError:
return derr.NewErrorWithStatusCode(fmt.Errorf("Server error from portlayer: %s", err.Payload.Message), http.StatusInternalServerError)
default:
return derr.NewErrorWithStatusCode(fmt.Errorf("Server error from portlayer: %s", err), http.StatusInternalServerError)
}
}
return nil
}
示例5: GetImage
// GetImage parses input to retrieve a cached image
func (ic *ICache) GetImage(idOrRef string) (*metadata.ImageConfig, error) {
ic.m.RLock()
defer ic.m.RUnlock()
// get the full image ID if supplied a prefix
if id, err := ic.idIndex.Get(idOrRef); err == nil {
idOrRef = id
}
digest, named, err := reference.ParseIDOrReference(idOrRef)
if err != nil {
return nil, err
}
var config *metadata.ImageConfig
if digest != "" {
config, err = ic.getImageByDigest(digest)
if err != nil {
return nil, err
}
} else {
config, err = ic.getImageByNamed(named)
if err != nil {
return nil, err
}
}
if config == nil {
return nil, derr.NewRequestNotFoundError(fmt.Errorf("No such image: %s", idOrRef))
}
return copyImageConfig(config), nil
}
示例6: getImageByDigest
func (ic *ICache) getImageByDigest(digest digest.Digest) (*metadata.ImageConfig, error) {
var config *metadata.ImageConfig
config, ok := ic.cacheByID[string(digest)]
if !ok {
return nil, derr.NewRequestNotFoundError(fmt.Errorf("No such image: %s", digest))
}
return copyImageConfig(config), nil
}
示例7: MockCreateHandleData
func MockCreateHandleData() []CreateHandleMockData {
createHandleTimeoutErr := client.NewAPIError("unknown error", "context deadline exceeded", http.StatusServiceUnavailable)
mockCreateHandleData := []CreateHandleMockData{
{"busybox", "321cba", "handle", nil, ""},
{"busybox", "", "", derr.NewRequestNotFoundError(fmt.Errorf("No such image: abc123")), "No such image"},
{"busybox", "", "", derr.NewErrorWithStatusCode(createHandleTimeoutErr, http.StatusInternalServerError), "context deadline exceeded"},
}
return mockCreateHandleData
}
示例8: MockCommitData
func MockCommitData() []CommitHandleMockData {
noSuchImageErr := fmt.Errorf("No such image: busybox")
mockCommitData := []CommitHandleMockData{
{"buxybox", "", nil},
{"busybox", "failed to create a portlayer", derr.NewErrorWithStatusCode(fmt.Errorf("container.ContainerCreate failed to create a portlayer client"), http.StatusInternalServerError)},
{"busybox", "No such image", derr.NewRequestNotFoundError(noSuchImageErr)},
}
return mockCommitData
}
示例9: imageNotExistToErrcode
func (d *Daemon) imageNotExistToErrcode(err error) error {
if dne, isDNE := err.(ErrImageDoesNotExist); isDNE {
if strings.Contains(dne.RefOrID, "@") {
e := fmt.Errorf("No such image: %s", dne.RefOrID)
return errors.NewRequestNotFoundError(e)
}
tag := reference.DefaultTag
ref, err := reference.ParseNamed(dne.RefOrID)
if err != nil {
e := fmt.Errorf("No such image: %s:%s", dne.RefOrID, tag)
return errors.NewRequestNotFoundError(e)
}
if tagged, isTagged := ref.(reference.NamedTagged); isTagged {
tag = tagged.Tag()
}
e := fmt.Errorf("No such image: %s:%s", ref.Name(), tag)
return errors.NewRequestNotFoundError(e)
}
return err
}
示例10: CreateContainerHandle
// CreateContainerHandle creates a new VIC container by calling the portlayer
//
// returns:
// (containerID, containerHandle, error)
func (c *ContainerProxy) CreateContainerHandle(imageID string, config types.ContainerCreateConfig) (string, string, error) {
defer trace.End(trace.Begin(imageID))
if c.client == nil {
return "", "",
derr.NewErrorWithStatusCode(fmt.Errorf("ContainerProxy.CreateContainerHandle failed to create a portlayer client"),
http.StatusInternalServerError)
}
if imageID == "" {
return "", "",
derr.NewRequestNotFoundError(fmt.Errorf("No image specified"))
}
// Call the Exec port layer to create the container
host, err := sys.UUID()
if err != nil {
return "", "",
derr.NewErrorWithStatusCode(fmt.Errorf("ContainerProxy.CreateContainerHandle got unexpected error getting VCH UUID"),
http.StatusInternalServerError)
}
plCreateParams := dockerContainerCreateParamsToPortlayer(config, imageID, host)
createResults, err := c.client.Containers.Create(plCreateParams)
if err != nil {
if _, ok := err.(*containers.CreateNotFound); ok {
cerr := fmt.Errorf("No such image: %s", imageID)
log.Errorf("%s (%s)", cerr, err)
return "", "", derr.NewRequestNotFoundError(cerr)
}
// If we get here, most likely something went wrong with the port layer API server
return "", "",
derr.NewErrorWithStatusCode(err, http.StatusInternalServerError)
}
id := createResults.Payload.ID
h := createResults.Payload.Handle
return id, h, nil
}
示例11: ContainerCreate
// ContainerCreate creates a container.
func (c *Container) ContainerCreate(config types.ContainerCreateConfig) (types.ContainerCreateResponse, error) {
defer trace.End(trace.Begin(""))
var err error
// bail early if container name already exists
if exists := cache.ContainerCache().GetContainer(config.Name); exists != nil {
err := fmt.Errorf("Conflict. The name %q is already in use by container %s. You have to remove (or rename) that container to be able to re use that name.", config.Name, exists.ContainerID)
log.Errorf("%s", err.Error())
return types.ContainerCreateResponse{}, derr.NewRequestConflictError(err)
}
// get the image from the cache
image, err := cache.ImageCache().Get(config.Config.Image)
if err != nil {
// if no image found then error thrown and a pull
// will be initiated by the docker client
log.Errorf("ContainerCreate: image %s error: %s", config.Config.Image, err.Error())
return types.ContainerCreateResponse{}, derr.NewRequestNotFoundError(err)
}
setCreateConfigOptions(config.Config, image.Config)
log.Debugf("config.Config = %+v", config.Config)
if err = validateCreateConfig(&config); err != nil {
return types.ContainerCreateResponse{}, err
}
// Create a container representation in the personality server. This representation
// will be stored in the cache if create succeeds in the port layer.
container, err := createInternalVicContainer(image, &config)
if err != nil {
return types.ContainerCreateResponse{}, err
}
// Create an actualized container in the VIC port layer
id, err := c.containerCreate(container, config)
if err != nil {
return types.ContainerCreateResponse{}, err
}
// Container created ok, save the container id and save the config override from the API
// caller and save this container internal representation in our personality server's cache
copyConfigOverrides(container, config)
container.ContainerID = id
cache.ContainerCache().AddContainer(container)
log.Debugf("Container create - name(%s), containerID(%s), config(%#v), host(%#v)",
container.Name, container.ContainerID, container.Config, container.HostConfig)
return types.ContainerCreateResponse{ID: id}, nil
}
示例12: FindNetwork
func (n *Network) FindNetwork(idName string) (libnetwork.Network, error) {
ok, err := PortLayerClient().Scopes.List(scopes.NewListParamsWithContext(ctx).WithIDName(idName))
if err != nil {
switch err := err.(type) {
case *scopes.ListNotFound:
return nil, derr.NewRequestNotFoundError(fmt.Errorf("network %s not found", idName))
case *scopes.ListDefault:
return nil, derr.NewErrorWithStatusCode(fmt.Errorf(err.Payload.Message), http.StatusInternalServerError)
default:
return nil, derr.NewErrorWithStatusCode(err, http.StatusInternalServerError)
}
}
return &network{cfg: ok.Payload[0]}, nil
}
示例13: DeleteNetwork
func (n *Network) DeleteNetwork(name string) error {
client := PortLayerClient()
if _, err := client.Scopes.DeleteScope(scopes.NewDeleteScopeParamsWithContext(ctx).WithIDName(name)); err != nil {
switch err := err.(type) {
case *scopes.DeleteScopeNotFound:
return derr.NewRequestNotFoundError(fmt.Errorf("network %s not found", name))
case *scopes.DeleteScopeInternalServerError:
return derr.NewErrorWithStatusCode(fmt.Errorf(err.Payload.Message), http.StatusInternalServerError)
default:
return derr.NewErrorWithStatusCode(err, http.StatusInternalServerError)
}
}
return nil
}
示例14: CommitContainerHandle
// CommitContainerHandle() commits any changes to container handle.
//
func (c *ContainerProxy) CommitContainerHandle(handle, imageID string) error {
defer trace.End(trace.Begin(handle))
if c.client == nil {
return derr.NewErrorWithStatusCode(fmt.Errorf("ContainerProxy.CommitContainerHandle failed to create a portlayer client"),
http.StatusInternalServerError)
}
_, err := c.client.Containers.Commit(containers.NewCommitParamsWithContext(ctx).WithHandle(handle))
if err != nil {
cerr := fmt.Errorf("No such image: %s", imageID)
log.Errorf("%s (%s)", cerr, err)
// FIXME: Containers.Commit returns more errors than it's swagger spec says.
// When no image exist, it also sends back non swagger errors. We should fix
// this once Commit returns correct error codes.
return derr.NewRequestNotFoundError(cerr)
}
return nil
}
示例15: VolumeRm
//VolumeRm : docker personality for VIC
func (v *Volume) VolumeRm(name string) error {
defer trace.End(trace.Begin("Volume.VolumeRm"))
client := PortLayerClient()
if client == nil {
return derr.NewErrorWithStatusCode(fmt.Errorf("Failed to get a portlayer client"), http.StatusInternalServerError)
}
//FIXME: check whether this is a name or a UUID. UUID expected for now.
_, err := client.Storage.RemoveVolume(storage.NewRemoveVolumeParams().WithName(name))
if err != nil {
if _, ok := err.(*storage.RemoveVolumeNotFound); ok {
return derr.NewRequestNotFoundError(fmt.Errorf("Get %s: no such volume", name))
}
if _, ok := err.(*storage.RemoveVolumeConflict); ok {
return derr.NewRequestConflictError(fmt.Errorf("Volume is in use"))
}
return derr.NewErrorWithStatusCode(fmt.Errorf("Server error from portlayer: %s", err), http.StatusInternalServerError)
}
return nil
}