From cdba61603cfb18040522d88c5edd65138b6110e1 Mon Sep 17 00:00:00 2001 From: Bjorn Neergaard Date: Wed, 27 Sep 2023 11:18:34 -0600 Subject: [PATCH] remotes: use mediatype helpers Signed-off-by: Bjorn Neergaard --- remotes/docker/converter.go | 4 +--- remotes/docker/fetcher.go | 6 ++---- remotes/docker/pusher.go | 6 ++---- remotes/handlers.go | 34 +++++++++++++--------------------- 4 files changed, 18 insertions(+), 32 deletions(-) diff --git a/remotes/docker/converter.go b/remotes/docker/converter.go index 95a68d70e..cdf6183fb 100644 --- a/remotes/docker/converter.go +++ b/remotes/docker/converter.go @@ -41,9 +41,7 @@ const LegacyConfigMediaType = "application/octet-stream" // 1. original manifest will be deleted by next gc round. // 2. don't cover manifest list. func ConvertManifest(ctx context.Context, store content.Store, desc ocispec.Descriptor) (ocispec.Descriptor, error) { - if !(desc.MediaType == images.MediaTypeDockerSchema2Manifest || - desc.MediaType == ocispec.MediaTypeImageManifest) { - + if !images.IsManifestType(desc.MediaType) { log.G(ctx).Warnf("do nothing for media type: %s", desc.MediaType) return desc, nil } diff --git a/remotes/docker/fetcher.go b/remotes/docker/fetcher.go index af538962e..96073e1a9 100644 --- a/remotes/docker/fetcher.go +++ b/remotes/docker/fetcher.go @@ -94,10 +94,8 @@ func (r dockerFetcher) Fetch(ctx context.Context, desc ocispec.Descriptor) (io.R } // Try manifests endpoints for manifests types - switch desc.MediaType { - case images.MediaTypeDockerSchema2Manifest, images.MediaTypeDockerSchema2ManifestList, - images.MediaTypeDockerSchema1Manifest, - ocispec.MediaTypeImageManifest, ocispec.MediaTypeImageIndex: + if images.IsManifestType(desc.MediaType) || images.IsIndexType(desc.MediaType) || + desc.MediaType == images.MediaTypeDockerSchema1Manifest { var firstErr error for _, host := range r.hosts { diff --git a/remotes/docker/pusher.go b/remotes/docker/pusher.go index cc785930e..3e70cbe51 100644 --- a/remotes/docker/pusher.go +++ b/remotes/docker/pusher.go @@ -103,12 +103,10 @@ func (p dockerPusher) push(ctx context.Context, desc ocispec.Descriptor, ref str host = hosts[0] ) - switch desc.MediaType { - case images.MediaTypeDockerSchema2Manifest, images.MediaTypeDockerSchema2ManifestList, - ocispec.MediaTypeImageManifest, ocispec.MediaTypeImageIndex: + if images.IsManifestType(desc.MediaType) || images.IsIndexType(desc.MediaType) { isManifest = true existCheck = getManifestPath(p.object, desc.Digest) - default: + } else { existCheck = []string{"blobs", desc.Digest.String()} } diff --git a/remotes/handlers.go b/remotes/handlers.go index e17ef3def..c7f1739c3 100644 --- a/remotes/handlers.go +++ b/remotes/handlers.go @@ -71,17 +71,17 @@ func MakeRefKey(ctx context.Context, desc ocispec.Descriptor) string { } } - switch mt := desc.MediaType; { - case mt == images.MediaTypeDockerSchema2Manifest || mt == ocispec.MediaTypeImageManifest: + switch { + case images.IsManifestType(desc.MediaType): return "manifest-" + key - case mt == images.MediaTypeDockerSchema2ManifestList || mt == ocispec.MediaTypeImageIndex: + case images.IsIndexType(desc.MediaType): return "index-" + key - case images.IsLayerType(mt): + case images.IsLayerType(desc.MediaType): return "layer-" + key - case images.IsKnownConfig(mt): + case images.IsKnownConfig(desc.MediaType): return "config-" + key default: - log.G(ctx).Warnf("reference for unknown type: %s", mt) + log.G(ctx).Warnf("reference for unknown type: %s", desc.MediaType) return "unknown-" + key } } @@ -214,20 +214,18 @@ func PushContent(ctx context.Context, pusher Pusher, desc ocispec.Descriptor, st indexStack := []ocispec.Descriptor{} filterHandler := images.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) { - switch desc.MediaType { - case images.MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest: + if images.IsManifestType(desc.MediaType) { m.Lock() manifests = append(manifests, desc) m.Unlock() return nil, images.ErrStopHandler - case images.MediaTypeDockerSchema2ManifestList, ocispec.MediaTypeImageIndex: + } else if images.IsIndexType(desc.MediaType) { m.Lock() indexStack = append(indexStack, desc) m.Unlock() return nil, images.ErrStopHandler - default: - return nil, nil } + return nil, nil }) pushHandler := PushHandler(pusher, store) @@ -319,20 +317,17 @@ func FilterManifestByPlatformHandler(f images.HandlerFunc, m platforms.Matcher) } var descs []ocispec.Descriptor - switch desc.MediaType { - case images.MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest: + if images.IsManifestType(desc.MediaType) { if m.Match(*desc.Platform) { descs = children } else { for _, child := range children { - if child.MediaType == images.MediaTypeDockerSchema2Config || - child.MediaType == ocispec.MediaTypeImageConfig { - + if images.IsConfigType(child.MediaType) { descs = append(descs, child) } } } - default: + } else { descs = children } return descs, nil @@ -350,10 +345,7 @@ func annotateDistributionSourceHandler(f images.HandlerFunc, provider content.In // Distribution source is only used for config or blob but may be inherited from // a manifest or manifest list - switch desc.MediaType { - case images.MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest, - images.MediaTypeDockerSchema2ManifestList, ocispec.MediaTypeImageIndex: - default: + if !images.IsManifestType(desc.MediaType) && !images.IsIndexType(desc.MediaType) { return children, nil }