From 8ed54849a63113bd319eda8b5fd437174e8728e8 Mon Sep 17 00:00:00 2001 From: Derek McGowan Date: Tue, 31 May 2022 22:40:49 -0700 Subject: [PATCH] Move docker reference logic to reference/docker package Signed-off-by: Derek McGowan --- pkg/cri/store/image/image.go | 4 ++-- reference/{ => docker}/sort.go | 34 ++++++++++++++--------------- reference/{ => docker}/sort_test.go | 2 +- 3 files changed, 19 insertions(+), 21 deletions(-) rename reference/{ => docker}/sort.go (72%) rename reference/{ => docker}/sort_test.go (99%) diff --git a/pkg/cri/store/image/image.go b/pkg/cri/store/image/image.go index 7d71d3741..74ccce219 100644 --- a/pkg/cri/store/image/image.go +++ b/pkg/cri/store/image/image.go @@ -24,7 +24,7 @@ import ( "github.com/containerd/containerd" "github.com/containerd/containerd/errdefs" "github.com/containerd/containerd/pkg/cri/util" - "github.com/containerd/containerd/reference" + "github.com/containerd/containerd/reference/docker" imagedigest "github.com/opencontainers/go-digest" "github.com/opencontainers/go-digest/digestset" @@ -206,7 +206,7 @@ func (s *store) add(img Image) error { return nil } // Or else, merge and sort the references. - i.References = reference.Sort(util.MergeStringSlices(i.References, img.References)) + i.References = docker.Sort(util.MergeStringSlices(i.References, img.References)) s.images[img.ID] = i return nil } diff --git a/reference/sort.go b/reference/docker/sort.go similarity index 72% rename from reference/sort.go rename to reference/docker/sort.go index 38c3d0672..984e37528 100644 --- a/reference/sort.go +++ b/reference/docker/sort.go @@ -14,21 +14,26 @@ limitations under the License. */ -package reference +package docker import ( "sort" - - "github.com/containerd/containerd/reference/docker" ) -// Sort sorts references by refRank then string comparison +// Sort sorts string references preferring higher information references +// The precedence is as follows: +// 1. Name + Tag + Digest +// 2. Name + Tag +// 3. Name + Digest +// 4. Name +// 5. Digest +// 6. Parse error func Sort(references []string) []string { - var prefs []docker.Reference + var prefs []Reference var bad []string for _, ref := range references { - pref, err := docker.ParseAnyReference(ref) + pref, err := ParseAnyReference(ref) if err != nil { bad = append(bad, ref) } else { @@ -51,22 +56,15 @@ func Sort(references []string) []string { return append(refs, bad...) } -// refRank ranks precedence for reference type, preferring higher information references -// 1. Name + Tag + Digest -// 2. Name + Tag -// 3. Name + Digest -// 4. Name -// 5. Digest -// 6. Parse error -func refRank(ref docker.Reference) uint8 { - if _, ok := ref.(docker.Named); ok { - if _, ok = ref.(docker.Tagged); ok { - if _, ok = ref.(docker.Digested); ok { +func refRank(ref Reference) uint8 { + if _, ok := ref.(Named); ok { + if _, ok = ref.(Tagged); ok { + if _, ok = ref.(Digested); ok { return 1 } return 2 } - if _, ok = ref.(docker.Digested); ok { + if _, ok = ref.(Digested); ok { return 3 } return 4 diff --git a/reference/sort_test.go b/reference/docker/sort_test.go similarity index 99% rename from reference/sort_test.go rename to reference/docker/sort_test.go index f1e68bb95..3d306cb1a 100644 --- a/reference/sort_test.go +++ b/reference/docker/sort_test.go @@ -14,7 +14,7 @@ limitations under the License. */ -package reference +package docker import ( "io"