Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cmd/convertor/builder/builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"crypto/tls"
"crypto/x509"
"encoding/json"
"errors"
"fmt"
"io"
"net"
Expand All @@ -42,7 +43,6 @@ import (
"github.com/containerd/platforms"
"github.com/opencontainers/go-digest"
v1 "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
"golang.org/x/sync/errgroup"
)
Expand Down Expand Up @@ -468,7 +468,7 @@ func (b *overlaybdBuilder) Build(ctx context.Context) (v1.Descriptor, error) {

targetDesc, err := b.engine.UploadImage(ctx)
if err != nil {
return v1.Descriptor{}, errors.Wrap(err, "failed to upload manifest or config")
return v1.Descriptor{}, fmt.Errorf("failed to upload manifest or config: %w", err)
}
b.engine.StoreConvertedManifestDetails(ctx)
logrus.Info("convert finished")
Expand Down
17 changes: 8 additions & 9 deletions cmd/convertor/builder/builder_engine.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,6 @@ import (
"github.com/containerd/log"
"github.com/opencontainers/go-digest"
specs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
)

type BuilderEngineType int
Expand Down Expand Up @@ -121,11 +120,11 @@ type builderEngineBase struct {
func (e *builderEngineBase) isGzipLayer(ctx context.Context, idx int) (bool, error) {
rc, err := e.fetcher.Fetch(ctx, e.manifest.Layers[idx])
if err != nil {
return false, errors.Wrapf(err, "isGzipLayer: failed to open layer %d", idx)
return false, fmt.Errorf("isGzipLayer: failed to open layer %d: %w", idx, err)
}
drc, err := compression.DecompressStream(rc)
if err != nil {
return false, errors.Wrapf(err, "isGzipLayer: failed to open decompress stream for layer %d", idx)
return false, fmt.Errorf("isGzipLayer: failed to open decompress stream for layer %d: %w", idx, err)
}
compress := drc.GetCompression()
switch compress {
Expand Down Expand Up @@ -182,7 +181,7 @@ func (e *builderEngineBase) uploadManifestAndConfig(ctx context.Context) (specs.
}
if !e.noUpload {
if err = uploadBytes(ctx, e.pusher, e.manifest.Config, cbuf); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to upload config")
return specs.Descriptor{}, fmt.Errorf("failed to upload config: %w", err)
}
log.G(ctx).Infof("config uploaded")
}
Expand All @@ -206,7 +205,7 @@ func (e *builderEngineBase) uploadManifestAndConfig(ctx context.Context) (specs.
}
if !e.noUpload {
if err = uploadBytes(ctx, e.pusher, manifestDesc, cbuf); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to upload manifest")
return specs.Descriptor{}, fmt.Errorf("failed to upload manifest: %w", err)
}
e.outputDesc = manifestDesc
log.G(ctx).Infof("manifest uploaded, %s", manifestDesc.Digest)
Expand All @@ -224,19 +223,19 @@ func (e *builderEngineBase) uploadManifestAndConfig(ctx context.Context) (specs.
func getBuilderEngineBase(ctx context.Context, resolver remotes.Resolver, ref, targetRef string) (*builderEngineBase, error) {
_, desc, err := resolver.Resolve(ctx, ref)
if err != nil {
return nil, errors.Wrapf(err, "failed to resolve reference %q", ref)
return nil, fmt.Errorf("failed to resolve reference %q: %w", ref, err)
}
fetcher, err := resolver.Fetcher(ctx, ref)
if err != nil {
return nil, errors.Wrapf(err, "failed to get fetcher for %q", ref)
return nil, fmt.Errorf("failed to get fetcher for %q: %w", ref, err)
}
pusher, err := resolver.Pusher(ctx, targetRef)
if err != nil {
return nil, errors.Wrapf(err, "failed to get pusher for %q", targetRef)
return nil, fmt.Errorf("failed to get pusher for %q: %w", targetRef, err)
}
manifest, config, err := fetchManifestAndConfig(ctx, fetcher, desc)
if err != nil {
return nil, errors.Wrap(err, "failed to fetch manifest and config")
return nil, fmt.Errorf("failed to fetch manifest and config: %w", err)
}
return &builderEngineBase{
resolver: resolver,
Expand Down
10 changes: 5 additions & 5 deletions cmd/convertor/builder/builder_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ import (
"context"
"crypto/sha256"
"encoding/json"
"errors"
"fmt"
"io"
"os"
Expand All @@ -37,7 +38,6 @@ import (
"github.com/containerd/platforms"
"github.com/opencontainers/go-digest"
specs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"

t "github.com/containerd/accelerated-container-image/pkg/types"
Expand Down Expand Up @@ -252,19 +252,19 @@ func tagPreviouslyConvertedManifest(ctx context.Context, pusher remotes.Pusher,
func buildArchiveFromFiles(ctx context.Context, target string, compress compression.Compression, files ...string) error {
archive, err := os.Create(target)
if err != nil {
return errors.Wrapf(err, "failed to create tgz file: %q", target)
return fmt.Errorf("failed to create tgz file: %q: %w", target, err)
}
defer archive.Close()
fzip, err := compression.CompressStream(archive, compress)
if err != nil {
return errors.Wrapf(err, "failed to create compression %v", compress)
return fmt.Errorf("failed to create compression %v: %w", compress, err)
}
defer fzip.Close()
ftar := tar.NewWriter(fzip)
defer ftar.Close()
for _, file := range files {
if err := addFileToArchive(ctx, ftar, file); err != nil {
return errors.Wrapf(err, "failed to add file %q to archive %q", file, target)
return fmt.Errorf("failed to add file %q to archive %q: %w", file, target, err)
}
}
return nil
Expand All @@ -276,7 +276,7 @@ func addFileToArchive(ctx context.Context, ftar *tar.Writer, filepath string) er
if errors.Is(err, os.ErrNotExist) {
return nil
}
return errors.Wrapf(err, "failed to open file: %q", filepath)
return fmt.Errorf("failed to open file: %q: %w", filepath, err)
}
defer file.Close()
info, err := file.Stat()
Expand Down
22 changes: 11 additions & 11 deletions cmd/convertor/builder/overlaybd_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ import (
"bufio"
"context"
"encoding/json"
"errors"
"fmt"
"io"
"os"
Expand All @@ -34,7 +35,6 @@ import (
"github.com/opencontainers/go-digest"
"github.com/opencontainers/image-spec/identity"
specs "github.com/opencontainers/image-spec/specs-go/v1"
"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)

Expand Down Expand Up @@ -162,7 +162,7 @@ func (e *overlaybdBuilderEngine) UploadLayer(ctx context.Context, idx int) error
layerDir := e.getLayerDir(idx)
desc, err := getFileDesc(path.Join(layerDir, commitFile), false)
if err != nil {
return errors.Wrapf(err, "failed to get descriptor for layer %d", idx)
return fmt.Errorf("failed to get descriptor for layer %d: %w", idx, err)
}
if e.overlaybdLayers[idx].fromDedup {
// validate that the layer digests match if the layer is from dedup
Expand All @@ -178,7 +178,7 @@ func (e *overlaybdBuilderEngine) UploadLayer(ctx context.Context, idx int) error
}
if !e.noUpload {
if err := uploadBlob(ctx, e.pusher, path.Join(layerDir, commitFile), desc); err != nil {
return errors.Wrapf(err, "failed to upload layer %d", idx)
return fmt.Errorf("failed to upload layer %d: %w", idx, err)
}
}
e.overlaybdLayers[idx].desc = desc
Expand Down Expand Up @@ -406,7 +406,7 @@ func (e *overlaybdBuilderEngine) DownloadConvertedLayer(ctx context.Context, idx
if err != nil {
// We should remove the commit file if the download failed to allow for fallback conversion
os.Remove(targetFile) // Remove any file that may have failed to download
return errors.Wrapf(err, "failed to download layer %d", idx)
return fmt.Errorf("failed to download layer %d: %w", idx, err)
}
// Mark that this layer is from dedup
e.overlaybdLayers[idx].fromDedup = true
Expand All @@ -425,19 +425,19 @@ func (e *overlaybdBuilderEngine) uploadBaseLayer(ctx context.Context) (specs.Des
tarFile := path.Join(e.workDir, "ext4_64.tar")
fdes, err := os.Create(tarFile)
if err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to create file %s", tarFile)
return specs.Descriptor{}, fmt.Errorf("failed to create file %s: %w", tarFile, err)
}
digester := digest.Canonical.Digester()
countWriter := &writeCountWrapper{w: io.MultiWriter(fdes, digester.Hash())}
tarWriter := tar.NewWriter(countWriter)

fsrc, err := os.Open(overlaybdBaseLayer)
if err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to open %s", overlaybdBaseLayer)
return specs.Descriptor{}, fmt.Errorf("failed to open %s: %w", overlaybdBaseLayer, err)
}
fstat, err := os.Stat(overlaybdBaseLayer)
if err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to get info of %s", overlaybdBaseLayer)
return specs.Descriptor{}, fmt.Errorf("failed to get info of %s: %w", overlaybdBaseLayer, err)
}

if err := tarWriter.WriteHeader(&tar.Header{
Expand All @@ -446,13 +446,13 @@ func (e *overlaybdBuilderEngine) uploadBaseLayer(ctx context.Context) (specs.Des
Size: fstat.Size(),
Typeflag: tar.TypeReg,
}); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to write tar header")
return specs.Descriptor{}, fmt.Errorf("failed to write tar header: %w", err)
}
if _, err := io.Copy(tarWriter, bufio.NewReader(fsrc)); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to copy IO")
return specs.Descriptor{}, fmt.Errorf("failed to copy IO: %w", err)
}
if err = tarWriter.Close(); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to close tar file")
return specs.Descriptor{}, fmt.Errorf("failed to close tar file: %w", err)
}

baseDesc := specs.Descriptor{
Expand All @@ -467,7 +467,7 @@ func (e *overlaybdBuilderEngine) uploadBaseLayer(ctx context.Context) (specs.Des
}
if !e.noUpload {
if err = uploadBlob(ctx, e.pusher, tarFile, baseDesc); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to upload baselayer")
return specs.Descriptor{}, fmt.Errorf("failed to upload baselayer: %w", err)
}
logrus.Infof("baselayer uploaded")
}
Expand Down
15 changes: 7 additions & 8 deletions cmd/convertor/builder/turboOCI_builder.go
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,6 @@ import (
"github.com/opencontainers/go-digest"
specs "github.com/opencontainers/image-spec/specs-go/v1"

"github.com/pkg/errors"
"github.com/sirupsen/logrus"
)

Expand Down Expand Up @@ -115,7 +114,7 @@ func (e *turboOCIBuilderEngine) BuildLayer(ctx context.Context, idx int) error {
return err
}
if err := e.createIdentifier(idx); err != nil {
return errors.Wrapf(err, "failed to create identifier %q", tociIdentifier)
return fmt.Errorf("failed to create identifier %q: %w", tociIdentifier, err)
}
files := []string{
path.Join(layerDir, fsMetaFile),
Expand All @@ -127,7 +126,7 @@ func (e *turboOCIBuilderEngine) BuildLayer(ctx context.Context, idx int) error {
files = append(files, gzipIndexPath)
}
if err := buildArchiveFromFiles(ctx, path.Join(layerDir, tociLayerTar), compression.Gzip, files...); err != nil {
return errors.Wrapf(err, "failed to create turboOCIv1 archive for layer %d", idx)
return fmt.Errorf("failed to create turboOCIv1 archive for layer %d: %w", idx, err)
}
e.overlaybdConfig.Lowers = append(e.overlaybdConfig.Lowers, sn.OverlayBDBSConfigLower{
TargetFile: path.Join(layerDir, "layer.tar"),
Expand All @@ -144,7 +143,7 @@ func (e *turboOCIBuilderEngine) UploadLayer(ctx context.Context, idx int) error
layerDir := e.getLayerDir(idx)
desc, err := getFileDesc(path.Join(layerDir, tociLayerTar), false)
if err != nil {
return errors.Wrapf(err, "failed to get descriptor for layer %d", idx)
return fmt.Errorf("failed to get descriptor for layer %d: %w", idx, err)
}
desc.MediaType = e.mediaTypeImageLayerGzip()
desc.Annotations = map[string]string{
Expand All @@ -169,7 +168,7 @@ func (e *turboOCIBuilderEngine) UploadLayer(ctx context.Context, idx int) error
}
desc.Annotations[label.TurboOCIMediaType] = targetMediaType
if err := uploadBlob(ctx, e.pusher, path.Join(layerDir, tociLayerTar), desc); err != nil {
return errors.Wrapf(err, "failed to upload layer %d", idx)
return fmt.Errorf("failed to upload layer %d: %w", idx, err)
}
e.tociLayers[idx] = desc
return nil
Expand All @@ -180,7 +179,7 @@ func (e *turboOCIBuilderEngine) UploadImage(ctx context.Context) (specs.Descript
layerDir := e.getLayerDir(idx)
uncompress, err := getFileDesc(path.Join(layerDir, tociLayerTar), true)
if err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to get uncompressed descriptor for layer %d", idx)
return specs.Descriptor{}, fmt.Errorf("failed to get uncompressed descriptor for layer %d: %w", idx, err)
}
e.manifest.Layers[idx] = e.tociLayers[idx]
e.config.RootFS.DiffIDs[idx] = uncompress.Digest
Expand All @@ -197,7 +196,7 @@ func (e *turboOCIBuilderEngine) UploadImage(ctx context.Context) (specs.Descript
}
if !e.mkfs {
if err := uploadBlob(ctx, e.pusher, overlaybdBaseLayer, baseDesc); err != nil {
return specs.Descriptor{}, errors.Wrapf(err, "failed to upload baselayer %q", overlaybdBaseLayer)
return specs.Descriptor{}, fmt.Errorf("failed to upload baselayer %q: %w", overlaybdBaseLayer, err)
}
e.manifest.Layers = append([]specs.Descriptor{baseDesc}, e.manifest.Layers...)
e.config.RootFS.DiffIDs = append([]digest.Digest{baseDesc.Digest}, e.config.RootFS.DiffIDs...)
Expand Down Expand Up @@ -260,7 +259,7 @@ func (e *turboOCIBuilderEngine) createIdentifier(idx int) error {
targetFile := path.Join(e.getLayerDir(idx), tociIdentifier)
file, err := os.Create(targetFile)
if err != nil {
return errors.Wrapf(err, "failed to create identifier file %q", tociIdentifier)
return fmt.Errorf("failed to create identifier file %q: %w", tociIdentifier, err)
}
defer file.Close()
return nil
Expand Down
4 changes: 2 additions & 2 deletions cmd/ctr/overlaybd_conv.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package main

import (
"errors"
"fmt"
"time"

Expand All @@ -26,7 +27,6 @@ import (
"github.com/containerd/containerd/v2/core/images/converter"
"github.com/containerd/containerd/v2/core/leases"
_ "github.com/go-sql-driver/mysql"
"github.com/pkg/errors"
"github.com/urfave/cli/v2"
)

Expand Down Expand Up @@ -83,7 +83,7 @@ var convertCommand = &cli.Command{
leases.WithExpiration(1*time.Hour),
)
if err != nil {
return errors.Wrap(err, "failed to create lease")
return fmt.Errorf("failed to create lease: %w", err)
}
defer done(ctx)

Expand Down
Loading
Loading