Skip to content

Commit 974de27

Browse files
author
Zhou Hao
authored
Merge pull request #153 from q384566678/config-type
image: code optimization
2 parents af57c3b + 42074d0 commit 974de27

File tree

4 files changed

+23
-30
lines changed

4 files changed

+23
-30
lines changed

image/config.go

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,8 @@ import (
3131
"github.com/pkg/errors"
3232
)
3333

34-
type config v1.Image
35-
36-
func findConfig(w walker, d *v1.Descriptor) (*config, error) {
37-
var c config
34+
func findConfig(w walker, d *v1.Descriptor) (*v1.Image, error) {
35+
var c v1.Image
3836
cpath := filepath.Join("blobs", string(d.Digest.Algorithm()), d.Digest.Hex())
3937

4038
switch err := w.walk(func(path string, info os.FileInfo, r io.Reader) error {
@@ -65,7 +63,7 @@ func findConfig(w walker, d *v1.Descriptor) (*config, error) {
6563
}
6664
}
6765

68-
func (c *config) runtimeSpec(rootfs string) (*specs.Spec, error) {
66+
func runtimeSpec(c *v1.Image, rootfs string) (*specs.Spec, error) {
6967
if c.OS != "linux" {
7068
return nil, fmt.Errorf("%s: unsupported OS", c.OS)
7169
}

image/image.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ func validate(w walker, refs []string, out *log.Logger) error {
104104
return err
105105
}
106106

107-
if err := m.validate(w); err != nil {
107+
if err := validateManifest(m, w); err != nil {
108108
return err
109109
}
110110
}
@@ -130,7 +130,7 @@ func validate(w walker, refs []string, out *log.Logger) error {
130130
return err
131131
}
132132

133-
if err := m.validate(w); err != nil {
133+
if err := validateManifest(m, w); err != nil {
134134
return err
135135
}
136136
}
@@ -198,11 +198,11 @@ func unpack(w walker, dest, platform string, refs []string) error {
198198
return err
199199
}
200200

201-
if err := m.validate(w); err != nil {
201+
if err := validateManifest(m, w); err != nil {
202202
return err
203203
}
204204

205-
return m.unpack(w, dest)
205+
return unpackManifest(m, w, dest)
206206
}
207207

208208
if ref.MediaType == validRefMediaTypes[1] {
@@ -221,7 +221,7 @@ func unpack(w walker, dest, platform string, refs []string) error {
221221
}
222222

223223
for _, m := range manifests {
224-
return m.unpack(w, dest)
224+
return unpackManifest(m, w, dest)
225225
}
226226
}
227227

@@ -282,7 +282,7 @@ func createRuntimeBundle(w walker, dest, rootfs, platform string, refs []string)
282282
return err
283283
}
284284

285-
if err := m.validate(w); err != nil {
285+
if err := validateManifest(m, w); err != nil {
286286
return err
287287
}
288288

@@ -312,7 +312,7 @@ func createRuntimeBundle(w walker, dest, rootfs, platform string, refs []string)
312312
return nil
313313
}
314314

315-
func createBundle(w walker, m *manifest, dest, rootfs string) (retErr error) {
315+
func createBundle(w walker, m *v1.Manifest, dest, rootfs string) (retErr error) {
316316
c, err := findConfig(w, &m.Config)
317317
if err != nil {
318318
return err
@@ -335,11 +335,11 @@ func createBundle(w walker, m *manifest, dest, rootfs string) (retErr error) {
335335
}
336336
}
337337

338-
if err = m.unpack(w, filepath.Join(dest, rootfs)); err != nil {
338+
if err = unpackManifest(m, w, filepath.Join(dest, rootfs)); err != nil {
339339
return err
340340
}
341341

342-
spec, err := c.runtimeSpec(rootfs)
342+
spec, err := runtimeSpec(c, rootfs)
343343
if err != nil {
344344
return err
345345
}
@@ -354,8 +354,8 @@ func createBundle(w walker, m *manifest, dest, rootfs string) (retErr error) {
354354
}
355355

356356
// filertManifest returns a filtered list of manifests
357-
func filterManifest(w walker, Manifests []v1.Descriptor, platform string) ([]*manifest, error) {
358-
var manifests []*manifest
357+
func filterManifest(w walker, Manifests []v1.Descriptor, platform string) ([]*v1.Manifest, error) {
358+
var manifests []*v1.Manifest
359359

360360
argsParts := strings.Split(platform, ":")
361361
if len(argsParts) != 2 {
@@ -373,7 +373,7 @@ func filterManifest(w walker, Manifests []v1.Descriptor, platform string) ([]*ma
373373
return manifests, err
374374
}
375375

376-
if err := m.validate(w); err != nil {
376+
if err := validateManifest(m, w); err != nil {
377377
return manifests, err
378378
}
379379
if strings.EqualFold(manifest.Platform.OS, argsParts[0]) && strings.EqualFold(manifest.Platform.Architecture, argsParts[1]) {

image/manifest.go

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,8 @@ import (
3535
"github.com/sirupsen/logrus"
3636
)
3737

38-
type manifest struct {
39-
Config v1.Descriptor `json:"config"`
40-
Layers []v1.Descriptor `json:"layers"`
41-
}
42-
43-
func findManifest(w walker, d *v1.Descriptor) (*manifest, error) {
44-
var m manifest
38+
func findManifest(w walker, d *v1.Descriptor) (*v1.Manifest, error) {
39+
var m v1.Manifest
4540
mpath := filepath.Join("blobs", string(d.Digest.Algorithm()), d.Digest.Hex())
4641

4742
switch err := w.walk(func(path string, info os.FileInfo, r io.Reader) error {
@@ -73,7 +68,7 @@ func findManifest(w walker, d *v1.Descriptor) (*manifest, error) {
7368
}
7469
}
7570

76-
func (m *manifest) validate(w walker) error {
71+
func validateManifest(m *v1.Manifest, w walker) error {
7772
if err := validateDescriptor(&m.Config, w, []string{v1.MediaTypeImageConfig}); err != nil {
7873
return errors.Wrap(err, "config validation failed")
7974
}
@@ -94,7 +89,7 @@ func (m *manifest) validate(w walker) error {
9489
return nil
9590
}
9691

97-
func (m *manifest) unpack(w walker, dest string) (retErr error) {
92+
func unpackManifest(m *v1.Manifest, w walker, dest string) (retErr error) {
9893
// error out if the dest directory is not empty
9994
s, err := ioutil.ReadDir(dest)
10095
if err != nil && !os.IsNotExist(err) { // We'll create the dir later

image/manifest_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,15 +141,15 @@ func testUnpackLayer(t *testing.T, compression string, invalid bool) {
141141
mediatype += "+" + compression
142142
}
143143

144-
testManifest := manifest{
144+
testManifest := v1.Manifest{
145145
Layers: []v1.Descriptor{
146146
{
147147
MediaType: mediatype,
148148
Digest: digester.Digest(),
149149
},
150150
},
151151
}
152-
err = testManifest.unpack(newPathWalker(tmp1), filepath.Join(tmp1, "rootfs"))
152+
err = unpackManifest(&testManifest, newPathWalker(tmp1), filepath.Join(tmp1, "rootfs"))
153153
if err != nil {
154154
t.Fatal(errors.Wrapf(err, "%q / %s", blobPath, compression))
155155
}
@@ -212,15 +212,15 @@ func TestUnpackLayerRemovePartiallyUnpackedFile(t *testing.T) {
212212
t.Fatal(err)
213213
}
214214

215-
testManifest := manifest{
215+
testManifest := v1.Manifest{
216216
Layers: []v1.Descriptor{
217217
{
218218
MediaType: "application/vnd.oci.image.layer.v1.tar+gzip",
219219
Digest: digester.Digest(),
220220
},
221221
},
222222
}
223-
err = testManifest.unpack(newPathWalker(tmp1), filepath.Join(tmp1, "rootfs"))
223+
err = unpackManifest(&testManifest, newPathWalker(tmp1), filepath.Join(tmp1, "rootfs"))
224224
if err != nil && !strings.Contains(err.Error(), "duplicate entry for") {
225225
t.Fatal(err)
226226
}

0 commit comments

Comments
 (0)