deps: upgrade docker and runc
This PR upgrades
- docker dependency to the latest tagged release (v20.10.12)
- runc dependency to the latest tagged release (v1.0.3)
Docker does not abide by [semver](https://github.com/moby/moby/issues/39302), so it is marked +incompatible,
and transitive dependencies are upgrade manually.
Runc made three relevant breaking changes
* cgroup manager .Set changed to accept Resources instead of Cgroup
3f65946756
* config.Device moved to devices.Device
https://github.com/opencontainers/runc/pull/2679
* mountinfo.Mounted now returns an error if the specified path does not exist
https://github.com/moby/sys/blob/mountinfo/v0.5.0/mountinfo/mountinfo.go#L16
This commit is contained in:
parent
330d24a873
commit
4650e97d29
|
@ -0,0 +1,4 @@
|
|||
```release-note:improvements
|
||||
deps: Update `docker/docker` dependency to `v20.10.12`
|
||||
deps: Update `opencontainers/runc` dependency to `v1.0.3`
|
||||
```
|
|
@ -117,9 +117,14 @@ func (v *volumeManager) ensureAllocDir(vol *structs.CSIVolume, alloc *structs.Al
|
|||
|
||||
// Validate that the target is not already a mount point
|
||||
targetPath := v.targetForVolume(v.mountRoot, vol.ID, alloc.ID, usage)
|
||||
|
||||
m := mount.New()
|
||||
isNotMount, err := m.IsNotAMountPoint(targetPath)
|
||||
if err != nil {
|
||||
|
||||
switch {
|
||||
case errors.Is(err, os.ErrNotExist):
|
||||
// ignore; path does not exist and as such is not a mount
|
||||
case err != nil:
|
||||
return "", false, fmt.Errorf("mount point detection failed for volume (%s): %v", vol.ID, err)
|
||||
}
|
||||
|
||||
|
|
|
@ -279,6 +279,7 @@ func TestVolumeManager_publishVolume(t *testing.T) {
|
|||
if !checkMountSupport() {
|
||||
t.Skip("mount point detection not supported for this platform")
|
||||
}
|
||||
|
||||
t.Parallel()
|
||||
|
||||
cases := []struct {
|
||||
|
@ -397,7 +398,6 @@ func TestVolumeManager_publishVolume(t *testing.T) {
|
|||
if tc.ExpectedVolumeCapability != nil {
|
||||
require.Equal(t, tc.ExpectedVolumeCapability, csiFake.PrevVolumeCapability)
|
||||
}
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
|
|
|
@ -15,15 +15,13 @@ import (
|
|||
"syscall"
|
||||
"time"
|
||||
|
||||
"github.com/hashicorp/nomad/drivers/shared/capabilities"
|
||||
"github.com/opencontainers/runtime-spec/specs-go"
|
||||
|
||||
"github.com/armon/circbuf"
|
||||
"github.com/hashicorp/consul-template/signals"
|
||||
hclog "github.com/hashicorp/go-hclog"
|
||||
"github.com/hashicorp/nomad/client/allocdir"
|
||||
"github.com/hashicorp/nomad/client/stats"
|
||||
cstructs "github.com/hashicorp/nomad/client/structs"
|
||||
"github.com/hashicorp/nomad/drivers/shared/capabilities"
|
||||
shelpers "github.com/hashicorp/nomad/helper/stats"
|
||||
"github.com/hashicorp/nomad/helper/uuid"
|
||||
"github.com/hashicorp/nomad/nomad/structs"
|
||||
|
@ -31,9 +29,11 @@ import (
|
|||
"github.com/opencontainers/runc/libcontainer"
|
||||
"github.com/opencontainers/runc/libcontainer/cgroups"
|
||||
lconfigs "github.com/opencontainers/runc/libcontainer/configs"
|
||||
"github.com/opencontainers/runc/libcontainer/devices"
|
||||
ldevices "github.com/opencontainers/runc/libcontainer/devices"
|
||||
"github.com/opencontainers/runc/libcontainer/specconv"
|
||||
lutils "github.com/opencontainers/runc/libcontainer/utils"
|
||||
"github.com/opencontainers/runtime-spec/specs-go"
|
||||
"golang.org/x/sys/unix"
|
||||
)
|
||||
|
||||
|
@ -784,14 +784,14 @@ func newLibcontainerConfig(command *ExecCommand) (*lconfigs.Config, error) {
|
|||
}
|
||||
|
||||
// cmdDevices converts a list of driver.DeviceConfigs into excutor.Devices.
|
||||
func cmdDevices(devices []*drivers.DeviceConfig) ([]*lconfigs.Device, error) {
|
||||
if len(devices) == 0 {
|
||||
func cmdDevices(driverDevices []*drivers.DeviceConfig) ([]*devices.Device, error) {
|
||||
if len(driverDevices) == 0 {
|
||||
return nil, nil
|
||||
}
|
||||
|
||||
r := make([]*lconfigs.Device, len(devices))
|
||||
r := make([]*devices.Device, len(driverDevices))
|
||||
|
||||
for i, d := range devices {
|
||||
for i, d := range driverDevices {
|
||||
ed, err := ldevices.DeviceFromPath(d.HostPath, d.Permissions)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to make device out for %s: %v", d.HostPath, err)
|
||||
|
|
|
@ -121,7 +121,7 @@ func DestroyCgroup(groups *lconfigs.Cgroup, executorPid int) error {
|
|||
// Freeze the Cgroup so that it can not continue to fork/exec.
|
||||
groups.Resources.Freezer = lconfigs.Frozen
|
||||
freezer := cgroupFs.FreezerGroup{}
|
||||
if err := freezer.Set(groups.Paths[freezer.Name()], groups); err != nil {
|
||||
if err := freezer.Set(groups.Paths[freezer.Name()], groups.Resources); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -133,7 +133,7 @@ func DestroyCgroup(groups *lconfigs.Cgroup, executorPid int) error {
|
|||
// Unfreeze the cgroup.
|
||||
groups.Resources.Freezer = lconfigs.Thawed
|
||||
freezer := cgroupFs.FreezerGroup{}
|
||||
if err := freezer.Set(groups.Paths[freezer.Name()], groups); err != nil {
|
||||
if err := freezer.Set(groups.Paths[freezer.Name()], groups.Resources); err != nil {
|
||||
multierror.Append(mErrs, fmt.Errorf("failed to unfreeze cgroup: %v", err))
|
||||
return mErrs.ErrorOrNil()
|
||||
}
|
||||
|
@ -155,7 +155,7 @@ func DestroyCgroup(groups *lconfigs.Cgroup, executorPid int) error {
|
|||
|
||||
// Unfreeze the cgroug so we can wait.
|
||||
groups.Resources.Freezer = lconfigs.Thawed
|
||||
if err := freezer.Set(groups.Paths[freezer.Name()], groups); err != nil {
|
||||
if err := freezer.Set(groups.Paths[freezer.Name()], groups.Resources); err != nil {
|
||||
multierror.Append(mErrs, fmt.Errorf("failed to unfreeze cgroup: %v", err))
|
||||
return mErrs.ErrorOrNil()
|
||||
}
|
||||
|
|
86
go.mod
86
go.mod
|
@ -17,23 +17,23 @@ replace github.com/hashicorp/nomad/api => ./api
|
|||
|
||||
require (
|
||||
github.com/LK4D4/joincontext v0.0.0-20171026170139-1724345da6d5
|
||||
github.com/Microsoft/go-winio v0.4.15-0.20200113171025-3fe6c5262873
|
||||
github.com/Microsoft/go-winio v0.4.17
|
||||
github.com/NYTimes/gziphandler v1.0.1
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e
|
||||
github.com/armon/go-metrics v0.3.10
|
||||
github.com/aws/aws-sdk-go v1.42.6
|
||||
github.com/aws/aws-sdk-go v1.42.27
|
||||
github.com/boltdb/bolt v1.3.1
|
||||
github.com/container-storage-interface/spec v1.4.0
|
||||
github.com/containerd/go-cni v0.0.0-20190904155053-d20b7eebc7ee
|
||||
github.com/containernetworking/cni v0.7.2-0.20190612152420-dc953e2fd91f
|
||||
github.com/containernetworking/plugins v0.7.3-0.20190501191748-2d6d46d308b2
|
||||
github.com/coreos/go-iptables v0.4.3-0.20190724151750-969b135e941d
|
||||
github.com/containerd/go-cni v1.1.1
|
||||
github.com/containernetworking/cni v1.0.1
|
||||
github.com/containernetworking/plugins v0.9.1
|
||||
github.com/coreos/go-iptables v0.5.0
|
||||
github.com/coreos/go-semver v0.3.0
|
||||
github.com/docker/cli v0.0.0-20200303215952-eb310fca4956
|
||||
github.com/docker/cli v20.10.3-0.20220113150236-6e2838e18645+incompatible
|
||||
github.com/docker/distribution v2.7.1+incompatible
|
||||
github.com/docker/docker v17.12.0-ce-rc1.0.20200330121334-7f8b4b621b5d+incompatible
|
||||
github.com/docker/docker v20.10.12+incompatible
|
||||
github.com/docker/go-units v0.4.0
|
||||
github.com/docker/libnetwork v0.8.0-dev.2.0.20200612180813-9e99af28df21
|
||||
github.com/docker/libnetwork v0.8.0-dev.2.0.20210525090646-64b7a4574d14
|
||||
github.com/dustin/go-humanize v1.0.0
|
||||
github.com/elazarl/go-bindata-assetfs v1.0.1-0.20200509193318-234c15e7648f
|
||||
github.com/fatih/color v1.13.0
|
||||
|
@ -97,12 +97,14 @@ require (
|
|||
github.com/mitchellh/hashstructure v1.0.0
|
||||
github.com/mitchellh/mapstructure v1.4.2
|
||||
github.com/mitchellh/reflectwalk v1.0.1
|
||||
github.com/opencontainers/runc v1.0.0-rc93
|
||||
github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d
|
||||
github.com/moby/sys/mount v0.3.0
|
||||
github.com/moby/sys/mountinfo v0.5.0
|
||||
github.com/opencontainers/runc v1.0.3
|
||||
github.com/opencontainers/runtime-spec v1.0.3-0.20210326190908-1c3f411f0417
|
||||
github.com/pkg/errors v0.9.1
|
||||
github.com/posener/complete v1.2.3
|
||||
github.com/prometheus/client_golang v1.4.0
|
||||
github.com/prometheus/common v0.9.1
|
||||
github.com/prometheus/client_golang v1.7.1
|
||||
github.com/prometheus/common v0.10.0
|
||||
github.com/rs/cors v1.8.0
|
||||
github.com/ryanuber/columnize v2.1.1-0.20170703205827-abc90934186a+incompatible
|
||||
github.com/ryanuber/go-glob v1.0.0
|
||||
|
@ -115,7 +117,7 @@ require (
|
|||
github.com/zclconf/go-cty-yaml v1.0.2
|
||||
go.uber.org/goleak v1.1.12
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519
|
||||
golang.org/x/net v0.0.0-20211108170745-6635138e15ea
|
||||
golang.org/x/net v0.0.0-20211216030914-fe4d6282115f
|
||||
golang.org/x/sync v0.0.0-20210220032951-036812b2e83c
|
||||
golang.org/x/sys v0.0.0-20211109065445-02f5c0300f6e
|
||||
golang.org/x/time v0.0.0-20200630173020-3af7569d3a1e
|
||||
|
@ -127,21 +129,21 @@ require (
|
|||
require (
|
||||
cloud.google.com/go v0.97.0 // indirect
|
||||
cloud.google.com/go/storage v1.18.2 // indirect
|
||||
github.com/Azure/azure-sdk-for-go v44.0.0+incompatible // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78 // indirect
|
||||
github.com/Azure/azure-sdk-for-go v56.3.0+incompatible // indirect
|
||||
github.com/Azure/go-ansiterm v0.0.0-20210617225240-d185dfc1b5a1 // indirect
|
||||
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
|
||||
github.com/Azure/go-autorest/autorest v0.11.4 // indirect
|
||||
github.com/Azure/go-autorest/autorest/adal v0.9.2 // indirect
|
||||
github.com/Azure/go-autorest/autorest v0.11.20 // indirect
|
||||
github.com/Azure/go-autorest/autorest/adal v0.9.15 // indirect
|
||||
github.com/Azure/go-autorest/autorest/azure/auth v0.5.1 // indirect
|
||||
github.com/Azure/go-autorest/autorest/azure/cli v0.4.0 // indirect
|
||||
github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect
|
||||
github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect
|
||||
github.com/Azure/go-autorest/autorest/validation v0.3.0 // indirect
|
||||
github.com/Azure/go-autorest/logger v0.2.0 // indirect
|
||||
github.com/Azure/go-autorest/logger v0.2.1 // indirect
|
||||
github.com/Azure/go-autorest/tracing v0.6.0 // indirect
|
||||
github.com/BurntSushi/toml v0.4.1 // indirect
|
||||
github.com/DataDog/datadog-go v3.2.0+incompatible // indirect
|
||||
github.com/Microsoft/hcsshim v0.8.9 // indirect
|
||||
github.com/Microsoft/hcsshim v0.8.23 // indirect
|
||||
github.com/StackExchange/wmi v0.0.0-20190523213315-cbe66965904d // indirect
|
||||
github.com/VividCortex/ewma v1.1.1 // indirect
|
||||
github.com/agext/levenshtein v1.2.1 // indirect
|
||||
|
@ -151,44 +153,44 @@ require (
|
|||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
|
||||
github.com/bgentry/speakeasy v0.1.0 // indirect
|
||||
github.com/bits-and-blooms/bitset v1.2.0 // indirect
|
||||
github.com/bmatcuk/doublestar v1.1.5 // indirect
|
||||
github.com/census-instrumentation/opencensus-proto v0.3.0 // indirect
|
||||
github.com/cespare/xxhash/v2 v2.1.2 // indirect
|
||||
github.com/checkpoint-restore/go-criu/v4 v4.1.0 // indirect
|
||||
github.com/checkpoint-restore/go-criu/v5 v5.0.0 // indirect
|
||||
github.com/cheggaaa/pb/v3 v3.0.5 // indirect
|
||||
github.com/cilium/ebpf v0.2.0 // indirect
|
||||
github.com/cilium/ebpf v0.6.2 // indirect
|
||||
github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible // indirect
|
||||
github.com/circonus-labs/circonusllhist v0.1.3 // indirect
|
||||
github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4 // indirect
|
||||
github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1 // indirect
|
||||
github.com/containerd/console v1.0.1 // indirect
|
||||
github.com/containerd/containerd v1.3.4 // indirect
|
||||
github.com/containerd/continuity v0.0.0-20200709052629-daa8e1ccc0bc // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.1.0 // indirect
|
||||
github.com/containerd/cgroups v1.0.2 // indirect
|
||||
github.com/containerd/console v1.0.3 // indirect
|
||||
github.com/containerd/containerd v1.5.9 // indirect
|
||||
github.com/coreos/go-systemd/v22 v22.3.2 // indirect
|
||||
github.com/cyphar/filepath-securejoin v0.2.3-0.20190205144030-7efe413b52e1 // indirect
|
||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||
github.com/denverdino/aliyungo v0.0.0-20190125010748-a747050bb1ba // indirect
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible // indirect
|
||||
github.com/digitalocean/godo v1.10.0 // indirect
|
||||
github.com/dimchansky/utfbom v1.1.0 // indirect
|
||||
github.com/docker/docker-credential-helpers v0.6.2-0.20180719074751-73e5f5dbfea3 // indirect
|
||||
github.com/docker/docker-credential-helpers v0.6.4 // indirect
|
||||
github.com/docker/go-connections v0.4.0 // indirect
|
||||
github.com/docker/go-metrics v0.0.1 // indirect
|
||||
github.com/docker/libtrust v0.0.0-20160708172513-aabc10ec26b7 // indirect
|
||||
github.com/envoyproxy/go-control-plane v0.10.0 // indirect
|
||||
github.com/envoyproxy/protoc-gen-validate v0.6.2 // indirect
|
||||
github.com/fsnotify/fsnotify v1.4.9 // indirect
|
||||
github.com/go-ole/go-ole v1.2.4 // indirect
|
||||
github.com/godbus/dbus/v5 v5.0.3 // indirect
|
||||
github.com/gogo/protobuf v1.3.1 // indirect
|
||||
github.com/godbus/dbus/v5 v5.0.4 // indirect
|
||||
github.com/gogo/protobuf v1.3.2 // indirect
|
||||
github.com/golang-jwt/jwt/v4 v4.0.0 // indirect
|
||||
github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect
|
||||
github.com/google/btree v1.0.0 // indirect
|
||||
github.com/google/go-querystring v0.0.0-20170111101155-53e6ce116135 // indirect
|
||||
github.com/google/uuid v1.1.2 // indirect
|
||||
github.com/google/uuid v1.2.0 // indirect
|
||||
github.com/googleapis/gax-go/v2 v2.1.1 // indirect
|
||||
github.com/gookit/color v1.3.1 // indirect
|
||||
github.com/gophercloud/gophercloud v0.1.0 // indirect
|
||||
github.com/gorilla/mux v1.7.4 // indirect
|
||||
github.com/gorilla/mux v1.8.0 // indirect
|
||||
github.com/hashicorp/errwrap v1.1.0 // indirect
|
||||
github.com/hashicorp/go-retryablehttp v0.6.7 // indirect
|
||||
github.com/hashicorp/go-rootcerts v1.0.2 // indirect
|
||||
|
@ -203,24 +205,23 @@ require (
|
|||
github.com/mattn/go-isatty v0.0.14 // indirect
|
||||
github.com/mattn/go-runewidth v0.0.7 // indirect
|
||||
github.com/mattn/go-shellwords v1.0.10 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1 // indirect
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.2-0.20181231171920-c182affec369 // indirect
|
||||
github.com/mitchellh/go-homedir v1.1.0 // indirect
|
||||
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
|
||||
github.com/moby/sys/mountinfo v0.4.0 // indirect
|
||||
github.com/moby/term v0.0.0-20210619224110-3f7ff695adc6 // indirect
|
||||
github.com/morikuni/aec v1.0.0 // indirect
|
||||
github.com/mrunalp/fileutils v0.5.0 // indirect
|
||||
github.com/nicolai86/scaleway-sdk v1.10.2-0.20180628010248-798f60e20bb2 // indirect
|
||||
github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e // indirect
|
||||
github.com/oklog/run v1.0.1-0.20180308005104-6934b124db28 // indirect
|
||||
github.com/onsi/gomega v1.9.0 // indirect
|
||||
github.com/opencontainers/go-digest v1.0.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.0.1 // indirect
|
||||
github.com/opencontainers/selinux v1.8.0 // indirect
|
||||
github.com/opencontainers/image-spec v1.0.2 // indirect
|
||||
github.com/opencontainers/selinux v1.8.2 // indirect
|
||||
github.com/packethost/packngo v0.1.1-0.20180711074735-b9cb5096f54c // indirect
|
||||
github.com/pierrec/lz4 v2.5.2+incompatible // indirect
|
||||
github.com/pmezard/go-difflib v1.0.0 // indirect
|
||||
github.com/prometheus/client_model v0.2.0 // indirect
|
||||
github.com/prometheus/procfs v0.0.8 // indirect
|
||||
github.com/prometheus/procfs v0.6.0 // indirect
|
||||
github.com/renier/xmlrpc v0.0.0-20170708154548-ce4a1a486c03 // indirect
|
||||
github.com/rogpeppe/go-internal v1.6.1 // indirect
|
||||
github.com/seccomp/libseccomp-golang v0.9.2-0.20200314001724-bdab42bd5128 // indirect
|
||||
|
@ -233,12 +234,11 @@ require (
|
|||
github.com/tklauser/numcpus v0.2.2 // indirect
|
||||
github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926 // indirect
|
||||
github.com/ulikunitz/xz v0.5.10 // indirect
|
||||
github.com/vishvananda/netlink v1.1.0 // indirect
|
||||
github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df // indirect
|
||||
github.com/vishvananda/netlink v1.1.1-0.20201029203352-d40f9887b852 // indirect
|
||||
github.com/vishvananda/netns v0.0.0-20200728191858-db3c7e526aae // indirect
|
||||
github.com/vmihailenco/msgpack/v4 v4.3.12 // indirect
|
||||
github.com/vmihailenco/tagparser v0.1.1 // indirect
|
||||
github.com/vmware/govmomi v0.18.0 // indirect
|
||||
github.com/willf/bitset v1.1.11 // indirect
|
||||
go.opencensus.io v0.23.0 // indirect
|
||||
golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8 // indirect
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1 // indirect
|
||||
|
@ -253,6 +253,6 @@ require (
|
|||
gopkg.in/fsnotify.v1 v1.4.7 // indirect
|
||||
gopkg.in/resty.v1 v1.12.0 // indirect
|
||||
gopkg.in/square/go-jose.v2 v2.5.1 // indirect
|
||||
gopkg.in/yaml.v2 v2.3.0 // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c // indirect
|
||||
)
|
||||
|
|
|
@ -4,7 +4,8 @@
|
|||
package mount
|
||||
|
||||
import (
|
||||
docker_mount "github.com/docker/docker/pkg/mount"
|
||||
"github.com/moby/sys/mount"
|
||||
"github.com/moby/sys/mountinfo"
|
||||
)
|
||||
|
||||
// mounter provides the default implementation of mount.Mounter
|
||||
|
@ -21,12 +22,12 @@ func New() Mounter {
|
|||
// IsNotAMountPoint determines if a directory is not a mountpoint.
|
||||
// It does this by checking the path against the contents of /proc/self/mountinfo
|
||||
func (m *mounter) IsNotAMountPoint(path string) (bool, error) {
|
||||
isMount, err := docker_mount.Mounted(path)
|
||||
isMount, err := mountinfo.Mounted(path)
|
||||
return !isMount, err
|
||||
}
|
||||
|
||||
func (m *mounter) Mount(device, target, mountType, options string) error {
|
||||
// Defer to the docker implementation of `Mount`, it's correct enough for our
|
||||
// usecase and avoids us needing to shell out to the `mount` utility.
|
||||
return docker_mount.Mount(device, target, mountType, options)
|
||||
return mount.Mount(device, target, mountType, options)
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue