From bcbbd9538f154b985b6118e3713abb113ae6021a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Tue, 3 Oct 2023 14:06:00 +0200 Subject: [PATCH 1/2] c8d/progress: Show Mounted/Exists status MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Paweł Gronowski --- daemon/containerd/progress.go | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/daemon/containerd/progress.go b/daemon/containerd/progress.go index 13d228a310c83..0b2a893da4d87 100644 --- a/daemon/containerd/progress.go +++ b/daemon/containerd/progress.go @@ -8,9 +8,11 @@ import ( "github.com/containerd/containerd/content" cerrdefs "github.com/containerd/containerd/errdefs" + "github.com/containerd/containerd/images" "github.com/containerd/containerd/remotes" "github.com/containerd/containerd/remotes/docker" "github.com/containerd/log" + "github.com/distribution/reference" "github.com/docker/docker/internal/compatcontext" "github.com/docker/docker/pkg/progress" "github.com/docker/docker/pkg/stringid" @@ -209,8 +211,18 @@ func (p *pushProgress) UpdateProgress(ctx context.Context, ongoing *jobs, out pr } if status.Committed && status.Offset >= status.Total { - if p.isMountable(j.Digest) { - progress.Update(out, id, "Mounted") + if status.MountedFrom != "" { + from := status.MountedFrom + if ref, err := reference.ParseNormalizedNamed(from); err == nil { + from = reference.Path(ref) + } + progress.Update(out, id, "Mounted from "+from) + } else if status.Exists { + if images.IsLayerType(j.MediaType) { + progress.Update(out, id, "Layer already exists") + } else { + progress.Update(out, id, "Already exists") + } } else { progress.Update(out, id, "Pushed") } From 44dbbeb19654318eafbaee695fb65be6b7d840aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pawe=C5=82=20Gronowski?= Date: Wed, 11 Oct 2023 11:46:33 +0200 Subject: [PATCH 2/2] c8d/progress: Remove unused mountable MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit It's no longer needed as we get this information from containerd directly. Signed-off-by: Paweł Gronowski --- daemon/containerd/image_push.go | 3 --- daemon/containerd/progress.go | 25 +------------------------ 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/daemon/containerd/image_push.go b/daemon/containerd/image_push.go index 2901f0fe41754..c28e992b6f883 100644 --- a/daemon/containerd/image_push.go +++ b/daemon/containerd/image_push.go @@ -120,9 +120,6 @@ func (i *ImageService) pushRef(ctx context.Context, targetRef reference.Named, m if err != nil { return err } - for dgst := range mountableBlobs { - pp.addMountable(dgst) - } // Create a store which fakes the local existence of possibly mountable blobs. // Otherwise they can't be pushed at all. diff --git a/daemon/containerd/progress.go b/daemon/containerd/progress.go index 0b2a893da4d87..8d7ff12bdb6b0 100644 --- a/daemon/containerd/progress.go +++ b/daemon/containerd/progress.go @@ -171,30 +171,7 @@ func (p pullProgress) UpdateProgress(ctx context.Context, ongoing *jobs, out pro } type pushProgress struct { - Tracker docker.StatusTracker - mountable map[digest.Digest]struct{} - mutex sync.Mutex -} - -func (p *pushProgress) addMountable(dgst digest.Digest) { - p.mutex.Lock() - defer p.mutex.Unlock() - - if p.mountable == nil { - p.mountable = map[digest.Digest]struct{}{} - } - p.mountable[dgst] = struct{}{} -} - -func (p *pushProgress) isMountable(dgst digest.Digest) bool { - p.mutex.Lock() - defer p.mutex.Unlock() - - if p.mountable == nil { - return false - } - _, has := p.mountable[dgst] - return has + Tracker docker.StatusTracker } func (p *pushProgress) UpdateProgress(ctx context.Context, ongoing *jobs, out progress.Output, start time.Time) error {