X Tutup
Skip to content

Commit 309e1db

Browse files
stefanbergerJared Cordasco
authored andcommitted
Write the Annotations map into the bolt db
Signed-off-by: Stefan Berger <stefanb@linux.ibm.com> (cherry picked from commit 5124f9e) Signed-off-by: Jared Cordasco <jcordasc@coglib.com>
1 parent a456958 commit 309e1db

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

metadata/boltutil/helpers.go

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,10 @@ import (
2424
)
2525

2626
var (
27-
bucketKeyLabels = []byte("labels")
28-
bucketKeyCreatedAt = []byte("createdat")
29-
bucketKeyUpdatedAt = []byte("updatedat")
27+
bucketKeyAnnotations = []byte("annotations")
28+
bucketKeyLabels = []byte("labels")
29+
bucketKeyCreatedAt = []byte("createdat")
30+
bucketKeyUpdatedAt = []byte("updatedat")
3031
)
3132

3233
// ReadLabels reads the labels key from the bucket
@@ -35,6 +36,12 @@ func ReadLabels(bkt *bolt.Bucket) (map[string]string, error) {
3536
return readMap(bkt, bucketKeyLabels)
3637
}
3738

39+
// ReadAnnotations reads the OCI Descriptor Annotations key from the bucket
40+
// Uses the key "annotations"
41+
func ReadAnnotations(bkt *bolt.Bucket) (map[string]string, error) {
42+
return readMap(bkt, bucketKeyAnnotations)
43+
}
44+
3845
func readMap(bkt *bolt.Bucket, bucketName []byte) (map[string]string, error) {
3946
lbkt := bkt.Bucket(bucketName)
4047
if lbkt == nil {
@@ -60,6 +67,11 @@ func WriteLabels(bkt *bolt.Bucket, labels map[string]string) error {
6067
return writeMap(bkt, bucketKeyLabels, labels)
6168
}
6269

70+
// WriteAnnotations writes the OCI Descriptor Annotations
71+
func WriteAnnotations(bkt *bolt.Bucket, labels map[string]string) error {
72+
return writeMap(bkt, bucketKeyAnnotations, labels)
73+
}
74+
6375
func writeMap(bkt *bolt.Bucket, bucketName []byte, labels map[string]string) error {
6476
// Remove existing labels to keep from merging
6577
if lbkt := bkt.Bucket(bucketName); lbkt != nil {

metadata/images.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -192,6 +192,14 @@ func (s *imageStore) Update(ctx context.Context, image images.Image, fieldpaths
192192
key := strings.TrimPrefix(path, "labels.")
193193
updated.Labels[key] = image.Labels[key]
194194
continue
195+
} else if strings.HasPrefix(path, "annotations.") {
196+
if updated.Target.Annotations == nil {
197+
updated.Target.Annotations = map[string]string{}
198+
}
199+
200+
key := strings.TrimPrefix(path, "annotations.")
201+
updated.Target.Annotations[key] = image.Target.Annotations[key]
202+
continue
195203
}
196204

197205
switch path {
@@ -204,6 +212,8 @@ func (s *imageStore) Update(ctx context.Context, image images.Image, fieldpaths
204212
// make sense to modify the size or digest without touching the
205213
// mediatype, as well, for example.
206214
updated.Target = image.Target
215+
case "annotations":
216+
updated.Target.Annotations = image.Target.Annotations
207217
default:
208218
return errors.Wrapf(errdefs.ErrInvalidArgument, "cannot update %q field on image %q", path, image.Name)
209219
}
@@ -298,6 +308,11 @@ func readImage(image *images.Image, bkt *bolt.Bucket) error {
298308
}
299309
image.Labels = labels
300310

311+
image.Target.Annotations, err = boltutil.ReadAnnotations(bkt)
312+
if err != nil {
313+
return err
314+
}
315+
301316
tbkt := bkt.Bucket(bucketKeyTarget)
302317
if tbkt == nil {
303318
return errors.New("unable to read target bucket")
@@ -331,6 +346,10 @@ func writeImage(bkt *bolt.Bucket, image *images.Image) error {
331346
return errors.Wrapf(err, "writing labels for image %v", image.Name)
332347
}
333348

349+
if err := boltutil.WriteAnnotations(bkt, image.Target.Annotations); err != nil {
350+
return errors.Wrapf(err, "writing Annotations for image %v", image.Name)
351+
}
352+
334353
// write the target bucket
335354
tbkt, err := bkt.CreateBucketIfNotExists(bucketKeyTarget)
336355
if err != nil {

0 commit comments

Comments
 (0)
X Tutup