mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-04-30 04:34:27 +00:00
Since the latest containerd's shimv2 had changed the socket from abstract unix socket to path unix socket, thus we'd better to update the vendor to match with the latest containerd. containerd from v1.3.9, v1.4.3 and v1.5.0 used the path unix socket instead of abstract socket, thus kata wouldn's support the containerd's version older than them. Fixes: #1441 short logs: 15d9703d6 Remove ARM64 releases from release notes 5d2e8e86d Revert "Release artifacts for Linux ARM64" 7942ae68b Revert "Specify seccomp target arch for CC" 3187b6dc8 tests: Adds consumed memory stats test 969ec8949 Specify seccomp target arch for CC c19b7b64d RELEASES.md: recommend alternatives for deprecated features 8a62aa1c3 Deprecate built-in aufs snapshotter 4e7915f80 CI: allow Go 1.13 for Docker/Moby compatibility 8e589e873 Vagrantfile: update to Fedora 34 5847340a7 tests: Refactors container image usage 9f43eade6 Prepare v1.5.0-rc.3 release notes 4c7b960cb prow needs some additional setup for docker buildx 2e4c1d4b7 Use the multi-arch version of the test images 4e00c4b65 integration tests needs lsof 177273680 Add script to build test images 1b5d59dfe Add multi-arch support for test images 78e529727 add integration tests 2b0e6cdd4 Separate jobs for build and test for openlab/arm64 cdd075853 Release artifacts for Linux ARM64 efcb18742 Add unit tests for PID NamespaceMode_TARGET validation b48f27df6 Support PID NamespaceMode_TARGET 909660ea9 process: use the unbuffered channel as the done signal 0f332dadd Update cgroups for regenerated protos 391b123a5 adds quiet option for ref ab1654d0e Fix PushHandler cannot push image that contains duplicated blobs 00f8d32ef add not found debug out for check cmd; update usage 55734b1c5 Prepare 1.5.0-rc.2 release notes 3ef337ae3 Update containerd vendors to tags fbe1e140f Update Go to 1.16.3 c1d1edbad gha: use sudo -E in some places to prevent dropping env-vars 7966a6652 Cleanup code 5d79d3adb go.mod: update kubernetes to v1.20.6 1c03c377e go.mod: github.com/containerd/fifo v1.0.0 12a2a2108 go.mod: github.com/google/uuid v1.2.0 3292ea586 pkg/seccomp: use sync.Once to speed up IsEnabled 00b5c99b1 pkg/seccomp: simplify IsEnabled, update doc 6dd29c25f go.mod: github.com/containerd/aufs 330a2a809 go.mod: github.com/containerd/zfs 34780d67a runtime/shim: check the namespace flag first c3dde8c4b freebsd: add zfs to the default plugins b431fe4fc freebsd: don't run shim delete in deleted dir 1f4192daf freebsd: exclude v1 runtimes cb1580937 metadata: improve deleting a non-empty namespace's error message 5bf84034d Remove junit test result processor b83d04f91 Add variable names to runtime's interface definitions 993b86399 Add shim start opts 9e576b889 Optimize backoff 5c02688b5 converter: use OpenWriter helper function fcf3b275f Add lock for ListPids fdb76f55d Fix backword-compatibility issue of non-versioned config file d21fe4625 adds log for each failed host and status not found on host 8a4cbabc6 Reimport windows layers when comitting snapshots 2de38a926 fix(windows): create debug npipe failure 41fc516a2 docs/rootless.md: recommend "easy way" over "hard way" 864a3322b go.mod: github.com/containerd/go-cni v1.0.2 ee34caccb go.mod: github.com/Microsoft/go-winio v0.4.17 d478676d3 go.mod: github.com/containerd/imgcrypt v1.1.1 1dd45d51c go.mod: github.com/containerd/typeurl v1.0.2 abd4be07a fix the 404 url 978ebbef6 Prepare 1.5.0-rc.1 release ce116d4c5 go.mod: github.com/containerd/imgcrypt v1.1.1-0.20210412181126-0bed51b9522c 0550c3233 containerd-stress: add snapshotter option for stress test to use 8a04bd052 address recent runtimes config confusion c4778fe1b go.mod: github.com/containernetworking/plugins v0.9.1 5ce35ac39 devmapper: log pool status when mkfs fails 75097b8ca hcsshim seems to have been updated 9ad087947 Switch all our tests to version 2 e96d2a5d9 Revert "remove two very old no longer used runtime options" 14f357b90 CI: update crun to 0.19 294331060 go.mod: github.com/containerd/console v1.0.2 bb6c0c2de Add more bolt utils 0ad8c0a16 Decouple shim start from task creation c7504987e Implement windowsDiff.Compare via hcsshim/pkg/ociwclayer a64a76846 Replace inline applyWindowsLayer using hcsshim 149fa366f Don't tease the logger with a %-less format string b399e2ef6 Don't lose Compare failure if aborting diff upload fails 36bf3f0e8 go.mod: github.com/Microsoft/hcsshim v0.8.16 8e1a8ecd8 Prepare v1.5.0-rc.0 45df696bf Fix return event publishing error 4bc8f692f optimize cri redirect logs 9bc8d63c9 cri/server: use containerd/oci instead of libcontainer/devices dd16b006e merge in the move to the new options type 9144ce967 shows our runc.v2 default options in the containerd default config 3d20fa930 fix TestSetOOMScoreBoundaries 4d4117415 Change CRI config runtime options type 21ebeef74 integration: use busybox:1.32.0 since latest is unavailable f9bcf4a8a add section link d4be6aa8f rm mirror defaults; doc registry deprecations 7bb73da6b runtime/v2/shim: remove unused SetScore() and remove sys.OOMScoreMaxKillable 91e7d21ee sys: add AdjustOOMScore() utility 44240116a sys: add boundary checks to SetOOMScore() ace1912bb sys: use assert for error checks in OOM tests 6e7271522 sys: add missing pre-condition checks in tests badd60d3f sys: un-export runningPrivileged(), remove runningUnprivileged() 21a175860 go.mod github.com/klauspost/compress v1.11.13 58c5fd09e re-enable cri test da998c81e move to gcr.io/k8s-staging-cri-tools test images 8ba8533bd pkg/cri/opts.WithoutRunMount -> oci.WithoutRunMount 92ea98eda cri-cni-release: add imgcrypt binaries (v1.1.0) 4c1fa5719 remotes/docker: Only return "already exists" on push when the upload was successful 0186a329e remove two very old no longer used runtime options 58a07754a Temporarily disable cri-tools critest 7ae0a60fb Add OCI ref.name to unique key in remotes handler 5ada2f74a Keep host order as defined in TOML file d9ff8ebef support multi-arch images for windows via ctr af1e2af72 ci: upload junit formatted test results 6866b36ab Add workaround to keep docker hosts structs private c54d92c79 image: use generic decompressor for calculating DiffID 1faca349e integration/client: rename package to "client" 6fc9e4500 synchronize replace rules in integration/client go.mod with main go.mod 9e19a2984 Fix hosts test on Windows 3f406d4af Cleanup vendor d56b49c13 Rewrite Docker hosts parser e1f51ba73 Use os.File#Seek() to get the size of a block device ddd4298a1 Migrate current TOML code to github.com/pelletier/go-toml 499c2f7d4 Vendor github.com/pelletier/go-toml 61c749036 integration/util: remove dependency on k8s.io/klog/v2 d9765f7bf Extend default timeout for nested VM integration run 5e94745f2 ctr: add --user for task exec f8c2f0475 remotes/ctr: allow to limit max concurrent uploads like downloads 4674ad7be Ignore some tests on darwin 55450e773 Run unit tests on CI for MacOS 311e326a1 Add CI job to cross compile all the things 10a498c7c Update go-winio to fix compile error on armv7 1a9c6f557 Revendor zfs to to fix integer overflow 1fd3d12f9 `go mod tidy` the client integration test module da7d96ba3 Clean up WCOW layers after tests in the correct order 9ad87b9ba adds critools-version 72b7f4bab task: allow checkpoint on pause state e4b9b1038 Make CRI registry docs more clear ec4d7736d Increase timeout for linux integration tests eb7c7c71e Fix oom tests on non Linux 708299ca4 Move RunningInUserNS() to its own package 0886ceaea Fix reference ordering in CRI image store bf9db47e8 add caller info to the testHook 305b42583 use happy-eyeballs for port-forwarding 22ef69d77 Support HTTP debug in ctr 01765d097 night ci fix: add packages for ubuntu 20.04 8cdc1f13b go.mod: github.com/containerd/zfs v0.0.0-20210322090317-0e92c2247fb7 30e1e66e5 runtime/v2: Fix defer cleanup 33776ada0 Use specific image for user namespaces tests 7704fe72d Specifically mention "mkfs.ext4" on the error from the command 1410220d8 Fix error log when copy file fe787efa2 Fix error log when kill shim 8d8c15ca5 contentproxy: ensure grpc stream is closed on commit 6e343f25e Switch test image to a non rate-limited manifest list 9fdc96c09 runtime/v2: add comment for checkCopyShimLogError 24602e7a9 change default runtime for containerd-stress app 8731888ec Re-enable CRIU tests by not using overlayfs snapshotter b520428b5 Fix CRIU 4e76bcf06 gofmt -s -w all the things 569023fd5 go.mod: github.com/containerd/nri v0.0.0-20210316161719-dbaa18c31c14 0e1f59e89 go.mod: github.com/containerd/zfs v0.0.0-20210315114300-dde8f0fda960 ffff68866 upgrade pause image to 3.5 for non-root 88d3881e1 go.mod: github.com/containerd/fifo v0.0.0-20210316144830-115abcc95a1d a22c43fa4 go.mod: github.com/containerd/aufs v0.0.0-20210316121734-20793ff83c97 f6f861736 go.mod: github.com/containerd/btrfs v0.0.0-20210316141732-918d888fb676 460b35236 go.mod: kubernetes v1.20.4 5e484c961 runtime/v2/runc: fix the defer cleanup of the NewContainer e6086d9c0 Prepare release notes for v1.5.0-beta.4 34b7a5f09 Update mailmap ba8f9845e move overlay-checks to an overlayutils package 7776e5ef2 Support adding devices by dir d895118c7 runtime/v2/runc: fix leaking socket path a76cefd12 plugin status should be skip, not error 766e7953a Change dgst to digest in debug 4e8b2f309 rootfs: fix the error handling of the createInitLayer d3ad7f390 cmd/ctr: use e.g. in the command usage 231bbdc37 cmd/ctr: fix export command ecb881e5e add imgcrypt stream processors to the default config ac2726e12 cmd/containerd: deduplicate config*.go 9a7ca39cb defaults: add DefaultConfigDir 8f863afd3 Use net.IP.IsLoopback() to match loopback addresses eabd9b98b runtime: ignore file-already-closed error if dead shim Signed-off-by: fupan.lfp <fupan.lfp@antgroup.com>
108 lines
3.5 KiB
Go
108 lines
3.5 KiB
Go
/*
|
|
Copyright The containerd 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 diff
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/containerd/containerd/mount"
|
|
"github.com/gogo/protobuf/types"
|
|
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
|
|
)
|
|
|
|
// Config is used to hold parameters needed for a diff operation
|
|
type Config struct {
|
|
// MediaType is the type of diff to generate
|
|
// Default depends on the differ,
|
|
// i.e. application/vnd.oci.image.layer.v1.tar+gzip
|
|
MediaType string
|
|
|
|
// Reference is the content upload reference
|
|
// Default will use a random reference string
|
|
Reference string
|
|
|
|
// Labels are the labels to apply to the generated content
|
|
Labels map[string]string
|
|
}
|
|
|
|
// Opt is used to configure a diff operation
|
|
type Opt func(*Config) error
|
|
|
|
// Comparer allows creation of filesystem diffs between mounts
|
|
type Comparer interface {
|
|
// Compare computes the difference between two mounts and returns a
|
|
// descriptor for the computed diff. The options can provide
|
|
// a ref which can be used to track the content creation of the diff.
|
|
// The media type which is used to determine the format of the created
|
|
// content can also be provided as an option.
|
|
Compare(ctx context.Context, lower, upper []mount.Mount, opts ...Opt) (ocispec.Descriptor, error)
|
|
}
|
|
|
|
// ApplyConfig is used to hold parameters needed for a apply operation
|
|
type ApplyConfig struct {
|
|
// ProcessorPayloads specifies the payload sent to various processors
|
|
ProcessorPayloads map[string]*types.Any
|
|
}
|
|
|
|
// ApplyOpt is used to configure an Apply operation
|
|
type ApplyOpt func(context.Context, ocispec.Descriptor, *ApplyConfig) error
|
|
|
|
// Applier allows applying diffs between mounts
|
|
type Applier interface {
|
|
// Apply applies the content referred to by the given descriptor to
|
|
// the provided mount. The method of applying is based on the
|
|
// implementation and content descriptor. For example, in the common
|
|
// case the descriptor is a file system difference in tar format,
|
|
// that tar would be applied on top of the mounts.
|
|
Apply(ctx context.Context, desc ocispec.Descriptor, mount []mount.Mount, opts ...ApplyOpt) (ocispec.Descriptor, error)
|
|
}
|
|
|
|
// WithMediaType sets the media type to use for creating the diff, without
|
|
// specifying the differ will choose a default.
|
|
func WithMediaType(m string) Opt {
|
|
return func(c *Config) error {
|
|
c.MediaType = m
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithReference is used to set the content upload reference used by
|
|
// the diff operation. This allows the caller to track the upload through
|
|
// the content store.
|
|
func WithReference(ref string) Opt {
|
|
return func(c *Config) error {
|
|
c.Reference = ref
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithLabels is used to set content labels on the created diff content.
|
|
func WithLabels(labels map[string]string) Opt {
|
|
return func(c *Config) error {
|
|
c.Labels = labels
|
|
return nil
|
|
}
|
|
}
|
|
|
|
// WithPayloads sets the apply processor payloads to the config
|
|
func WithPayloads(payloads map[string]*types.Any) ApplyOpt {
|
|
return func(_ context.Context, _ ocispec.Descriptor, c *ApplyConfig) error {
|
|
c.ProcessorPayloads = payloads
|
|
return nil
|
|
}
|
|
}
|