Merge pull request #37350 from tonistiigi/platform-support
Fix platform struct passing
diff --git a/api/server/server.go b/api/server/server.go
index 3874a56..c364008 100644
--- a/api/server/server.go
+++ b/api/server/server.go
@@ -149,7 +149,7 @@
}
// InitRouter initializes the list of routers for the server.
-// This method also enables the Go profiler if enableProfiler is true.
+// This method also enables the Go profiler.
func (s *Server) InitRouter(routers ...router.Router) {
s.routers = append(s.routers, routers...)
diff --git a/integration/internal/network/ops.go b/integration/internal/network/ops.go
index 9b69b79..33bd3d0 100644
--- a/integration/internal/network/ops.go
+++ b/integration/internal/network/ops.go
@@ -33,6 +33,13 @@
}
}
+// WithAttachable sets Attachable flag on the create network request
+func WithAttachable() func(*types.NetworkCreate) {
+ return func(n *types.NetworkCreate) {
+ n.Attachable = true
+ }
+}
+
// WithMacvlan sets the network as macvlan with the specified parent
func WithMacvlan(parent string) func(*types.NetworkCreate) {
return func(n *types.NetworkCreate) {
diff --git a/integration/network/service_test.go b/integration/network/service_test.go
index d926045..b276c51 100644
--- a/integration/network/service_test.go
+++ b/integration/network/service_test.go
@@ -66,7 +66,7 @@
assert.Equal(t, out.IPAM.Config[0].Subnet, "175.30.0.0/16")
// Create a bridge network and verify its subnet is the second default pool
- name := "elango"
+ name := "elango" + t.Name()
network.CreateNoError(t, context.Background(), cli, name,
network.WithDriver("bridge"),
)
@@ -75,7 +75,7 @@
assert.Equal(t, out.IPAM.Config[0].Subnet, "175.33.0.0/24")
// Create a bridge network and verify its subnet is the third default pool
- name = "saanvi"
+ name = "saanvi" + t.Name()
network.CreateNoError(t, context.Background(), cli, name,
network.WithDriver("bridge"),
)
@@ -99,7 +99,7 @@
defer cli.Close()
// Create a bridge network
- name := "elango"
+ name := "elango" + t.Name()
network.CreateNoError(t, context.Background(), cli, name,
network.WithDriver("bridge"),
)
@@ -131,7 +131,7 @@
defer cli.Close()
// Create a bridge network
- name := "elango"
+ name := "elango" + t.Name()
network.CreateNoError(t, context.Background(), cli, name,
network.WithDriver("bridge"),
)
@@ -140,7 +140,7 @@
networkip := out.IPAM.Config[0].Subnet
// Create a bridge network
- name = "sthira"
+ name = "sthira" + t.Name()
network.CreateNoError(t, context.Background(), cli, name,
network.WithDriver("bridge"),
)
@@ -154,7 +154,7 @@
"--default-address-pool", "base=175.19.0.0/16,size=24")
// Create a bridge network
- name = "saanvi"
+ name = "saanvi" + t.Name()
network.CreateNoError(t, context.Background(), cli, name,
network.WithDriver("bridge"),
)
diff --git a/integration/service/network_test.go b/integration/service/network_test.go
index 4ebbd97..ba170fc 100644
--- a/integration/service/network_test.go
+++ b/integration/service/network_test.go
@@ -7,6 +7,7 @@
"github.com/docker/docker/api/types"
"github.com/docker/docker/api/types/network"
"github.com/docker/docker/integration/internal/container"
+ net "github.com/docker/docker/integration/internal/network"
"github.com/docker/docker/integration/internal/swarm"
"gotest.tools/assert"
is "gotest.tools/assert/cmp"
@@ -21,11 +22,10 @@
ctx := context.Background()
name := t.Name() + "test-alias"
- _, err := client.NetworkCreate(ctx, name, types.NetworkCreate{
- Driver: "overlay",
- Attachable: true,
- })
- assert.NilError(t, err)
+ net.CreateNoError(t, ctx, client, name,
+ net.WithDriver("overlay"),
+ net.WithAttachable(),
+ )
cID1 := container.Create(t, ctx, client, func(c *container.TestContainerConfig) {
c.NetworkingConfig = &network.NetworkingConfig{
@@ -35,7 +35,7 @@
}
})
- err = client.NetworkConnect(ctx, name, cID1, &network.EndpointSettings{
+ err := client.NetworkConnect(ctx, name, cID1, &network.EndpointSettings{
Aliases: []string{
"aaa",
},
diff --git a/vendor.conf b/vendor.conf
index 627a856..cd059b7 100644
--- a/vendor.conf
+++ b/vendor.conf
@@ -114,7 +114,7 @@
google.golang.org/genproto 694d95ba50e67b2e363f3483057db5d4910c18f9
# containerd
-github.com/containerd/containerd 63522d9eaa5a0443d225642c4b6f4f5fdedf932b
+github.com/containerd/containerd 08f7ee9828af1783dc98cc5cc1739e915697c667
github.com/containerd/fifo 3d5202aec260678c48179c56f40e6f38a095738c
github.com/containerd/continuity d3c23511c1bf5851696cba83143d9cbcd666869b
github.com/containerd/cgroups fe281dd265766145e943a034aa41086474ea6130
diff --git a/vendor/github.com/containerd/containerd/images/image.go b/vendor/github.com/containerd/containerd/images/image.go
index 35eda26..a96597c 100644
--- a/vendor/github.com/containerd/containerd/images/image.go
+++ b/vendor/github.com/containerd/containerd/images/image.go
@@ -129,11 +129,14 @@
// this direction because this abstraction is not needed.`
func Manifest(ctx context.Context, provider content.Provider, image ocispec.Descriptor, platform string) (ocispec.Manifest, error) {
var (
- matcher platforms.Matcher
- m *ocispec.Manifest
+ matcher platforms.Matcher
+ m *ocispec.Manifest
+ p ocispec.Platform
+ wasIndex bool
)
if platform != "" {
- p, err := platforms.Parse(platform)
+ var err error
+ p, err = platforms.Parse(platform)
if err != nil {
return ocispec.Manifest{}, err
}
@@ -201,6 +204,8 @@
}
}
+ wasIndex = true
+
return descs, nil
}
@@ -210,7 +215,11 @@
}
if m == nil {
- return ocispec.Manifest{}, errors.Wrapf(errdefs.ErrNotFound, "manifest %v", image.Digest)
+ err := errors.Wrapf(errdefs.ErrNotFound, "manifest %v", image.Digest)
+ if wasIndex {
+ err = errors.Wrapf(errdefs.ErrNotFound, "no match for current platform %s in manifest %v", platforms.Format(p), image.Digest)
+ }
+ return ocispec.Manifest{}, err
}
return *m, nil
diff --git a/vendor/github.com/containerd/containerd/platforms/database.go b/vendor/github.com/containerd/containerd/platforms/database.go
index df9cc23..8e85448 100644
--- a/vendor/github.com/containerd/containerd/platforms/database.go
+++ b/vendor/github.com/containerd/containerd/platforms/database.go
@@ -89,18 +89,21 @@
case "x86_64", "x86-64":
arch = "amd64"
variant = ""
- case "aarch64":
+ case "aarch64", "arm64":
arch = "arm64"
- variant = "" // v8 is implied
+ switch variant {
+ case "8", "v8":
+ variant = ""
+ }
case "armhf":
arch = "arm"
- variant = ""
+ variant = "v7"
case "armel":
arch = "arm"
variant = "v6"
case "arm":
switch variant {
- case "v7", "7":
+ case "", "7":
variant = "v7"
case "5", "6", "8":
variant = "v" + variant
diff --git a/vendor/github.com/containerd/containerd/platforms/platforms.go b/vendor/github.com/containerd/containerd/platforms/platforms.go
index 1f91ed2..29b7ad6 100644
--- a/vendor/github.com/containerd/containerd/platforms/platforms.go
+++ b/vendor/github.com/containerd/containerd/platforms/platforms.go
@@ -135,7 +135,7 @@
// Applications should opt to use `Match` over directly parsing specifiers.
func NewMatcher(platform specs.Platform) Matcher {
return &matcher{
- Platform: platform,
+ Platform: Normalize(platform),
}
}
@@ -197,6 +197,9 @@
}
p.Architecture, p.Variant = normalizeArch(parts[0], "")
+ if p.Architecture == "arm" && p.Variant == "v7" {
+ p.Variant = ""
+ }
if isKnownArch(p.Architecture) {
p.OS = runtime.GOOS
return p, nil
@@ -208,12 +211,18 @@
// about whether or not we know of the platform.
p.OS = normalizeOS(parts[0])
p.Architecture, p.Variant = normalizeArch(parts[1], "")
+ if p.Architecture == "arm" && p.Variant == "v7" {
+ p.Variant = ""
+ }
return p, nil
case 3:
// we have a fully specified variant, this is rare
p.OS = normalizeOS(parts[0])
p.Architecture, p.Variant = normalizeArch(parts[1], parts[2])
+ if p.Architecture == "arm64" && p.Variant == "" {
+ p.Variant = "v8"
+ }
return p, nil
}
diff --git a/vendor/github.com/containerd/containerd/runtime/shim/client/client.go b/vendor/github.com/containerd/containerd/runtime/shim/client/client.go
index f636128..e46d6df 100644
--- a/vendor/github.com/containerd/containerd/runtime/shim/client/client.go
+++ b/vendor/github.com/containerd/containerd/runtime/shim/client/client.go
@@ -136,6 +136,7 @@
// will be mounted by the shim
cmd.SysProcAttr = getSysProcAttr()
cmd.ExtraFiles = append(cmd.ExtraFiles, socket)
+ cmd.Env = append(os.Environ(), "GOMAXPROCS=2")
if debug {
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stderr
diff --git a/vendor/github.com/containerd/containerd/vendor.conf b/vendor/github.com/containerd/containerd/vendor.conf
index 7585e03..2e100c1 100644
--- a/vendor/github.com/containerd/containerd/vendor.conf
+++ b/vendor/github.com/containerd/containerd/vendor.conf
@@ -22,7 +22,6 @@
github.com/opencontainers/runtime-spec v1.0.1
github.com/opencontainers/runc 69663f0bd4b60df09991c08812a60108003fa340
github.com/sirupsen/logrus v1.0.0
-github.com/pmezard/go-difflib v1.0.0
github.com/urfave/cli 7bc6a0acffa589f415f88aca16cc1de5ffd66f9c
golang.org/x/net b3756b4b77d7b13260a0a2ec658753cf48922eac
google.golang.org/grpc v1.12.0
@@ -40,7 +39,7 @@
golang.org/x/text 19e51611da83d6be54ddafce4a4af510cb3e9ea4
github.com/stevvooe/ttrpc d4528379866b0ce7e9d71f3eb96f0582fc374577
github.com/syndtr/gocapability db04d3cc01c8b54962a58ec7e491717d06cfcc16
-github.com/gotestyourself/gotestyourself 44dbf532bbf5767611f6f2a61bded572e337010a
+gotest.tools v2.1.0
github.com/google/go-cmp v0.1.0
github.com/containerd/cri 8bcb9a95394e8d7845da1d6a994d3ac2a86d22f0