Skip to content

Commit

Permalink
image: replace GetStoreImage with ResolveReference
Browse files Browse the repository at this point in the history
replace deprecated GetStoreImage -> ResolveReference

Signed-off-by: Aditya R <[email protected]>
  • Loading branch information
flouthoc committed Nov 2, 2023
1 parent fc9e64f commit 0e3428f
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 38 deletions.
73 changes: 38 additions & 35 deletions commit.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package buildah
import (
"context"
"encoding/json"
"errors"
"fmt"
"io"
"os"
Expand All @@ -22,7 +21,6 @@ import (
"github.com/containers/image/v5/transports"
"github.com/containers/image/v5/types"
encconfig "github.com/containers/ocicrypt/config"
"github.com/containers/storage"
"github.com/containers/storage/pkg/archive"
"github.com/containers/storage/pkg/stringid"
digest "github.com/opencontainers/go-digest"
Expand Down Expand Up @@ -358,45 +356,50 @@ func (b *Builder) Commit(ctx context.Context, dest types.ImageReference, options
if len(options.AdditionalTags) > 0 {
switch dest.Transport().Name() {
case is.Transport.Name():
img, err := is.Transport.GetStoreImage(b.store, dest)
if err != nil {
return imgID, nil, "", fmt.Errorf("locating just-written image %q: %w", transports.ImageName(dest), err)
}
if err = util.AddImageNames(b.store, "", systemContext, img, options.AdditionalTags); err != nil {
return imgID, nil, "", fmt.Errorf("setting image names to %v: %w", append(img.Names, options.AdditionalTags...), err)
if dest.Transport().Name() == is.Transport.Name() {
_, img, err := is.ResolveReference(dest)
if err != nil {
return imgID, nil, "", fmt.Errorf("locating just-written image %q: %w", transports.ImageName(dest), err)
}
if err = util.AddImageNames(b.store, "", systemContext, img, options.AdditionalTags); err != nil {
return imgID, nil, "", fmt.Errorf("setting image names to %v: %w", append(img.Names, options.AdditionalTags...), err)
}
logrus.Debugf("assigned names %v to image %q", img.Names, img.ID)
}
logrus.Debugf("assigned names %v to image %q", img.Names, img.ID)
default:
logrus.Warnf("don't know how to add tags to images stored in %q transport", dest.Transport().Name())
}
}

img, err := is.Transport.GetStoreImage(b.store, dest)
if err != nil && !errors.Is(err, storage.ErrImageUnknown) {
return imgID, nil, "", fmt.Errorf("locating image %q in local storage: %w", transports.ImageName(dest), err)
}
if err == nil {
imgID = img.ID
toPruneNames := make([]string, 0, len(img.Names))
for _, name := range img.Names {
if nameToRemove != "" && strings.Contains(name, nameToRemove) {
toPruneNames = append(toPruneNames, name)
}
}
if len(toPruneNames) > 0 {
if err = b.store.RemoveNames(imgID, toPruneNames); err != nil {
return imgID, nil, "", fmt.Errorf("failed to remove temporary name from image %q: %w", imgID, err)
}
logrus.Debugf("removing %v from assigned names to image %q", nameToRemove, img.ID)
dest2, err := is.Transport.ParseStoreReference(b.store, "@"+imgID)
if err != nil {
return imgID, nil, "", fmt.Errorf("creating unnamed destination reference for image: %w", err)
}
dest = dest2
}
if options.IIDFile != "" {
if err = os.WriteFile(options.IIDFile, []byte("sha256:"+img.ID), 0644); err != nil {
return imgID, nil, "", err
dref := dest.DockerReference()
if dref != nil {
// Check if reference is on the storage
if _, err := b.store.Image(dref.String()); err == nil {
if dest.Transport().Name() == is.Transport.Name() {
// resolve reference
dest2, img, err := is.ResolveReference(dest)
if err != nil {
return imgID, nil, "", fmt.Errorf("locating image %q in local storage: %w", transports.ImageName(dest), err)
}
dest = dest2
imgID = img.ID
toPruneNames := make([]string, 0, len(img.Names))
for _, name := range img.Names {
if nameToRemove != "" && strings.Contains(name, nameToRemove) {
toPruneNames = append(toPruneNames, name)
}
}
if len(toPruneNames) > 0 {
if err = b.store.RemoveNames(imgID, toPruneNames); err != nil {
return imgID, nil, "", fmt.Errorf("failed to remove temporary name from image %q: %w", imgID, err)
}
logrus.Debugf("removing %v from assigned names to image %q", nameToRemove, img.ID)
}
if options.IIDFile != "" {
if err = os.WriteFile(options.IIDFile, []byte("sha256:"+img.ID), 0644); err != nil {
return imgID, nil, "", err
}
}
}
}
}
Expand Down
4 changes: 2 additions & 2 deletions imagebuildah/executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -1018,7 +1018,7 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image
if dest, err := b.resolveNameToImageRef(b.output); err == nil {
switch dest.Transport().Name() {
case storageTransport.Transport.Name():
img, err := storageTransport.Transport.GetStoreImage(b.store, dest)
_, img, err := storageTransport.ResolveReference(dest)
if err != nil {
return imageID, ref, fmt.Errorf("locating just-written image %q: %w", transports.ImageName(dest), err)
}
Expand All @@ -1029,7 +1029,7 @@ func (b *Executor) Build(ctx context.Context, stages imagebuilder.Stages) (image
logrus.Debugf("assigned names %v to image %q", img.Names, img.ID)
}
// Report back the caller the tags applied, if any.
img, err = storageTransport.Transport.GetStoreImage(b.store, dest)
_, img, err = storageTransport.ResolveReference(dest)
if err != nil {
return imageID, ref, fmt.Errorf("locating just-written image %q: %w", transports.ImageName(dest), err)
}
Expand Down
2 changes: 1 addition & 1 deletion imagebuildah/stage_executor.go
Original file line number Diff line number Diff line change
Expand Up @@ -1752,7 +1752,7 @@ func (s *StageExecutor) tagExistingImage(ctx context.Context, cacheID, output st
if err != nil {
return "", nil, fmt.Errorf("computing digest of manifest for image %q: %w", cacheID, err)
}
img, err := is.Transport.GetStoreImage(s.executor.store, dest)
_, img, err := is.ResolveReference(dest)
if err != nil {
return "", nil, fmt.Errorf("locating new copy of image %q (i.e., %q): %w", cacheID, transports.ImageName(dest), err)
}
Expand Down

0 comments on commit 0e3428f

Please sign in to comment.