Skip to content

Commit 42074d0

Browse files
author
zhouhao
committed
image: code optimization
Signed-off-by: zhouhao <[email protected]>
1 parent db7aec0 commit 42074d0

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
@@ -105,7 +105,7 @@ func validate(w walker, refs []string, out *log.Logger) error {
105105
return err
106106
}
107107

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

134-
if err := m.validate(w); err != nil {
134+
if err := validateManifest(m, w); err != nil {
135135
return err
136136
}
137137
}
@@ -198,11 +198,11 @@ func unpack(w walker, dest, refName, platform 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, refName, platform string) error {
221221
}
222222

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

@@ -281,7 +281,7 @@ func createRuntimeBundle(w walker, dest, refName, rootfs, platform string) error
281281
return err
282282
}
283283

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

@@ -311,7 +311,7 @@ func createRuntimeBundle(w walker, dest, refName, rootfs, platform string) error
311311
return nil
312312
}
313313

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

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

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

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

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

375-
if err := m.validate(w); err != nil {
375+
if err := validateManifest(m, w); err != nil {
376376
return manifests, err
377377
}
378378
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)