diff --git a/client.go b/client.go index 60552e91a..386d07aa0 100644 --- a/client.go +++ b/client.go @@ -140,18 +140,16 @@ func New(address string, opts ...ClientOpt) (*Client, error) { } // check namespace labels for default runtime - defaultns := "default" - if copts.defaultns != "" { - defaultns = copts.defaultns - } - namespaces := c.NamespaceService() - ctx := context.Background() - if labels, err := namespaces.Labels(ctx, defaultns); err == nil { - if defaultRuntime, ok := labels["runtime"]; ok { - c.runtime = defaultRuntime + if copts.defaultRuntime == "" && copts.defaultns != "" { + namespaces := c.NamespaceService() + ctx := context.Background() + if labels, err := namespaces.Labels(ctx, copts.defaultns); err == nil { + if defaultRuntime, ok := labels["containerd.io/defaults/runtime"]; ok { + c.runtime = defaultRuntime + } + } else { + return nil, err } - } else { - return nil, err } return c, nil @@ -170,6 +168,20 @@ func NewWithConn(conn *grpc.ClientConn, opts ...ClientOpt) (*Client, error) { conn: conn, runtime: fmt.Sprintf("%s.%s", plugin.RuntimePlugin, runtime.GOOS), } + + // check namespace labels for default runtime + if copts.defaultRuntime == "" && copts.defaultns != "" { + namespaces := c.NamespaceService() + ctx := context.Background() + if labels, err := namespaces.Labels(ctx, copts.defaultns); err == nil { + if defaultRuntime, ok := labels["containerd.io/defaults/runtime"]; ok { + c.runtime = defaultRuntime + } + } else { + return nil, err + } + } + if copts.services != nil { c.services = *copts.services } diff --git a/client_test.go b/client_test.go index 2ed367b85..742140839 100644 --- a/client_test.go +++ b/client_test.go @@ -405,11 +405,12 @@ func TestDefaultRuntimeWithNamespaceLabels(t *testing.T) { defer cancel() namespaces := client.NamespaceService() testRuntime := "testRuntime" - if err := namespaces.SetLabel(ctx, testNamespace, "runtime", testRuntime); err != nil { + runtimeLabel := "containerd.io/defaults/runtime" + if err := namespaces.SetLabel(ctx, testNamespace, runtimeLabel, testRuntime); err != nil { t.Fatal(err) } - testClient, err := newClient(t, address, WithDefaultNamespace(testNamespace)) + testClient, err := New(address, WithDefaultNamespace(testNamespace)) if err != nil { t.Fatal(err) } diff --git a/container_opts.go b/container_opts.go index 8f086a729..c04bd2387 100644 --- a/container_opts.go +++ b/container_opts.go @@ -172,7 +172,7 @@ func setSnapshotterIfEmpty(ctx context.Context, client *Client, c *containers.Co namespaceService := client.NamespaceService() if ns, err := namespaces.NamespaceRequired(ctx); err == nil { if labels, err := namespaceService.Labels(ctx, ns); err == nil { - if snapshotLabel, ok := labels["snapshotter"]; ok { + if snapshotLabel, ok := labels["containerd.io/defaults/snapshotter"]; ok { defaultSnapshotter = snapshotLabel } }