Skip to content

Commit 550a6f1

Browse files
committed
Fix integration tests
Signed-off-by: Maksym Pavlenko <[email protected]>
1 parent 1918ee4 commit 550a6f1

4 files changed

Lines changed: 55 additions & 19 deletions

File tree

client.go

Lines changed: 33 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -143,8 +143,10 @@ func New(address string, opts ...ClientOpt) (*Client, error) {
143143
// check namespace labels for default runtime
144144
if copts.defaultRuntime == "" && copts.defaultns != "" {
145145
ctx := namespaces.WithNamespace(context.Background(), copts.defaultns)
146-
if err := c.GetLabel(ctx, defaults.DefaultRuntimeNSLabel, &c.runtime, ""); err != nil {
146+
if label, err := c.GetLabel(ctx, defaults.DefaultRuntimeNSLabel); err != nil {
147147
return nil, err
148+
} else if label != "" {
149+
c.runtime = label
148150
}
149151
}
150152

@@ -168,8 +170,10 @@ func NewWithConn(conn *grpc.ClientConn, opts ...ClientOpt) (*Client, error) {
168170
// check namespace labels for default runtime
169171
if copts.defaultRuntime == "" && copts.defaultns != "" {
170172
ctx := namespaces.WithNamespace(context.Background(), copts.defaultns)
171-
if err := c.GetLabel(ctx, defaults.DefaultRuntimeNSLabel, &c.runtime, ""); err != nil {
173+
if label, err := c.GetLabel(ctx, defaults.DefaultRuntimeNSLabel); err != nil {
172174
return nil, err
175+
} else if label != "" {
176+
c.runtime = label
173177
}
174178
}
175179

@@ -482,28 +486,22 @@ func writeIndex(ctx context.Context, index *ocispec.Index, client *Client, ref s
482486
return writeContent(ctx, client.ContentStore(), ocispec.MediaTypeImageIndex, ref, bytes.NewReader(data), content.WithLabels(labels))
483487
}
484488

485-
// GetLabel gets a label value from namespace store and saves it in 'out' variable.
486-
// If there is no value, a fallback value will be used instead.
487-
func (c *Client) GetLabel(ctx context.Context, label string, out *string, fallback string) error {
489+
// GetLabel gets a label value from namespace store
490+
// If there is no default label, an empty string returned with nil error
491+
func (c *Client) GetLabel(ctx context.Context, label string) (string, error) {
488492
ns, err := namespaces.NamespaceRequired(ctx)
489493
if err != nil {
490-
return err
494+
return "", err
491495
}
492496

493497
srv := c.NamespaceService()
494498
labels, err := srv.Labels(ctx, ns)
495499
if err != nil {
496-
return err
497-
}
498-
499-
value, ok := labels[label]
500-
if ok {
501-
*out = value
502-
} else {
503-
*out = fallback
500+
return "", err
504501
}
505502

506-
return nil
503+
value := labels[label]
504+
return value, nil
507505
}
508506

509507
// Subscribe to events that match one or more of the provided filters.
@@ -671,17 +669,34 @@ func (c *Client) Version(ctx context.Context) (Version, error) {
671669
}, nil
672670
}
673671

674-
func (c *Client) getSnapshotter(ctx context.Context, name string) (snapshots.Snapshotter, error) {
672+
func (c *Client) resolveSnapshotterName(ctx context.Context, name string) (string, error) {
675673
if name == "" {
676-
if err := c.GetLabel(ctx, defaults.DefaultSnapshotterNSLabel, &name, DefaultSnapshotter); err != nil {
677-
return nil, err
674+
label, err := c.GetLabel(ctx, defaults.DefaultSnapshotterNSLabel)
675+
if err != nil {
676+
return "", err
677+
}
678+
679+
if label != "" {
680+
name = label
681+
} else {
682+
name = DefaultSnapshotter
678683
}
679684
}
680685

686+
return name, nil
687+
}
688+
689+
func (c *Client) getSnapshotter(ctx context.Context, name string) (snapshots.Snapshotter, error) {
690+
name, err := c.resolveSnapshotterName(ctx, name)
691+
if err != nil {
692+
return nil, err
693+
}
694+
681695
s := c.SnapshotService(name)
682696
if s == nil {
683697
return nil, errors.Wrapf(errdefs.ErrNotFound, "snapshotter %s was not found", name)
684698
}
699+
685700
return s, nil
686701
}
687702

container_opts.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,11 @@ func WithSnapshotter(name string) NewContainerOpts {
117117
func WithSnapshot(id string) NewContainerOpts {
118118
return func(ctx context.Context, client *Client, c *containers.Container) error {
119119
// check that the snapshot exists, if not, fail on creation
120+
var err error
121+
c.Snapshotter, err = client.resolveSnapshotterName(ctx, c.Snapshotter)
122+
if err != nil {
123+
return err
124+
}
120125
s, err := client.getSnapshotter(ctx, c.Snapshotter)
121126
if err != nil {
122127
return err
@@ -139,6 +144,10 @@ func WithNewSnapshot(id string, i Image, opts ...snapshots.Opt) NewContainerOpts
139144
}
140145

141146
parent := identity.ChainID(diffIDs).String()
147+
c.Snapshotter, err = client.resolveSnapshotterName(ctx, c.Snapshotter)
148+
if err != nil {
149+
return err
150+
}
142151
s, err := client.getSnapshotter(ctx, c.Snapshotter)
143152
if err != nil {
144153
return err
@@ -177,6 +186,10 @@ func WithNewSnapshotView(id string, i Image, opts ...snapshots.Opt) NewContainer
177186
}
178187

179188
parent := identity.ChainID(diffIDs).String()
189+
c.Snapshotter, err = client.resolveSnapshotterName(ctx, c.Snapshotter)
190+
if err != nil {
191+
return err
192+
}
180193
s, err := client.getSnapshotter(ctx, c.Snapshotter)
181194
if err != nil {
182195
return err

container_opts_unix.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,10 @@ func withRemappedSnapshotBase(id string, i Image, uid, gid uint32, readonly bool
5454
parent = identity.ChainID(diffIDs).String()
5555
usernsID = fmt.Sprintf("%s-%d-%d", parent, uid, gid)
5656
)
57+
c.Snapshotter, err = client.resolveSnapshotterName(ctx, c.Snapshotter)
58+
if err != nil {
59+
return err
60+
}
5761
snapshotter, err := client.getSnapshotter(ctx, c.Snapshotter)
5862
if err != nil {
5963
return err

image.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ import (
2525
"github.com/containerd/containerd/images"
2626
"github.com/containerd/containerd/platforms"
2727
"github.com/containerd/containerd/rootfs"
28-
digest "github.com/opencontainers/go-digest"
28+
"github.com/opencontainers/go-digest"
2929
"github.com/opencontainers/image-spec/identity"
3030
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
3131
"github.com/pkg/errors"
@@ -149,6 +149,10 @@ func (i *image) Unpack(ctx context.Context, snapshotterName string) error {
149149
chain []digest.Digest
150150
unpacked bool
151151
)
152+
snapshotterName, err = i.client.resolveSnapshotterName(ctx, snapshotterName)
153+
if err != nil {
154+
return err
155+
}
152156
sn, err := i.client.getSnapshotter(ctx, snapshotterName)
153157
if err != nil {
154158
return err

0 commit comments

Comments
 (0)