diff --git a/cmd/ctr/commands/run/run_unix.go b/cmd/ctr/commands/run/run_unix.go index bd10b693e..061dbc439 100644 --- a/cmd/ctr/commands/run/run_unix.go +++ b/cmd/ctr/commands/run/run_unix.go @@ -28,8 +28,6 @@ import ( "strconv" "strings" - "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" - "github.com/container-orchestrated-devices/container-device-interface/pkg/parser" containerd "github.com/containerd/containerd/v2/client" "github.com/containerd/containerd/v2/cmd/ctr/commands" "github.com/containerd/containerd/v2/contrib/apparmor" @@ -45,6 +43,8 @@ import ( "github.com/intel/goresctrl/pkg/blockio" "github.com/opencontainers/runtime-spec/specs-go" "github.com/urfave/cli" + "tags.cncf.io/container-device-interface/pkg/cdi" + "tags.cncf.io/container-device-interface/pkg/parser" ) var platformRunFlags = []cli.Flag{ diff --git a/go.mod b/go.mod index 5606f735e..421a67143 100644 --- a/go.mod +++ b/go.mod @@ -8,7 +8,6 @@ require ( github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20230306123547-8075edf89bb0 github.com/Microsoft/go-winio v0.6.1 github.com/Microsoft/hcsshim v0.12.0-rc.2 - github.com/container-orchestrated-devices/container-device-interface v0.6.1 github.com/containerd/btrfs/v2 v2.0.0 github.com/containerd/cgroups/v3 v3.0.3 github.com/containerd/console v1.0.3 @@ -77,6 +76,7 @@ require ( k8s.io/klog/v2 v2.100.1 k8s.io/kubelet v0.28.2 k8s.io/utils v0.0.0-20230406110748-d93618cff8a2 + tags.cncf.io/container-device-interface v0.6.2 ) require ( @@ -131,4 +131,5 @@ require ( sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect sigs.k8s.io/yaml v1.3.0 // indirect + tags.cncf.io/container-device-interface/specs-go v0.6.0 // indirect ) diff --git a/go.sum b/go.sum index 42b4b47af..bad91f1bd 100644 --- a/go.sum +++ b/go.sum @@ -38,8 +38,6 @@ github.com/cilium/ebpf v0.11.0/go.mod h1:WE7CZAnqOL2RouJ4f1uyNhqr2P4CCvXFIqdRDUg github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4 h1:/inchEIKaYC1Akx+H+gqO04wryn5h75LSazbRlnya1k= -github.com/container-orchestrated-devices/container-device-interface v0.6.1 h1:mz77uJoP8im/4Zins+mPqt677ZMaflhoGaYrRAl5jvA= -github.com/container-orchestrated-devices/container-device-interface v0.6.1/go.mod h1:40T6oW59rFrL/ksiSs7q45GzjGlbvxnA4xaK6cyq+kA= github.com/containerd/btrfs/v2 v2.0.0 h1:FN4wsx7KQrYoLXN7uLP0vBV4oVWHOIKDRQ1G2Z0oL5M= github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= github.com/containerd/cgroups/v3 v3.0.3 h1:S5ByHZ/h9PMe5IOQoN7E+nMc2UcLEM/V48DGDJ9kip0= @@ -548,3 +546,7 @@ sigs.k8s.io/structured-merge-diff/v4 v4.2.3 h1:PRbqxJClWWYMNV1dhaG4NsibJbArud9kF sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= sigs.k8s.io/yaml v1.3.0 h1:a2VclLzOGrwOHDiV8EfBGhvjHvP46CtW5j6POvhYGGo= sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= +tags.cncf.io/container-device-interface v0.6.2 h1:dThE6dtp/93ZDGhqaED2Pu374SOeUkBfuvkLuiTdwzg= +tags.cncf.io/container-device-interface v0.6.2/go.mod h1:Shusyhjs1A5Na/kqPVLL0KqnHQHuunol9LFeUNkuGVE= +tags.cncf.io/container-device-interface/specs-go v0.6.0 h1:V+tJJN6dqu8Vym6p+Ru+K5mJ49WL6Aoc5SJFSY0RLsQ= +tags.cncf.io/container-device-interface/specs-go v0.6.0/go.mod h1:hMAwAbMZyBLdmYqWgYcKH0F/yctNpV3P35f+/088A80= diff --git a/pkg/cri/config/config.go b/pkg/cri/config/config.go index c5b30a4c3..1ae4f1341 100644 --- a/pkg/cri/config/config.go +++ b/pkg/cri/config/config.go @@ -392,11 +392,11 @@ type PluginConfig struct { // EnableCDI indicates to enable injection of the Container Device Interface Specifications // into the OCI config // For more details about CDI and the syntax of CDI Spec files please refer to - // https://github.com/container-orchestrated-devices/container-device-interface. + // https://tags.cncf.io/container-device-interface. EnableCDI bool `toml:"enable_cdi" json:"enableCDI"` // CDISpecDirs is the list of directories to scan for Container Device Interface Specifications // For more details about CDI configuration please refer to - // https://github.com/container-orchestrated-devices/container-device-interface#containerd-configuration + // https://tags.cncf.io/container-device-interface#containerd-configuration CDISpecDirs []string `toml:"cdi_spec_dirs" json:"cdiSpecDirs"` // DrainExecSyncIOTimeout is the maximum duration to wait for ExecSync diff --git a/pkg/cri/opts/spec_linux.go b/pkg/cri/opts/spec_linux.go index 8c0177b4c..d78c99c30 100644 --- a/pkg/cri/opts/spec_linux.go +++ b/pkg/cri/opts/spec_linux.go @@ -26,10 +26,10 @@ import ( "sync" "syscall" - "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" "github.com/containerd/cgroups/v3" "golang.org/x/sys/unix" runtime "k8s.io/cri-api/pkg/apis/runtime/v1" + "tags.cncf.io/container-device-interface/pkg/cdi" "github.com/containerd/containerd/v2/core/containers" "github.com/containerd/containerd/v2/pkg/oci" diff --git a/pkg/cri/server/container_create_linux_test.go b/pkg/cri/server/container_create_linux_test.go index b0f9576af..21ff822f0 100644 --- a/pkg/cri/server/container_create_linux_test.go +++ b/pkg/cri/server/container_create_linux_test.go @@ -25,7 +25,6 @@ import ( "strings" "testing" - "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" "github.com/containerd/containerd/v2/contrib/apparmor" "github.com/containerd/containerd/v2/contrib/seccomp" "github.com/containerd/containerd/v2/core/containers" @@ -38,6 +37,7 @@ import ( "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" runtime "k8s.io/cri-api/pkg/apis/runtime/v1" + "tags.cncf.io/container-device-interface/pkg/cdi" "github.com/containerd/containerd/v2/pkg/cap" "github.com/containerd/containerd/v2/pkg/cri/annotations" diff --git a/pkg/cri/server/service_linux.go b/pkg/cri/server/service_linux.go index 64d1a0d58..fc5a0639b 100644 --- a/pkg/cri/server/service_linux.go +++ b/pkg/cri/server/service_linux.go @@ -19,8 +19,8 @@ package server import ( "fmt" - "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" "github.com/opencontainers/selinux/go-selinux" + "tags.cncf.io/container-device-interface/pkg/cdi" "github.com/containerd/containerd/v2/pkg/cap" "github.com/containerd/containerd/v2/pkg/userns" diff --git a/pkg/oci/spec_opts.go b/pkg/oci/spec_opts.go index 2cbb48f6d..e88a00278 100644 --- a/pkg/oci/spec_opts.go +++ b/pkg/oci/spec_opts.go @@ -28,7 +28,6 @@ import ( "strconv" "strings" - "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" "github.com/containerd/containerd/v2/core/containers" "github.com/containerd/containerd/v2/core/content" "github.com/containerd/containerd/v2/core/images" @@ -40,6 +39,7 @@ import ( "github.com/moby/sys/user" v1 "github.com/opencontainers/image-spec/specs-go/v1" "github.com/opencontainers/runtime-spec/specs-go" + "tags.cncf.io/container-device-interface/pkg/cdi" ) // SpecOpts sets spec specific information to a newly generated OCI spec diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/specs-go/oci.go b/vendor/github.com/container-orchestrated-devices/container-device-interface/specs-go/oci.go deleted file mode 100644 index d709ecbc7..000000000 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/specs-go/oci.go +++ /dev/null @@ -1,113 +0,0 @@ -package specs - -import ( - "errors" - "fmt" - - spec "github.com/opencontainers/runtime-spec/specs-go" -) - -// ApplyOCIEditsForDevice applies devices OCI edits, in other words -// it finds the device in the CDI spec and applies the OCI patches that device -// requires to the OCI specification. -func ApplyOCIEditsForDevice(config *spec.Spec, cdi *Spec, dev string) error { - for _, d := range cdi.Devices { - if d.Name != dev { - continue - } - - return ApplyEditsToOCISpec(config, &d.ContainerEdits) - } - - return fmt.Errorf("CDI: device %q not found for spec %q", dev, cdi.Kind) -} - -// ApplyOCIEdits applies the OCI edits the CDI spec declares globally -func ApplyOCIEdits(config *spec.Spec, cdi *Spec) error { - return ApplyEditsToOCISpec(config, &cdi.ContainerEdits) -} - -// ApplyEditsToOCISpec applies the specified edits to the OCI spec. -func ApplyEditsToOCISpec(config *spec.Spec, edits *ContainerEdits) error { - if config == nil { - return errors.New("spec is nil") - } - if edits == nil { - return nil - } - - if len(edits.Env) > 0 { - if config.Process == nil { - config.Process = &spec.Process{} - } - config.Process.Env = append(config.Process.Env, edits.Env...) - } - - for _, d := range edits.DeviceNodes { - if config.Linux == nil { - config.Linux = &spec.Linux{} - } - config.Linux.Devices = append(config.Linux.Devices, d.ToOCI()) - } - - for _, m := range edits.Mounts { - config.Mounts = append(config.Mounts, m.ToOCI()) - } - - for _, h := range edits.Hooks { - if config.Hooks == nil { - config.Hooks = &spec.Hooks{} - } - switch h.HookName { - case "prestart": - config.Hooks.Prestart = append(config.Hooks.Prestart, h.ToOCI()) - case "createRuntime": - config.Hooks.CreateRuntime = append(config.Hooks.CreateRuntime, h.ToOCI()) - case "createContainer": - config.Hooks.CreateContainer = append(config.Hooks.CreateContainer, h.ToOCI()) - case "startContainer": - config.Hooks.StartContainer = append(config.Hooks.StartContainer, h.ToOCI()) - case "poststart": - config.Hooks.Poststart = append(config.Hooks.Poststart, h.ToOCI()) - case "poststop": - config.Hooks.Poststop = append(config.Hooks.Poststop, h.ToOCI()) - default: - fmt.Printf("CDI: Unknown hook %q\n", h.HookName) - } - } - - return nil -} - -// ToOCI returns the opencontainers runtime Spec Hook for this Hook. -func (h *Hook) ToOCI() spec.Hook { - return spec.Hook{ - Path: h.Path, - Args: h.Args, - Env: h.Env, - Timeout: h.Timeout, - } -} - -// ToOCI returns the opencontainers runtime Spec Mount for this Mount. -func (m *Mount) ToOCI() spec.Mount { - return spec.Mount{ - Source: m.HostPath, - Destination: m.ContainerPath, - Options: m.Options, - Type: m.Type, - } -} - -// ToOCI returns the opencontainers runtime Spec LinuxDevice for this DeviceNode. -func (d *DeviceNode) ToOCI() spec.LinuxDevice { - return spec.LinuxDevice{ - Path: d.Path, - Type: d.Type, - Major: d.Major, - Minor: d.Minor, - FileMode: d.FileMode, - UID: d.UID, - GID: d.GID, - } -} diff --git a/vendor/modules.txt b/vendor/modules.txt index 8112632fe..8694cbbe5 100644 --- a/vendor/modules.txt +++ b/vendor/modules.txt @@ -87,14 +87,6 @@ github.com/cilium/ebpf/internal/sys github.com/cilium/ebpf/internal/tracefs github.com/cilium/ebpf/internal/unix github.com/cilium/ebpf/link -# github.com/container-orchestrated-devices/container-device-interface v0.6.1 -## explicit; go 1.17 -github.com/container-orchestrated-devices/container-device-interface/internal/multierror -github.com/container-orchestrated-devices/container-device-interface/internal/validation -github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s -github.com/container-orchestrated-devices/container-device-interface/pkg/cdi -github.com/container-orchestrated-devices/container-device-interface/pkg/parser -github.com/container-orchestrated-devices/container-device-interface/specs-go # github.com/containerd/btrfs/v2 v2.0.0 ## explicit; go 1.19 github.com/containerd/btrfs/v2 @@ -767,3 +759,13 @@ sigs.k8s.io/structured-merge-diff/v4/value # sigs.k8s.io/yaml v1.3.0 ## explicit; go 1.12 sigs.k8s.io/yaml +# tags.cncf.io/container-device-interface v0.6.2 +## explicit; go 1.19 +tags.cncf.io/container-device-interface/internal/multierror +tags.cncf.io/container-device-interface/internal/validation +tags.cncf.io/container-device-interface/internal/validation/k8s +tags.cncf.io/container-device-interface/pkg/cdi +tags.cncf.io/container-device-interface/pkg/parser +# tags.cncf.io/container-device-interface/specs-go v0.6.0 +## explicit; go 1.19 +tags.cncf.io/container-device-interface/specs-go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/LICENSE b/vendor/tags.cncf.io/container-device-interface/LICENSE similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/LICENSE rename to vendor/tags.cncf.io/container-device-interface/LICENSE diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/internal/multierror/multierror.go b/vendor/tags.cncf.io/container-device-interface/internal/multierror/multierror.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/internal/multierror/multierror.go rename to vendor/tags.cncf.io/container-device-interface/internal/multierror/multierror.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s/objectmeta.go b/vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/objectmeta.go similarity index 95% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s/objectmeta.go rename to vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/objectmeta.go index b8a6487f0..5cf63dabf 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s/objectmeta.go +++ b/vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/objectmeta.go @@ -23,7 +23,7 @@ import ( "fmt" "strings" - "github.com/container-orchestrated-devices/container-device-interface/internal/multierror" + "tags.cncf.io/container-device-interface/internal/multierror" ) // TotalAnnotationSizeLimitB defines the maximum size of all annotations in characters. diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s/validation.go b/vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/validation.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s/validation.go rename to vendor/tags.cncf.io/container-device-interface/internal/validation/k8s/validation.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/validate.go b/vendor/tags.cncf.io/container-device-interface/internal/validation/validate.go similarity index 93% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/validate.go rename to vendor/tags.cncf.io/container-device-interface/internal/validation/validate.go index 59c14c202..5d9b55ff3 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/internal/validation/validate.go +++ b/vendor/tags.cncf.io/container-device-interface/internal/validation/validate.go @@ -20,7 +20,7 @@ import ( "fmt" "strings" - "github.com/container-orchestrated-devices/container-device-interface/internal/validation/k8s" + "tags.cncf.io/container-device-interface/internal/validation/k8s" ) // ValidateSpecAnnotations checks whether spec annotations are valid. diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/annotations.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go similarity index 98% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/annotations.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go index 69b69663c..a38b0f1bc 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/annotations.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/annotations.go @@ -21,7 +21,7 @@ import ( "fmt" "strings" - "github.com/container-orchestrated-devices/container-device-interface/pkg/parser" + "tags.cncf.io/container-device-interface/pkg/parser" ) const ( diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go similarity index 98% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go index 671a44a6f..c807b55fd 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache.go @@ -26,10 +26,10 @@ import ( "strings" "sync" - "github.com/container-orchestrated-devices/container-device-interface/internal/multierror" - cdi "github.com/container-orchestrated-devices/container-device-interface/specs-go" "github.com/fsnotify/fsnotify" oci "github.com/opencontainers/runtime-spec/specs-go" + "tags.cncf.io/container-device-interface/internal/multierror" + cdi "tags.cncf.io/container-device-interface/specs-go" ) // Option is an option to change some aspect of default CDI behavior. diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache_test_unix.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_unix.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache_test_unix.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_unix.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache_test_windows.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_windows.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/cache_test_windows.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/cache_test_windows.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go similarity index 99% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go index 55c748fc4..688ddf78b 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits.go @@ -24,9 +24,9 @@ import ( "sort" "strings" - "github.com/container-orchestrated-devices/container-device-interface/specs-go" oci "github.com/opencontainers/runtime-spec/specs-go" ocigen "github.com/opencontainers/runtime-tools/generate" + "tags.cncf.io/container-device-interface/specs-go" ) const ( diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits_unix.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits_unix.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits_unix.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits_unix.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits_windows.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits_windows.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/container-edits_windows.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/container-edits_windows.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/device.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go similarity index 89% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/device.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go index d93ddd025..00be48dd5 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/device.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/device.go @@ -19,10 +19,10 @@ package cdi import ( "fmt" - "github.com/container-orchestrated-devices/container-device-interface/internal/validation" - "github.com/container-orchestrated-devices/container-device-interface/pkg/parser" - cdi "github.com/container-orchestrated-devices/container-device-interface/specs-go" oci "github.com/opencontainers/runtime-spec/specs-go" + "tags.cncf.io/container-device-interface/internal/validation" + "tags.cncf.io/container-device-interface/pkg/parser" + cdi "tags.cncf.io/container-device-interface/specs-go" ) // Device represents a CDI device of a Spec. diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/doc.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go similarity index 60% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/doc.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go index c5cce0c87..1897ef1fc 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/doc.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/doc.go @@ -2,9 +2,9 @@ // interacting with CDI and consuming CDI devices. // // For more information about Container Device Interface, please refer to -// https://github.com/container-orchestrated-devices/container-device-interface +// https://tags.cncf.io/container-device-interface // -// Container Device Interface +// # Container Device Interface // // Container Device Interface, or CDI for short, provides comprehensive // third party device support for container runtimes. CDI uses vendor @@ -29,7 +29,7 @@ // the vast majority of CDI consumers need. The API should be usable both // by OCI runtime clients and runtime implementations. // -// CDI Registry +// # CDI Registry // // The primary interface to interact with CDI devices is the Registry. It // is essentially a cache of all Specs and devices discovered in standard @@ -37,34 +37,34 @@ // injecting devices into an OCI Spec and refreshing the cache of CDI // Specs and devices. // -// Device Injection +// # Device Injection // // Using the Registry one can inject CDI devices into a container with code // similar to the following snippet: // -// import ( -// "fmt" -// "strings" +// import ( +// "fmt" +// "strings" // -// log "github.com/sirupsen/logrus" +// log "github.com/sirupsen/logrus" // -// "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" -// oci "github.com/opencontainers/runtime-spec/specs-go" -// ) +// "tags.cncf.io/container-device-interface/pkg/cdi" +// oci "github.com/opencontainers/runtime-spec/specs-go" +// ) // -// func injectCDIDevices(spec *oci.Spec, devices []string) error { -// log.Debug("pristine OCI Spec: %s", dumpSpec(spec)) +// func injectCDIDevices(spec *oci.Spec, devices []string) error { +// log.Debug("pristine OCI Spec: %s", dumpSpec(spec)) // -// unresolved, err := cdi.GetRegistry().InjectDevices(spec, devices) -// if err != nil { -// return fmt.Errorf("CDI device injection failed: %w", err) -// } +// unresolved, err := cdi.GetRegistry().InjectDevices(spec, devices) +// if err != nil { +// return fmt.Errorf("CDI device injection failed: %w", err) +// } // -// log.Debug("CDI-updated OCI Spec: %s", dumpSpec(spec)) -// return nil -// } +// log.Debug("CDI-updated OCI Spec: %s", dumpSpec(spec)) +// return nil +// } // -// Cache Refresh +// # Cache Refresh // // By default the CDI Spec cache monitors the configured Spec directories // and automatically refreshes itself when necessary. This behavior can be @@ -85,42 +85,42 @@ // CDI Spec cache is up to date before performing device injection. // A code snippet similar to the following accmplishes that: // -// import ( -// "fmt" -// "strings" +// import ( +// "fmt" +// "strings" // -// log "github.com/sirupsen/logrus" +// log "github.com/sirupsen/logrus" // -// "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" -// oci "github.com/opencontainers/runtime-spec/specs-go" -// ) +// "tags.cncf.io/container-device-interface/pkg/cdi" +// oci "github.com/opencontainers/runtime-spec/specs-go" +// ) // -// func injectCDIDevices(spec *oci.Spec, devices []string) error { -// registry := cdi.GetRegistry() +// func injectCDIDevices(spec *oci.Spec, devices []string) error { +// registry := cdi.GetRegistry() // -// if err := registry.Refresh(); err != nil { -// // Note: -// // It is up to the implementation to decide whether -// // to abort injection on errors. A failed Refresh() -// // does not necessarily render the registry unusable. -// // For instance, a parse error in a Spec file for -// // vendor A does not have any effect on devices of -// // vendor B... -// log.Warnf("pre-injection Refresh() failed: %v", err) -// } +// if err := registry.Refresh(); err != nil { +// // Note: +// // It is up to the implementation to decide whether +// // to abort injection on errors. A failed Refresh() +// // does not necessarily render the registry unusable. +// // For instance, a parse error in a Spec file for +// // vendor A does not have any effect on devices of +// // vendor B... +// log.Warnf("pre-injection Refresh() failed: %v", err) +// } // -// log.Debug("pristine OCI Spec: %s", dumpSpec(spec)) +// log.Debug("pristine OCI Spec: %s", dumpSpec(spec)) // -// unresolved, err := registry.InjectDevices(spec, devices) -// if err != nil { -// return fmt.Errorf("CDI device injection failed: %w", err) -// } +// unresolved, err := registry.InjectDevices(spec, devices) +// if err != nil { +// return fmt.Errorf("CDI device injection failed: %w", err) +// } // -// log.Debug("CDI-updated OCI Spec: %s", dumpSpec(spec)) -// return nil -// } +// log.Debug("CDI-updated OCI Spec: %s", dumpSpec(spec)) +// return nil +// } // -// Generated Spec Files, Multiple Directories, Device Precedence +// # Generated Spec Files, Multiple Directories, Device Precedence // // It is often necessary to generate Spec files dynamically. On some // systems the available or usable set of CDI devices might change @@ -149,7 +149,7 @@ // '/etc/cdi' while all the dynamically generated Spec files, transient // or other, go into '/var/run/cdi'. // -// Spec File Generation +// # Spec File Generation // // CDI offers two functions for writing and removing dynamically generated // Specs from CDI Spec directories. These functions, WriteSpec() and @@ -169,33 +169,35 @@ // code snippet similar to the following: // // import ( -// "fmt" -// ... -// "github.com/container-orchestrated-devices/container-device-interface/specs-go" -// "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" +// +// "fmt" +// ... +// "tags.cncf.io/container-device-interface/specs-go" +// "tags.cncf.io/container-device-interface/pkg/cdi" +// // ) // -// func generateDeviceSpecs() error { -// registry := cdi.GetRegistry() -// spec := &specs.Spec{ -// Version: specs.CurrentVersion, -// Kind: vendor+"/"+class, -// } +// func generateDeviceSpecs() error { +// registry := cdi.GetRegistry() +// spec := &specs.Spec{ +// Version: specs.CurrentVersion, +// Kind: vendor+"/"+class, +// } // -// for _, dev := range enumerateDevices() { -// spec.Devices = append(spec.Devices, specs.Device{ -// Name: dev.Name, -// ContainerEdits: getContainerEditsForDevice(dev), -// }) -// } +// for _, dev := range enumerateDevices() { +// spec.Devices = append(spec.Devices, specs.Device{ +// Name: dev.Name, +// ContainerEdits: getContainerEditsForDevice(dev), +// }) +// } // -// specName, err := cdi.GenerateNameForSpec(spec) -// if err != nil { -// return fmt.Errorf("failed to generate Spec name: %w", err) -// } +// specName, err := cdi.GenerateNameForSpec(spec) +// if err != nil { +// return fmt.Errorf("failed to generate Spec name: %w", err) +// } // -// return registry.SpecDB().WriteSpec(spec, specName) -// } +// return registry.SpecDB().WriteSpec(spec, specName) +// } // // Similarly, generating and later cleaning up transient Spec files can be // done with code fragments similar to the following. These transient Spec @@ -204,53 +206,55 @@ // and removed once that container is removed. // // import ( -// "fmt" -// ... -// "github.com/container-orchestrated-devices/container-device-interface/specs-go" -// "github.com/container-orchestrated-devices/container-device-interface/pkg/cdi" +// +// "fmt" +// ... +// "tags.cncf.io/container-device-interface/specs-go" +// "tags.cncf.io/container-device-interface/pkg/cdi" +// // ) // -// func generateTransientSpec(ctr Container) error { -// registry := cdi.GetRegistry() -// devices := getContainerDevs(ctr, vendor, class) -// spec := &specs.Spec{ -// Version: specs.CurrentVersion, -// Kind: vendor+"/"+class, -// } +// func generateTransientSpec(ctr Container) error { +// registry := cdi.GetRegistry() +// devices := getContainerDevs(ctr, vendor, class) +// spec := &specs.Spec{ +// Version: specs.CurrentVersion, +// Kind: vendor+"/"+class, +// } // -// for _, dev := range devices { -// spec.Devices = append(spec.Devices, specs.Device{ -// // the generated name needs to be unique within the -// // vendor/class domain on the host/node. -// Name: generateUniqueDevName(dev, ctr), -// ContainerEdits: getEditsForContainer(dev), -// }) -// } +// for _, dev := range devices { +// spec.Devices = append(spec.Devices, specs.Device{ +// // the generated name needs to be unique within the +// // vendor/class domain on the host/node. +// Name: generateUniqueDevName(dev, ctr), +// ContainerEdits: getEditsForContainer(dev), +// }) +// } // -// // transientID is expected to guarantee that the Spec file name -// // generated using is unique within -// // the host/node. If more than one device is allocated with the -// // same vendor/class domain, either all generated Spec entries -// // should go to a single Spec file (like in this sample snippet), -// // or transientID should be unique for each generated Spec file. -// transientID := getSomeSufficientlyUniqueIDForContainer(ctr) -// specName, err := cdi.GenerateNameForTransientSpec(vendor, class, transientID) -// if err != nil { -// return fmt.Errorf("failed to generate Spec name: %w", err) -// } +// // transientID is expected to guarantee that the Spec file name +// // generated using is unique within +// // the host/node. If more than one device is allocated with the +// // same vendor/class domain, either all generated Spec entries +// // should go to a single Spec file (like in this sample snippet), +// // or transientID should be unique for each generated Spec file. +// transientID := getSomeSufficientlyUniqueIDForContainer(ctr) +// specName, err := cdi.GenerateNameForTransientSpec(vendor, class, transientID) +// if err != nil { +// return fmt.Errorf("failed to generate Spec name: %w", err) +// } // -// return registry.SpecDB().WriteSpec(spec, specName) -// } +// return registry.SpecDB().WriteSpec(spec, specName) +// } // -// func removeTransientSpec(ctr Container) error { -// registry := cdi.GetRegistry() -// transientID := getSomeSufficientlyUniqueIDForContainer(ctr) -// specName := cdi.GenerateNameForTransientSpec(vendor, class, transientID) +// func removeTransientSpec(ctr Container) error { +// registry := cdi.GetRegistry() +// transientID := getSomeSufficientlyUniqueIDForContainer(ctr) +// specName := cdi.GenerateNameForTransientSpec(vendor, class, transientID) // -// return registry.SpecDB().RemoveSpec(specName) -// } +// return registry.SpecDB().RemoveSpec(specName) +// } // -// CDI Spec Validation +// # CDI Spec Validation // // This package performs both syntactic and semantic validation of CDI // Spec file data when a Spec file is loaded via the registry or using diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/qualified-device.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/qualified-device.go similarity index 97% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/qualified-device.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/qualified-device.go index 16e889a7a..0bdfdc166 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/qualified-device.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/qualified-device.go @@ -17,7 +17,7 @@ package cdi import ( - "github.com/container-orchestrated-devices/container-device-interface/pkg/parser" + "tags.cncf.io/container-device-interface/pkg/parser" ) // QualifiedName returns the qualified name for a device. diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/registry.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/registry.go similarity index 98% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/registry.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/registry.go index e13ce60b5..7f12c777e 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/registry.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/registry.go @@ -19,8 +19,8 @@ package cdi import ( "sync" - cdi "github.com/container-orchestrated-devices/container-device-interface/specs-go" oci "github.com/opencontainers/runtime-spec/specs-go" + cdi "tags.cncf.io/container-device-interface/specs-go" ) // Registry keeps a cache of all CDI Specs installed or generated on diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec-dirs.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec-dirs.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec-dirs.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go similarity index 98% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go index 62693c1bd..8bd63cc52 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec.go @@ -28,8 +28,8 @@ import ( oci "github.com/opencontainers/runtime-spec/specs-go" "sigs.k8s.io/yaml" - "github.com/container-orchestrated-devices/container-device-interface/internal/validation" - cdi "github.com/container-orchestrated-devices/container-device-interface/specs-go" + "tags.cncf.io/container-device-interface/internal/validation" + cdi "tags.cncf.io/container-device-interface/specs-go" ) const ( diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec_linux.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec_linux.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec_linux.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec_linux.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec_other.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec_other.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/spec_other.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/spec_other.go diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/version.go b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/version.go similarity index 96% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/version.go rename to vendor/tags.cncf.io/container-device-interface/pkg/cdi/version.go index 22534d920..a61781278 100644 --- a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/cdi/version.go +++ b/vendor/tags.cncf.io/container-device-interface/pkg/cdi/version.go @@ -21,8 +21,8 @@ import ( "golang.org/x/mod/semver" - "github.com/container-orchestrated-devices/container-device-interface/pkg/parser" - cdi "github.com/container-orchestrated-devices/container-device-interface/specs-go" + "tags.cncf.io/container-device-interface/pkg/parser" + cdi "tags.cncf.io/container-device-interface/specs-go" ) const ( diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/parser/parser.go b/vendor/tags.cncf.io/container-device-interface/pkg/parser/parser.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/pkg/parser/parser.go rename to vendor/tags.cncf.io/container-device-interface/pkg/parser/parser.go diff --git a/vendor/tags.cncf.io/container-device-interface/specs-go/LICENSE b/vendor/tags.cncf.io/container-device-interface/specs-go/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/vendor/tags.cncf.io/container-device-interface/specs-go/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + 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. diff --git a/vendor/github.com/container-orchestrated-devices/container-device-interface/specs-go/config.go b/vendor/tags.cncf.io/container-device-interface/specs-go/config.go similarity index 100% rename from vendor/github.com/container-orchestrated-devices/container-device-interface/specs-go/config.go rename to vendor/tags.cncf.io/container-device-interface/specs-go/config.go diff --git a/vendor/tags.cncf.io/container-device-interface/specs-go/oci.go b/vendor/tags.cncf.io/container-device-interface/specs-go/oci.go new file mode 100644 index 000000000..229ad52e0 --- /dev/null +++ b/vendor/tags.cncf.io/container-device-interface/specs-go/oci.go @@ -0,0 +1,38 @@ +package specs + +import ( + spec "github.com/opencontainers/runtime-spec/specs-go" +) + +// ToOCI returns the opencontainers runtime Spec Hook for this Hook. +func (h *Hook) ToOCI() spec.Hook { + return spec.Hook{ + Path: h.Path, + Args: h.Args, + Env: h.Env, + Timeout: h.Timeout, + } +} + +// ToOCI returns the opencontainers runtime Spec Mount for this Mount. +func (m *Mount) ToOCI() spec.Mount { + return spec.Mount{ + Source: m.HostPath, + Destination: m.ContainerPath, + Options: m.Options, + Type: m.Type, + } +} + +// ToOCI returns the opencontainers runtime Spec LinuxDevice for this DeviceNode. +func (d *DeviceNode) ToOCI() spec.LinuxDevice { + return spec.LinuxDevice{ + Path: d.Path, + Type: d.Type, + Major: d.Major, + Minor: d.Minor, + FileMode: d.FileMode, + UID: d.UID, + GID: d.GID, + } +}