Move label filter to snapshots package
Signed-off-by: Kohei Tokunaga <ktokunaga.mail@gmail.com>
This commit is contained in:
parent
4ccb7aa221
commit
493a36de95
@ -219,7 +219,7 @@ func (s *snapshotter) Update(ctx context.Context, info snapshots.Info, fieldpath
|
|||||||
|
|
||||||
inner := snapshots.Info{
|
inner := snapshots.Info{
|
||||||
Name: bkey,
|
Name: bkey,
|
||||||
Labels: filterInheritedLabels(local.Labels),
|
Labels: snapshots.FilterInheritedLabels(local.Labels),
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Perform this inside the transaction to reduce the
|
// NOTE: Perform this inside the transaction to reduce the
|
||||||
@ -306,7 +306,7 @@ func (s *snapshotter) createSnapshot(ctx context.Context, key, parent string, re
|
|||||||
bparent string
|
bparent string
|
||||||
bkey string
|
bkey string
|
||||||
bopts = []snapshots.Opt{
|
bopts = []snapshots.Opt{
|
||||||
snapshots.WithLabels(filterInheritedLabels(base.Labels)),
|
snapshots.WithLabels(snapshots.FilterInheritedLabels(base.Labels)),
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -586,7 +586,7 @@ func (s *snapshotter) Commit(ctx context.Context, name, key string, opts ...snap
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
inheritedOpt := snapshots.WithLabels(filterInheritedLabels(base.Labels))
|
inheritedOpt := snapshots.WithLabels(snapshots.FilterInheritedLabels(base.Labels))
|
||||||
|
|
||||||
// NOTE: Backend snapshotters should commit fast and reliably to
|
// NOTE: Backend snapshotters should commit fast and reliably to
|
||||||
// prevent metadata store locking and minimizing rollbacks.
|
// prevent metadata store locking and minimizing rollbacks.
|
||||||
@ -939,20 +939,3 @@ func (s *snapshotter) pruneBranch(ctx context.Context, node *treeNode) error {
|
|||||||
func (s *snapshotter) Close() error {
|
func (s *snapshotter) Close() error {
|
||||||
return s.Snapshotter.Close()
|
return s.Snapshotter.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
// filterInheritedLabels filters the provided labels by removing any key which
|
|
||||||
// isn't a snapshot label. Snapshot labels have a prefix of "containerd.io/snapshot/"
|
|
||||||
// or are the "containerd.io/snapshot.ref" label.
|
|
||||||
func filterInheritedLabels(labels map[string]string) map[string]string {
|
|
||||||
if labels == nil {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
filtered := make(map[string]string)
|
|
||||||
for k, v := range labels {
|
|
||||||
if k == labelSnapshotRef || strings.HasPrefix(k, inheritedLabelsPrefix) {
|
|
||||||
filtered[k] = v
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return filtered
|
|
||||||
}
|
|
||||||
|
@ -227,7 +227,7 @@ func TestFilterInheritedLabels(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for _, test := range tests {
|
for _, test := range tests {
|
||||||
if actual := filterInheritedLabels(test.labels); !reflect.DeepEqual(actual, test.expected) {
|
if actual := snapshots.FilterInheritedLabels(test.labels); !reflect.DeepEqual(actual, test.expected) {
|
||||||
t.Fatalf("expected %v but got %v", test.expected, actual)
|
t.Fatalf("expected %v but got %v", test.expected, actual)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,6 +25,11 @@ import (
|
|||||||
"github.com/containerd/containerd/mount"
|
"github.com/containerd/containerd/mount"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
inheritedLabelsPrefix = "containerd.io/snapshot/"
|
||||||
|
labelSnapshotRef = "containerd.io/snapshot.ref"
|
||||||
|
)
|
||||||
|
|
||||||
// Kind identifies the kind of snapshot.
|
// Kind identifies the kind of snapshot.
|
||||||
type Kind uint8
|
type Kind uint8
|
||||||
|
|
||||||
@ -346,3 +351,20 @@ func WithLabels(labels map[string]string) Opt {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// FilterInheritedLabels filters the provided labels by removing any key which
|
||||||
|
// isn't a snapshot label. Snapshot labels have a prefix of "containerd.io/snapshot/"
|
||||||
|
// or are the "containerd.io/snapshot.ref" label.
|
||||||
|
func FilterInheritedLabels(labels map[string]string) map[string]string {
|
||||||
|
if labels == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
filtered := make(map[string]string)
|
||||||
|
for k, v := range labels {
|
||||||
|
if k == labelSnapshotRef || strings.HasPrefix(k, inheritedLabelsPrefix) {
|
||||||
|
filtered[k] = v
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return filtered
|
||||||
|
}
|
||||||
|
15
unpacker.go
15
unpacker.go
@ -22,7 +22,6 @@ import (
|
|||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"math/rand"
|
"math/rand"
|
||||||
"strings"
|
|
||||||
"sync"
|
"sync"
|
||||||
"sync/atomic"
|
"sync/atomic"
|
||||||
"time"
|
"time"
|
||||||
@ -43,8 +42,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
const (
|
const (
|
||||||
inheritedLabelsPrefix = "containerd.io/snapshot/"
|
labelSnapshotRef = "containerd.io/snapshot.ref"
|
||||||
labelSnapshotRef = "containerd.io/snapshot.ref"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
type unpacker struct {
|
type unpacker struct {
|
||||||
@ -119,13 +117,10 @@ EachLayer:
|
|||||||
return errors.Wrapf(err, "failed to stat snapshot %s", chainID)
|
return errors.Wrapf(err, "failed to stat snapshot %s", chainID)
|
||||||
}
|
}
|
||||||
|
|
||||||
// filters the provided annotations by removing any key which isn't a snapshot
|
// inherits annotations which are provided as snapshot labels.
|
||||||
// label. Snapshot labels have a prefix of "containerd.io/snapshot/".
|
labels := snapshots.FilterInheritedLabels(desc.Annotations)
|
||||||
labels := make(map[string]string)
|
if labels == nil {
|
||||||
for k, v := range desc.Annotations {
|
labels = make(map[string]string)
|
||||||
if strings.HasPrefix(k, inheritedLabelsPrefix) {
|
|
||||||
labels[k] = v
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
labels[labelSnapshotRef] = chainID
|
labels[labelSnapshotRef] = chainID
|
||||||
labelOpt := snapshots.WithLabels(labels)
|
labelOpt := snapshots.WithLabels(labels)
|
||||||
|
Loading…
Reference in New Issue
Block a user