mirror of
https://github.com/moby/buildkit.git
synced 2026-06-30 19:57:39 +00:00
chore: refactor azblob cache to use errors pkg
Signed-off-by: Justin Chadwell <me@jedevc.com>
This commit is contained in:
11
cache/remotecache/azblob/exporter.go
vendored
11
cache/remotecache/azblob/exporter.go
vendored
@@ -26,12 +26,12 @@ func ResolveCacheExporterFunc() remotecache.ResolveCacheExporterFunc {
|
||||
return func(ctx context.Context, g session.Group, attrs map[string]string) (remotecache.Exporter, error) {
|
||||
config, err := getConfig(attrs)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create azblob config: %v", err)
|
||||
return nil, errors.WithMessage(err, "failed to create azblob config")
|
||||
}
|
||||
|
||||
containerClient, err := createContainerClient(ctx, config)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create container client: %v", err)
|
||||
return nil, errors.WithMessage(err, "failed to create container client")
|
||||
}
|
||||
|
||||
cc := v1.NewCacheChains()
|
||||
@@ -95,7 +95,8 @@ func (ce *exporter) Finalize(ctx context.Context) (map[string]string, error) {
|
||||
layerDone := progress.OneOff(ctx, fmt.Sprintf("writing layer %s", l.Blob))
|
||||
ra, err := dgstPair.Provider.ReaderAt(ctx, dgstPair.Descriptor)
|
||||
if err != nil {
|
||||
return nil, layerDone(fmt.Errorf("failed to get reader for %s: %v", dgstPair.Descriptor.Digest, err))
|
||||
err = errors.Wrapf(err, "failed to get reader for %s", dgstPair.Descriptor.Digest)
|
||||
return nil, layerDone(err)
|
||||
}
|
||||
if err := ce.uploadBlobIfNotExists(ctx, key, content.NewReader(ra)); err != nil {
|
||||
return nil, layerDone(err)
|
||||
@@ -120,12 +121,12 @@ func (ce *exporter) Finalize(ctx context.Context) (map[string]string, error) {
|
||||
|
||||
dt, err := json.Marshal(config)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to marshal config: %v", err)
|
||||
return nil, errors.Wrap(err, "failed to marshal config")
|
||||
}
|
||||
|
||||
for _, name := range ce.config.Names {
|
||||
if innerError := ce.uploadManifest(ctx, manifestKey(ce.config, name), bytesToReadSeekCloser(dt)); innerError != nil {
|
||||
return nil, errors.Errorf("error writing manifest %s: %v", name, innerError)
|
||||
return nil, errors.Wrapf(innerError, "error writing manifest %s", name)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
12
cache/remotecache/azblob/importer.go
vendored
12
cache/remotecache/azblob/importer.go
vendored
@@ -27,12 +27,12 @@ func ResolveCacheImporterFunc() remotecache.ResolveCacheImporterFunc {
|
||||
return func(ctx context.Context, g session.Group, attrs map[string]string) (remotecache.Importer, ocispecs.Descriptor, error) {
|
||||
config, err := getConfig(attrs)
|
||||
if err != nil {
|
||||
return nil, ocispecs.Descriptor{}, fmt.Errorf("failed to create azblob config: %v", err)
|
||||
return nil, ocispecs.Descriptor{}, errors.WithMessage(err, "failed to create azblob config")
|
||||
}
|
||||
|
||||
containerClient, err := createContainerClient(ctx, config)
|
||||
if err != nil {
|
||||
return nil, ocispecs.Descriptor{}, fmt.Errorf("failed to create container client: %v", err)
|
||||
return nil, ocispecs.Descriptor{}, errors.WithMessage(err, "failed to create container client")
|
||||
}
|
||||
|
||||
importer := &importer{
|
||||
@@ -60,7 +60,7 @@ func (ci *importer) Resolve(ctx context.Context, _ ocispecs.Descriptor, id strin
|
||||
eg.Go(func() error {
|
||||
cc, err := ci.loadManifest(ctx, name)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to load cache manifest %s: %v", name, err)
|
||||
return errors.Wrapf(err, "failed to load cache manifest %s", name)
|
||||
}
|
||||
ccs[i] = cc
|
||||
return nil
|
||||
@@ -105,12 +105,12 @@ func (ci *importer) loadManifest(ctx context.Context, name string) (*v1.CacheCha
|
||||
|
||||
res, err := blobClient.Download(ctx, &azblob.BlobDownloadOptions{})
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
bytes, err := io.ReadAll(res.RawResponse.Body)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
|
||||
logrus.Debugf("imported config: %s", string(bytes))
|
||||
@@ -151,7 +151,7 @@ func (ci *importer) makeDescriptorProviderPair(l v1.CacheLayer) (*v1.DescriptorP
|
||||
if !l.Annotations.CreatedAt.IsZero() {
|
||||
txt, err := l.Annotations.CreatedAt.MarshalText()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, errors.WithStack(err)
|
||||
}
|
||||
annotations["buildkit/createdat"] = string(txt)
|
||||
}
|
||||
|
||||
19
cache/remotecache/azblob/utils.go
vendored
19
cache/remotecache/azblob/utils.go
vendored
@@ -2,7 +2,6 @@ package azblob
|
||||
|
||||
import (
|
||||
"context"
|
||||
"fmt"
|
||||
"net/url"
|
||||
"os"
|
||||
"path/filepath"
|
||||
@@ -42,13 +41,13 @@ func getConfig(attrs map[string]string) (*Config, error) {
|
||||
if !ok {
|
||||
accountURLString, ok = os.LookupEnv("BUILDKIT_AZURE_STORAGE_ACCOUNT_URL")
|
||||
if !ok {
|
||||
return &Config{}, fmt.Errorf("either ${BUILDKIT_AZURE_STORAGE_ACCOUNT_URL} or account_url attribute is required for azblob cache")
|
||||
return &Config{}, errors.New("either ${BUILDKIT_AZURE_STORAGE_ACCOUNT_URL} or account_url attribute is required for azblob cache")
|
||||
}
|
||||
}
|
||||
|
||||
accountURL, err := url.Parse(accountURLString)
|
||||
if err != nil {
|
||||
return &Config{}, fmt.Errorf("azure storage account url provided is not a valid url: %v", err)
|
||||
return &Config{}, errors.Wrap(err, "azure storage account url provided is not a valid url")
|
||||
}
|
||||
|
||||
accountName := strings.Split(accountURL.Hostname(), ".")[0]
|
||||
@@ -106,21 +105,21 @@ func createContainerClient(ctx context.Context, config *Config) (*azblob.Contain
|
||||
if config.secretAccessKey != "" {
|
||||
sharedKey, err := azblob.NewSharedKeyCredential(config.AccountName, config.secretAccessKey)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create shared key: %v", err)
|
||||
return nil, errors.Wrap(err, "failed to create shared key")
|
||||
}
|
||||
serviceClient, err = azblob.NewServiceClientWithSharedKey(config.AccountURL, sharedKey, &azblob.ClientOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to created service client from shared key: %v", err)
|
||||
return nil, errors.Wrap(err, "failed to created service client from shared key")
|
||||
}
|
||||
} else {
|
||||
cred, err := azidentity.NewDefaultAzureCredential(nil)
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create default azure credentials: %v", err)
|
||||
return nil, errors.Wrap(err, "failed to create default azure credentials")
|
||||
}
|
||||
|
||||
serviceClient, err = azblob.NewServiceClient(config.AccountURL, cred, &azblob.ClientOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create service client: %v", err)
|
||||
return nil, errors.Wrap(err, "failed to create service client")
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,13 +142,13 @@ func createContainerClient(ctx context.Context, config *Config) (*azblob.Contain
|
||||
defer cnclFn()
|
||||
_, err := containerClient.Create(ctx, &azblob.ContainerCreateOptions{})
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("failed to create cache container %s: %v", config.Container, err)
|
||||
return nil, errors.Wrapf(err, "failed to create cache container %s", config.Container)
|
||||
}
|
||||
|
||||
return containerClient, nil
|
||||
}
|
||||
|
||||
return nil, fmt.Errorf("failed to get properties of cache container %s: %v", config.Container, err)
|
||||
return nil, errors.Wrapf(err, "failed to get properties of cache container %s", config.Container)
|
||||
}
|
||||
|
||||
func manifestKey(config *Config, name string) string {
|
||||
@@ -180,5 +179,5 @@ func blobExists(ctx context.Context, containerClient *azblob.ContainerClient, bl
|
||||
return false, nil
|
||||
}
|
||||
|
||||
return false, fmt.Errorf("failed to check blob %s existence: %v", blobKey, err)
|
||||
return false, errors.Wrapf(err, "failed to check blob %s existence", blobKey)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user