MCPcopy
hub / github.com/containerd/containerd / readImage

Function readImage

core/metadata/images.go:379–417  ·  view source on GitHub ↗
(image *images.Image, bkt *bolt.Bucket)

Source from the content-addressed store, hash-verified

377}
378
379func readImage(image *images.Image, bkt *bolt.Bucket) error {
380 if err := boltutil.ReadTimestamps(bkt, &image.CreatedAt, &image.UpdatedAt); err != nil {
381 return err
382 }
383
384 labels, err := boltutil.ReadLabels(bkt)
385 if err != nil {
386 return err
387 }
388 image.Labels = labels
389
390 image.Target.Annotations, err = boltutil.ReadAnnotations(bkt)
391 if err != nil {
392 return err
393 }
394
395 tbkt := bkt.Bucket(bucketKeyTarget)
396 if tbkt == nil {
397 return errors.New("unable to read target bucket")
398 }
399 return tbkt.ForEach(func(k, v []byte) error {
400 if v == nil {
401 return nil // skip it? a bkt maybe?
402 }
403
404 // TODO(stevvooe): This is why we need to use byte values for
405 // keys, rather than full arrays.
406 switch string(k) {
407 case string(bucketKeyDigest):
408 image.Target.Digest = digest.Digest(v)
409 case string(bucketKeyMediaType):
410 image.Target.MediaType = string(v)
411 case string(bucketKeySize):
412 image.Target.Size, _ = binary.Varint(v)
413 }
414
415 return nil
416 })
417}
418
419func writeImage(bkt *bolt.Bucket, image *images.Image) error {
420 if err := boltutil.WriteTimestamps(bkt, image.CreatedAt, image.UpdatedAt); err != nil {

Callers 4

GetMethod · 0.85
ListMethod · 0.85
UpdateMethod · 0.85
DeleteMethod · 0.85

Calls 4

ReadTimestampsFunction · 0.92
ReadLabelsFunction · 0.92
ReadAnnotationsFunction · 0.92
DigestMethod · 0.65

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…