Skip to content

Commit b887686

Browse files
author
Ramkumar Chinchani
committed
fix: compress overlay_dir import
Import overlays currently are generated as tar files and not compressed. This patch compresses to produce a tar.gz blob Signed-off-by: Ramkumar Chinchani <rchincha@cisco.com>
1 parent 6d069c7 commit b887686

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

pkg/overlay/overlay-dirs.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ func generateOverlayDirLayer(name string, layerType types.LayerType, overlayDir
4848
defer oci.Close()
4949

5050
contents := path.Join(config.RootFSDir, name, "overlay_dirs", path.Base(overlayDir.Source))
51-
blob, mediaType, rootHash, err := generateBlob(layerType, contents, config.OCIDir)
51+
blob, mediaType, rootHash, err := generateBlob(layerType, contents, config.OCIDir, true)
5252
if err != nil {
5353
return ispec.Descriptor{}, err
5454
}

pkg/overlay/pack.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -135,7 +135,7 @@ func ConvertAndOutput(config types.StackerConfig, tag, name string, layerType ty
135135
bundlePath := overlayPath(config.RootFSDir, theLayer.Digest)
136136
overlayDir := path.Join(bundlePath, "overlay")
137137
// generate blob
138-
blob, mediaType, rootHash, err := generateBlob(layerType, overlayDir, config.OCIDir)
138+
blob, mediaType, rootHash, err := generateBlob(layerType, overlayDir, config.OCIDir, true)
139139
if err != nil {
140140
return err
141141
}
@@ -293,15 +293,23 @@ func (o *overlay) Repack(name string, layerTypes []types.LayerType, sfm types.St
293293
}
294294

295295
// generateBlob generates either a tar blob or a squashfs blob based on layerType
296-
func generateBlob(layerType types.LayerType, contents string, ociDir string) (io.ReadCloser, string, string, error) {
296+
func generateBlob(layerType types.LayerType, contents string, ociDir string, compress bool) (io.ReadCloser, string, string, error) {
297297
var blob io.ReadCloser
298298
var err error
299299
var mediaType string
300300
var rootHash string
301301
if layerType.Type == "tar" {
302302
packOptions := layer.RepackOptions{TranslateOverlayWhiteouts: true}
303303
blob = layer.GenerateInsertLayer(contents, "/", false, &packOptions)
304-
mediaType = ispec.MediaTypeImageLayer
304+
if !compress {
305+
mediaType = ispec.MediaTypeImageLayer
306+
} else {
307+
blob, err = mutate.GzipCompressor.WithOpt(gzipBlockSize).Compress(blob)
308+
if err != nil {
309+
return nil, "", "", err
310+
}
311+
mediaType = ispec.MediaTypeImageLayerGzip
312+
}
305313
} else {
306314
blob, mediaType, rootHash, err = squashfs.MakeSquashfs(ociDir, contents, nil, layerType.Verity)
307315
if err != nil {
@@ -435,7 +443,7 @@ func generateLayer(config types.StackerConfig, oci casext.Engine, mutators []*mu
435443
mutator := mutators[i]
436444
var desc ispec.Descriptor
437445

438-
blob, mediaType, rootHash, err := generateBlob(layerType, dir, config.OCIDir)
446+
blob, mediaType, rootHash, err := generateBlob(layerType, dir, config.OCIDir, false)
439447
if err != nil {
440448
return false, err
441449
}

0 commit comments

Comments
 (0)