@@ -20,7 +20,6 @@ import (
2020 "context"
2121 "encoding/json"
2222 "sort"
23- "strings"
2423 "time"
2524
2625 "github.com/containerd/containerd/content"
@@ -358,16 +357,11 @@ func Children(ctx context.Context, provider content.Provider, desc ocispec.Descr
358357 }
359358
360359 descs = append (descs , index .Manifests ... )
361- case MediaTypeDockerSchema2Layer , MediaTypeDockerSchema2LayerGzip ,
362- MediaTypeDockerSchema2LayerEnc , MediaTypeDockerSchema2LayerGzipEnc ,
363- MediaTypeDockerSchema2LayerForeign , MediaTypeDockerSchema2LayerForeignGzip ,
364- MediaTypeDockerSchema2Config , ocispec .MediaTypeImageConfig ,
365- ocispec .MediaTypeImageLayer , ocispec .MediaTypeImageLayerGzip ,
366- ocispec .MediaTypeImageLayerNonDistributable , ocispec .MediaTypeImageLayerNonDistributableGzip ,
367- MediaTypeContainerd1Checkpoint , MediaTypeContainerd1CheckpointConfig :
368- // childless data types.
369- return nil , nil
370360 default :
361+ if IsLayerType (desc .MediaType ) || IsKnownConfig (desc .MediaType ) {
362+ // childless data types.
363+ return nil , nil
364+ }
371365 log .G (ctx ).Warnf ("encountered unknown type %v; children may not be fetched" , desc .MediaType )
372366 }
373367
@@ -390,72 +384,3 @@ func RootFS(ctx context.Context, provider content.Provider, configDesc ocispec.D
390384 }
391385 return config .RootFS .DiffIDs , nil
392386}
393-
394- // IsCompressedDiff returns true if mediaType is a known compressed diff media type.
395- // It returns false if the media type is a diff, but not compressed. If the media type
396- // is not a known diff type, it returns errdefs.ErrNotImplemented
397- func IsCompressedDiff (ctx context.Context , mediaType string ) (bool , error ) {
398- switch mediaType {
399- case ocispec .MediaTypeImageLayer , MediaTypeDockerSchema2Layer :
400- case ocispec .MediaTypeImageLayerGzip , MediaTypeDockerSchema2LayerGzip :
401- return true , nil
402- default :
403- // Still apply all generic media types *.tar[.+]gzip and *.tar
404- if strings .HasSuffix (mediaType , ".tar.gzip" ) || strings .HasSuffix (mediaType , ".tar+gzip" ) {
405- return true , nil
406- } else if ! strings .HasSuffix (mediaType , ".tar" ) {
407- return false , errdefs .ErrNotImplemented
408- }
409- }
410- return false , nil
411- }
412-
413- // GetImageLayerDescriptors gets the image layer Descriptors of an image; the array contains
414- // a list of Descriptors belonging to one platform followed by lists of other platforms
415- func GetImageLayerDescriptors (ctx context.Context , cs content.Store , desc ocispec.Descriptor ) ([]ocispec.Descriptor , error ) {
416- var lis []ocispec.Descriptor
417-
418- ds := platforms .DefaultSpec ()
419- platform := & ds
420-
421- switch desc .MediaType {
422- case MediaTypeDockerSchema2ManifestList , ocispec .MediaTypeImageIndex ,
423- MediaTypeDockerSchema2Manifest , ocispec .MediaTypeImageManifest :
424- children , err := Children (ctx , cs , desc )
425- if err != nil {
426- if errdefs .IsNotFound (err ) {
427- return []ocispec.Descriptor {}, nil
428- }
429- return []ocispec.Descriptor {}, err
430- }
431-
432- if desc .Platform != nil {
433- platform = desc .Platform
434- }
435-
436- for _ , child := range children {
437- var tmp []ocispec.Descriptor
438-
439- switch child .MediaType {
440- case MediaTypeDockerSchema2LayerGzip , MediaTypeDockerSchema2Layer ,
441- ocispec .MediaTypeImageLayerGzip , ocispec .MediaTypeImageLayer ,
442- MediaTypeDockerSchema2LayerGzipEnc , MediaTypeDockerSchema2LayerEnc :
443- tdesc := child
444- tdesc .Platform = platform
445- tmp = append (tmp , tdesc )
446- default :
447- tmp , err = GetImageLayerDescriptors (ctx , cs , child )
448- }
449-
450- if err != nil {
451- return []ocispec.Descriptor {}, err
452- }
453-
454- lis = append (lis , tmp ... )
455- }
456- case MediaTypeDockerSchema2Config , ocispec .MediaTypeImageConfig :
457- default :
458- return nil , errors .Wrapf (errdefs .ErrInvalidArgument , "GetImageLayerInfo: unhandled media type %s" , desc .MediaType )
459- }
460- return lis , nil
461- }
0 commit comments