-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy patherrors.go
More file actions
74 lines (62 loc) · 2.5 KB
/
Copy patherrors.go
File metadata and controls
74 lines (62 loc) · 2.5 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
// Copyright 2026 The Gopherly Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
package currus
import (
"errors"
"fmt"
cerrdefs "github.com/containerd/errdefs"
)
// Sentinel errors returned by all Engine implementations.
// Use [errors.Is] to compare; all errors may be wrapped.
var (
// ErrNotFound is returned when the requested resource does not exist.
ErrNotFound = errors.New("not found")
// ErrAlreadyExists is returned when a resource already exists and the
// operation requires uniqueness.
ErrAlreadyExists = errors.New("already exists")
// ErrConflict is returned when an operation conflicts with the current
// state of a resource.
ErrConflict = errors.New("conflict")
// ErrNotImplemented is returned by a driver that has not yet implemented
// a particular method of a capability interface.
ErrNotImplemented = errors.New("not implemented")
// ErrUnsupported is returned when the underlying engine does not support
// the requested operation at all.
ErrUnsupported = errors.New("unsupported")
// ErrNoEngine is returned by New when no reachable engine is found.
ErrNoEngine = errors.New("no reachable container engine found")
// ErrInvalidSpec is returned when a ContainerSpec or option field is
// malformed or missing a required value (e.g. an empty Image field).
ErrInvalidSpec = errors.New("invalid container spec")
// ErrDaemonInfo is returned when querying the daemon for system
// information fails during engine initialization.
ErrDaemonInfo = errors.New("daemon info query failed")
)
// mapContainerErr translates containerd/errdefs error types into the sentinel
// taxonomy shared by both the Docker and containerd drivers.
func mapContainerErr(err error) error {
if err == nil {
return nil
}
switch {
case cerrdefs.IsNotFound(err):
return fmt.Errorf("%w: %w", ErrNotFound, err)
case cerrdefs.IsAlreadyExists(err):
return fmt.Errorf("%w: %w", ErrAlreadyExists, err)
case cerrdefs.IsConflict(err):
return fmt.Errorf("%w: %w", ErrConflict, err)
default:
return err
}
}