Use labels only when default namespace is provided and prefer given
options. Implements same approach of setting defaults for `NewWithConn`. Signed-off-by: Nikhil Soni <krsoninikhil@gmail.com>
This commit is contained in:
parent
59432aaecf
commit
34323985a1
34
client.go
34
client.go
@ -140,18 +140,16 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// check namespace labels for default runtime
|
// check namespace labels for default runtime
|
||||||
defaultns := "default"
|
if copts.defaultRuntime == "" && copts.defaultns != "" {
|
||||||
if copts.defaultns != "" {
|
namespaces := c.NamespaceService()
|
||||||
defaultns = copts.defaultns
|
ctx := context.Background()
|
||||||
}
|
if labels, err := namespaces.Labels(ctx, copts.defaultns); err == nil {
|
||||||
namespaces := c.NamespaceService()
|
if defaultRuntime, ok := labels["containerd.io/defaults/runtime"]; ok {
|
||||||
ctx := context.Background()
|
c.runtime = defaultRuntime
|
||||||
if labels, err := namespaces.Labels(ctx, defaultns); err == nil {
|
}
|
||||||
if defaultRuntime, ok := labels["runtime"]; ok {
|
} else {
|
||||||
c.runtime = defaultRuntime
|
return nil, err
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
return nil, err
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return c, nil
|
return c, nil
|
||||||
@ -170,6 +168,20 @@ func NewWithConn(conn *grpc.ClientConn, opts ...ClientOpt) (*Client, error) {
|
|||||||
conn: conn,
|
conn: conn,
|
||||||
runtime: fmt.Sprintf("%s.%s", plugin.RuntimePlugin, runtime.GOOS),
|
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 {
|
if copts.services != nil {
|
||||||
c.services = *copts.services
|
c.services = *copts.services
|
||||||
}
|
}
|
||||||
|
@ -405,11 +405,12 @@ func TestDefaultRuntimeWithNamespaceLabels(t *testing.T) {
|
|||||||
defer cancel()
|
defer cancel()
|
||||||
namespaces := client.NamespaceService()
|
namespaces := client.NamespaceService()
|
||||||
testRuntime := "testRuntime"
|
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)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
testClient, err := newClient(t, address, WithDefaultNamespace(testNamespace))
|
testClient, err := New(address, WithDefaultNamespace(testNamespace))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
|
@ -172,7 +172,7 @@ func setSnapshotterIfEmpty(ctx context.Context, client *Client, c *containers.Co
|
|||||||
namespaceService := client.NamespaceService()
|
namespaceService := client.NamespaceService()
|
||||||
if ns, err := namespaces.NamespaceRequired(ctx); err == nil {
|
if ns, err := namespaces.NamespaceRequired(ctx); err == nil {
|
||||||
if labels, err := namespaceService.Labels(ctx, ns); 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
|
defaultSnapshotter = snapshotLabel
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user