remotes: use mediatype helpers
Signed-off-by: Bjorn Neergaard <bjorn.neergaard@docker.com>
This commit is contained in:
parent
69034f7558
commit
cdba61603c
@ -41,9 +41,7 @@ const LegacyConfigMediaType = "application/octet-stream"
|
|||||||
// 1. original manifest will be deleted by next gc round.
|
// 1. original manifest will be deleted by next gc round.
|
||||||
// 2. don't cover manifest list.
|
// 2. don't cover manifest list.
|
||||||
func ConvertManifest(ctx context.Context, store content.Store, desc ocispec.Descriptor) (ocispec.Descriptor, error) {
|
func ConvertManifest(ctx context.Context, store content.Store, desc ocispec.Descriptor) (ocispec.Descriptor, error) {
|
||||||
if !(desc.MediaType == images.MediaTypeDockerSchema2Manifest ||
|
if !images.IsManifestType(desc.MediaType) {
|
||||||
desc.MediaType == ocispec.MediaTypeImageManifest) {
|
|
||||||
|
|
||||||
log.G(ctx).Warnf("do nothing for media type: %s", desc.MediaType)
|
log.G(ctx).Warnf("do nothing for media type: %s", desc.MediaType)
|
||||||
return desc, nil
|
return desc, nil
|
||||||
}
|
}
|
||||||
|
@ -94,10 +94,8 @@ func (r dockerFetcher) Fetch(ctx context.Context, desc ocispec.Descriptor) (io.R
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Try manifests endpoints for manifests types
|
// Try manifests endpoints for manifests types
|
||||||
switch desc.MediaType {
|
if images.IsManifestType(desc.MediaType) || images.IsIndexType(desc.MediaType) ||
|
||||||
case images.MediaTypeDockerSchema2Manifest, images.MediaTypeDockerSchema2ManifestList,
|
desc.MediaType == images.MediaTypeDockerSchema1Manifest {
|
||||||
images.MediaTypeDockerSchema1Manifest,
|
|
||||||
ocispec.MediaTypeImageManifest, ocispec.MediaTypeImageIndex:
|
|
||||||
|
|
||||||
var firstErr error
|
var firstErr error
|
||||||
for _, host := range r.hosts {
|
for _, host := range r.hosts {
|
||||||
|
@ -103,12 +103,10 @@ func (p dockerPusher) push(ctx context.Context, desc ocispec.Descriptor, ref str
|
|||||||
host = hosts[0]
|
host = hosts[0]
|
||||||
)
|
)
|
||||||
|
|
||||||
switch desc.MediaType {
|
if images.IsManifestType(desc.MediaType) || images.IsIndexType(desc.MediaType) {
|
||||||
case images.MediaTypeDockerSchema2Manifest, images.MediaTypeDockerSchema2ManifestList,
|
|
||||||
ocispec.MediaTypeImageManifest, ocispec.MediaTypeImageIndex:
|
|
||||||
isManifest = true
|
isManifest = true
|
||||||
existCheck = getManifestPath(p.object, desc.Digest)
|
existCheck = getManifestPath(p.object, desc.Digest)
|
||||||
default:
|
} else {
|
||||||
existCheck = []string{"blobs", desc.Digest.String()}
|
existCheck = []string{"blobs", desc.Digest.String()}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -71,17 +71,17 @@ func MakeRefKey(ctx context.Context, desc ocispec.Descriptor) string {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
switch mt := desc.MediaType; {
|
switch {
|
||||||
case mt == images.MediaTypeDockerSchema2Manifest || mt == ocispec.MediaTypeImageManifest:
|
case images.IsManifestType(desc.MediaType):
|
||||||
return "manifest-" + key
|
return "manifest-" + key
|
||||||
case mt == images.MediaTypeDockerSchema2ManifestList || mt == ocispec.MediaTypeImageIndex:
|
case images.IsIndexType(desc.MediaType):
|
||||||
return "index-" + key
|
return "index-" + key
|
||||||
case images.IsLayerType(mt):
|
case images.IsLayerType(desc.MediaType):
|
||||||
return "layer-" + key
|
return "layer-" + key
|
||||||
case images.IsKnownConfig(mt):
|
case images.IsKnownConfig(desc.MediaType):
|
||||||
return "config-" + key
|
return "config-" + key
|
||||||
default:
|
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
|
return "unknown-" + key
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -214,20 +214,18 @@ func PushContent(ctx context.Context, pusher Pusher, desc ocispec.Descriptor, st
|
|||||||
indexStack := []ocispec.Descriptor{}
|
indexStack := []ocispec.Descriptor{}
|
||||||
|
|
||||||
filterHandler := images.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
|
filterHandler := images.HandlerFunc(func(ctx context.Context, desc ocispec.Descriptor) ([]ocispec.Descriptor, error) {
|
||||||
switch desc.MediaType {
|
if images.IsManifestType(desc.MediaType) {
|
||||||
case images.MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest:
|
|
||||||
m.Lock()
|
m.Lock()
|
||||||
manifests = append(manifests, desc)
|
manifests = append(manifests, desc)
|
||||||
m.Unlock()
|
m.Unlock()
|
||||||
return nil, images.ErrStopHandler
|
return nil, images.ErrStopHandler
|
||||||
case images.MediaTypeDockerSchema2ManifestList, ocispec.MediaTypeImageIndex:
|
} else if images.IsIndexType(desc.MediaType) {
|
||||||
m.Lock()
|
m.Lock()
|
||||||
indexStack = append(indexStack, desc)
|
indexStack = append(indexStack, desc)
|
||||||
m.Unlock()
|
m.Unlock()
|
||||||
return nil, images.ErrStopHandler
|
return nil, images.ErrStopHandler
|
||||||
default:
|
|
||||||
return nil, nil
|
|
||||||
}
|
}
|
||||||
|
return nil, nil
|
||||||
})
|
})
|
||||||
|
|
||||||
pushHandler := PushHandler(pusher, store)
|
pushHandler := PushHandler(pusher, store)
|
||||||
@ -319,20 +317,17 @@ func FilterManifestByPlatformHandler(f images.HandlerFunc, m platforms.Matcher)
|
|||||||
}
|
}
|
||||||
|
|
||||||
var descs []ocispec.Descriptor
|
var descs []ocispec.Descriptor
|
||||||
switch desc.MediaType {
|
if images.IsManifestType(desc.MediaType) {
|
||||||
case images.MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest:
|
|
||||||
if m.Match(*desc.Platform) {
|
if m.Match(*desc.Platform) {
|
||||||
descs = children
|
descs = children
|
||||||
} else {
|
} else {
|
||||||
for _, child := range children {
|
for _, child := range children {
|
||||||
if child.MediaType == images.MediaTypeDockerSchema2Config ||
|
if images.IsConfigType(child.MediaType) {
|
||||||
child.MediaType == ocispec.MediaTypeImageConfig {
|
|
||||||
|
|
||||||
descs = append(descs, child)
|
descs = append(descs, child)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
default:
|
} else {
|
||||||
descs = children
|
descs = children
|
||||||
}
|
}
|
||||||
return descs, nil
|
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
|
// Distribution source is only used for config or blob but may be inherited from
|
||||||
// a manifest or manifest list
|
// a manifest or manifest list
|
||||||
switch desc.MediaType {
|
if !images.IsManifestType(desc.MediaType) && !images.IsIndexType(desc.MediaType) {
|
||||||
case images.MediaTypeDockerSchema2Manifest, ocispec.MediaTypeImageManifest,
|
|
||||||
images.MediaTypeDockerSchema2ManifestList, ocispec.MediaTypeImageIndex:
|
|
||||||
default:
|
|
||||||
return children, nil
|
return children, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user