isula-build/patch/0071-use-image.GetNamedTaggedReference-instead-of-dockerf.patch

237 lines
6.5 KiB
Diff
Raw Normal View History

From 7117427081e16b18eca768bf4e3274bd3e1fbb2b Mon Sep 17 00:00:00 2001
From: xingweizheng <xingweizheng@huawei.com>
Date: Wed, 1 Sep 2021 22:29:12 +0800
Subject: [PATCH 5/5] use image.GetNamedTaggedReference instead of
dockerfile.CheckAndExpandTag
---
builder/dockerfile/builder.go | 44 +-------------------
builder/dockerfile/builder_test.go | 84 --------------------------------------
daemon/import.go | 2 +-
daemon/manifest.go | 3 +-
daemon/tag.go | 3 +-
5 files changed, 5 insertions(+), 131 deletions(-)
diff --git a/builder/dockerfile/builder.go b/builder/dockerfile/builder.go
index e28fac9..df8c6ce 100644
--- a/builder/dockerfile/builder.go
+++ b/builder/dockerfile/builder.go
@@ -27,7 +27,6 @@ import (
"strings"
"time"
- "github.com/containers/image/v5/docker/reference"
"github.com/containers/image/v5/manifest"
securejoin "github.com/cyphar/filepath-securejoin"
"github.com/opencontainers/go-digest"
@@ -203,14 +202,14 @@ func parseTag(output, additionalTag string) (string, string, error) {
addTag string
)
if tag = parseOutputTag(output); tag != "" {
- _, tag, err = CheckAndExpandTag(tag)
+ _, tag, err = image.GetNamedTaggedReference(tag)
if err != nil {
return "", "", err
}
}
if additionalTag != "" {
- _, addTag, err = CheckAndExpandTag(additionalTag)
+ _, addTag, err = image.GetNamedTaggedReference(additionalTag)
if err != nil {
return "", "", err
}
@@ -633,42 +632,3 @@ func parseOutputTag(output string) string {
return tag
}
-
-// CheckAndExpandTag checks tag name. If it not include a tag, "latest" will be added.
-func CheckAndExpandTag(tag string) (reference.Named, string, error) {
- if tag == "" {
- return nil, "", nil
- }
-
- newTag := tag
- slashLastIndex := strings.LastIndex(newTag, "/")
- sepLastIndex := strings.LastIndex(newTag, ":")
- if sepLastIndex == -1 || (sepLastIndex < slashLastIndex) {
- // isula
- // localhost:5000/isula
- newTag = fmt.Sprintf("%s:%s", newTag, constant.DefaultTag)
- }
-
- const longestTagFieldsLen = 3
- if len(strings.Split(newTag, ":")) > longestTagFieldsLen {
- // localhost:5000:5000/isula:latest
- return nil, "", errors.Errorf("invalid tag: %v", newTag)
- }
-
- oriRef, err := reference.ParseNormalizedNamed(newTag)
- if err != nil {
- return nil, "", errors.Wrapf(err, "parse tag err, invalid tag: %v", newTag)
- }
-
- tagWithoutRepo := newTag[slashLastIndex+1:]
- _, err = reference.ParseNormalizedNamed(tagWithoutRepo)
- if err != nil {
- // isula:latest:latest
- // localhost/isula:latest:latest
- // isula!@#:latest
- // isula :latest
- return nil, "", errors.Wrapf(err, "parse tag err, invalid tag: %v", newTag)
- }
-
- return oriRef, newTag, nil
-}
diff --git a/builder/dockerfile/builder_test.go b/builder/dockerfile/builder_test.go
index 60668e1..c2fec6c 100644
--- a/builder/dockerfile/builder_test.go
+++ b/builder/dockerfile/builder_test.go
@@ -1470,87 +1470,3 @@ func TestNewBuilder(t *testing.T) {
})
}
}
-
-func TestCheckAndExpandTag(t *testing.T) {
- type testcase struct {
- name string
- tag string
- output string
- wantErr bool
- }
- testcases := []testcase{
- {
- name: "test 1",
- tag: "isula/test",
- output: "isula/test:latest",
- wantErr: false,
- },
- {
- name: "test 2",
- tag: "localhost:5000/test",
- output: "localhost:5000/test:latest",
- wantErr: false,
- },
- {
- name: "test 3",
- tag: "isula/test:latest",
- output: "isula/test:latest",
- wantErr: false,
- },
- {
- name: "test 4",
- tag: "localhost:5000/test:latest",
- output: "localhost:5000/test:latest",
- wantErr: false,
- },
- {
- name: "test 5",
- tag: "localhost:5000:aaa/test:latest",
- output: "",
- wantErr: true,
- },
- {
- name: "test 6",
- tag: "localhost:5000:aaa/test",
- output: "",
- wantErr: true,
- },
- {
- name: "test 7",
- tag: "localhost:5000/test:latest:latest",
- output: "",
- wantErr: true,
- },
- {
- name: "test 8",
- tag: "test:latest:latest",
- output: "",
- wantErr: true,
- },
- {
- name: "test 9",
- tag: "",
- output: "",
- wantErr: false,
- },
- {
- name: "test 10",
- tag: "abc efg:latest",
- output: "",
- wantErr: true,
- },
- {
- name: "test 10",
- tag: "abc!@#:latest",
- output: "",
- wantErr: true,
- },
- }
- for _, tc := range testcases {
- _, tag, err := CheckAndExpandTag(tc.tag)
- assert.Equal(t, tag, tc.output, tc.name)
- if (err != nil) != tc.wantErr {
- t.Errorf("getCheckAndExpandTag() error = %v, wantErr %v", err, tc.wantErr)
- }
- }
-}
diff --git a/daemon/import.go b/daemon/import.go
index 40a0a92..2da36be 100644
--- a/daemon/import.go
+++ b/daemon/import.go
@@ -62,7 +62,7 @@ func (b *Backend) Import(req *pb.ImportRequest, stream pb.Control_ImportServer)
logEntry.Error(err)
return err
}
- _, reference, err = dockerfile.CheckAndExpandTag(reference)
+ _, reference, err = image.GetNamedTaggedReference(reference)
if err != nil {
logEntry.Error(err)
return err
diff --git a/daemon/manifest.go b/daemon/manifest.go
index 36e7674..940850e 100644
--- a/daemon/manifest.go
+++ b/daemon/manifest.go
@@ -26,7 +26,6 @@ import (
constant "isula.org/isula-build"
pb "isula.org/isula-build/api/services"
- "isula.org/isula-build/builder/dockerfile"
"isula.org/isula-build/exporter"
"isula.org/isula-build/image"
"isula.org/isula-build/pkg/logger"
@@ -61,7 +60,7 @@ func (b *Backend) ManifestCreate(ctx context.Context, req *pb.ManifestCreateRequ
}
// expand list name
- _, imageName, err := dockerfile.CheckAndExpandTag(manifestName)
+ _, imageName, err := image.GetNamedTaggedReference(manifestName)
if err != nil {
logrus.WithField(util.LogKeySessionID, manifestName).Errorf("Check and expand list name err: %v", err)
return &pb.ManifestCreateResponse{}, err
diff --git a/daemon/tag.go b/daemon/tag.go
index fe6a5a2..57de15c 100644
--- a/daemon/tag.go
+++ b/daemon/tag.go
@@ -21,7 +21,6 @@ import (
"github.com/sirupsen/logrus"
pb "isula.org/isula-build/api/services"
- "isula.org/isula-build/builder/dockerfile"
"isula.org/isula-build/image"
)
@@ -40,7 +39,7 @@ func (b *Backend) Tag(ctx context.Context, req *pb.TagRequest) (*gogotypes.Empty
return emptyResp, errors.Wrapf(err, "find local image %v error", req.Image)
}
- _, imageName, err := dockerfile.CheckAndExpandTag(req.Tag)
+ _, imageName, err := image.GetNamedTaggedReference(req.Tag)
if err != nil {
return emptyResp, err
}
--
1.8.3.1