...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package remote
16
17 import (
18 "github.com/google/go-containerregistry/pkg/name"
19 v1 "github.com/google/go-containerregistry/pkg/v1"
20 "github.com/google/go-containerregistry/pkg/v1/partial"
21 )
22
23
24
25 type MountableLayer struct {
26 v1.Layer
27
28 Reference name.Reference
29 }
30
31
32
33 func (ml *MountableLayer) Descriptor() (*v1.Descriptor, error) {
34 return partial.Descriptor(ml.Layer)
35 }
36
37
38 func (ml *MountableLayer) Exists() (bool, error) {
39 return partial.Exists(ml.Layer)
40 }
41
42
43
44
45 type mountableImage struct {
46 v1.Image
47
48 Reference name.Reference
49 }
50
51
52 func (mi *mountableImage) Layers() ([]v1.Layer, error) {
53 ls, err := mi.Image.Layers()
54 if err != nil {
55 return nil, err
56 }
57 mls := make([]v1.Layer, 0, len(ls))
58 for _, l := range ls {
59 mls = append(mls, &MountableLayer{
60 Layer: l,
61 Reference: mi.Reference,
62 })
63 }
64 return mls, nil
65 }
66
67
68 func (mi *mountableImage) LayerByDigest(d v1.Hash) (v1.Layer, error) {
69 l, err := mi.Image.LayerByDigest(d)
70 if err != nil {
71 return nil, err
72 }
73 return &MountableLayer{
74 Layer: l,
75 Reference: mi.Reference,
76 }, nil
77 }
78
79
80 func (mi *mountableImage) LayerByDiffID(d v1.Hash) (v1.Layer, error) {
81 l, err := mi.Image.LayerByDiffID(d)
82 if err != nil {
83 return nil, err
84 }
85 return &MountableLayer{
86 Layer: l,
87 Reference: mi.Reference,
88 }, nil
89 }
90
91
92
93 func (mi *mountableImage) Descriptor() (*v1.Descriptor, error) {
94 return partial.Descriptor(mi.Image)
95 }
96
97
98
99 func (mi *mountableImage) ConfigLayer() (v1.Layer, error) {
100 l, err := partial.ConfigLayer(mi.Image)
101 if err != nil {
102 return nil, err
103 }
104 return &MountableLayer{
105 Layer: l,
106 Reference: mi.Reference,
107 }, nil
108 }
109
View as plain text