Skip to content

Commit

Permalink
Issue 420 - Adds progress bar for image push
Browse files Browse the repository at this point in the history
  • Loading branch information
shaheerkootteeri committed Aug 8, 2022
1 parent c6fae29 commit 41f257a
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 14 deletions.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/imgpkg/bundle/contents.go
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ type Contents struct {
//go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . ImagesMetadataWriter
type ImagesMetadataWriter interface {
ImagesMetadata
WriteImage(regname.Reference, regv1.Image) error
WriteImage(regname.Reference, regv1.Image, chan regv1.Update) error
WriteTag(ref regname.Tag, taggagle regremote.Taggable) error
}

Expand Down
10 changes: 6 additions & 4 deletions pkg/imgpkg/plainimage/contents.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,13 @@ import (
)

type Contents struct {
paths []string
excludedPaths []string
paths []string
excludedPaths []string
displayProgress bool
}

type ImagesWriter interface {
WriteImage(regname.Reference, regv1.Image) error
WriteImage(regname.Reference, regv1.Image, chan regv1.Update) error
WriteTag(ref regname.Tag, taggagle regremote.Taggable) error
}

Expand All @@ -46,7 +47,8 @@ func (i Contents) Push(uploadRef regname.Tag, labels map[string]string, writer I

defer img.Remove()

err = writer.WriteImage(uploadRef, img)
err = writer.WriteImage(uploadRef, img, nil)

if err != nil {
return "", fmt.Errorf("Writing '%s': %s", uploadRef.Name(), err)
}
Expand Down
10 changes: 6 additions & 4 deletions pkg/imgpkg/registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ type Registry interface {
FirstImageExists(digests []string) (string, error)

MultiWrite(imageOrIndexesToUpload map[regname.Reference]regremote.Taggable, concurrency int, updatesCh chan regv1.Update) error
WriteImage(reference regname.Reference, image regv1.Image) error
WriteImage(regname.Reference, regv1.Image, chan regv1.Update) error
WriteIndex(reference regname.Reference, index regv1.ImageIndex) error
WriteTag(tag regname.Tag, taggable regremote.Taggable) error

Expand All @@ -74,7 +74,7 @@ type ImagesReader interface {
type ImagesReaderWriter interface {
ImagesReader
MultiWrite(imageOrIndexesToUpload map[regname.Reference]regremote.Taggable, concurrency int, updatesCh chan regv1.Update) error
WriteImage(regname.Reference, regv1.Image) error
WriteImage(regname.Reference, regv1.Image, chan regv1.Update) error
WriteIndex(regname.Reference, regv1.ImageIndex) error
WriteTag(regname.Tag, regremote.Taggable) error

Expand Down Expand Up @@ -319,7 +319,7 @@ func (r *SimpleRegistry) MultiWrite(imageOrIndexesToUpload map[regname.Reference
}

// WriteImage Upload Image to registry
func (r *SimpleRegistry) WriteImage(ref regname.Reference, img regv1.Image) error {
func (r *SimpleRegistry) WriteImage(ref regname.Reference, img regv1.Image, updatesCh chan regv1.Update) error {
if err := r.validateRef(ref); err != nil {
return err
}
Expand All @@ -332,7 +332,9 @@ func (r *SimpleRegistry) WriteImage(ref regname.Reference, img regv1.Image) erro
if err != nil {
return err
}

if updatesCh != nil {
opts = append(opts, regremote.WithProgress(updatesCh))
}
err = regremote.Write(overriddenRef, img, opts...)
if err != nil {
return fmt.Errorf("Writing image: %s", err)
Expand Down
2 changes: 1 addition & 1 deletion pkg/imgpkg/registry/registry_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -166,7 +166,7 @@ func TestInsecureRegistryFlag(t *testing.T) {
exec: func(t *testing.T, r registry.Registry) error {
img, err := name.ParseReference("my.registry.io/some/image")
require.NoError(t, err)
return r.WriteImage(img, nil)
return r.WriteImage(img, nil, nil)
},
},
{
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 6 additions & 2 deletions pkg/imgpkg/registry/with_progress.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,12 @@ func (w *WithProgress) MultiWrite(imageOrIndexesToUpload map[regname.Reference]r
}

// WriteImage Upload Image to registry
func (w *WithProgress) WriteImage(reference regname.Reference, image regv1.Image) error {
return w.delegate.WriteImage(reference, image)
func (w *WithProgress) WriteImage(reference regname.Reference, image regv1.Image, _ chan regv1.Update) error {
uploadProgress := make(chan regv1.Update)
w.logger.Start(uploadProgress)
defer w.logger.End()

return w.delegate.WriteImage(reference, image, uploadProgress)
}

// WriteIndex Uploads the Index manifest to the registry
Expand Down

0 comments on commit 41f257a

Please sign in to comment.