Skip to content

Improve progress output of oras backup/restore for better human readability #1794

@FeynmanZhou

Description

@FeynmanZhou

What is the version of your ORAS CLI

oras v1.3.0-beta.3

What would you like to be added?

See an example progress output of oras backup:

$ oras backup docker.io/bitnami/kubectl --output kubectl.tar
Found 2 tag(s): v1.33.1, v1.33.2

Tag: v1.33.1
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✓ Pulled  sha256:a86616b...   [        ............](8.12 MB/s) Pulling      106.0 MB  100%   11.0s
✓ Pulled  sha256:5dbdff1...     [        ............](8.12 MB/s) Pulling          6.69 KB  100%    6ms
✓ Pulled  sha256:2af8ed9...    [        ............](8.12 MB/s) Pulling       430 B  100%    6ms
✔ Tag v1.33.1 pulled with 0 referrer(s)

Tag: v1.33.2
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
✓ Pulled  sha256:e00d812...    [        ............](8.12 MB/s) Pulling     108.0 MB  100%   24.0s
✓ Pulled  sha256:322bd43...   [        ............](8.12 MB/s) Pulling         6.69 KB  100%    2ms
✓ Pulled  sha256:c8efec8...     [        ............](8.12 MB/s) Pulling     430 B  100%   11ms
✓ Pulled  sha256:9081a6f...    [        ............](8.12 MB/s) Pulling  529 B  100%   18ms
✔ Tag v1.33.2 pulled with 0 referrer(s)

Exporting backup archive...

The whole progress bar could be hided after the backup/restore process is done, it only prints out the summary as a result:

$ oras backup docker.io/bitnami/kubectl --output kubectl.tar
Backup completed in 27s: 2 tag(s) saved from docker.io/bitnami/kubectl. Written to kubectl.tar (214 MB)

Why is this needed for ORAS?

Issues with current progress bar (without Summary):

  • Too Verbose and Overwhelming for Non-Experts:
    Dozens of lines for individual blobs, many repeating MIME types and digests. Hard to scan or extract key insights at a glance. Digest-heavy, JSON MIME-type output are great for debugging, but too low-level for end users.

  • Hard to Validate:
    Users can't tell whether the backup/restore was complete or how many tags were transferred successfully. Which tag or repository the artifact belongs to.

$ oras backup docker.io/bitnami/kubectl --output kubectl.tar                    
Found 2 tag(s) in docker.io/bitnami/kubectl: v1.33.1, v1.33.2
✓ Pulled    application/vnd.docker.container.image.v1+json                                                        6.69/6.69 KB 100.00%   12ms
  └─ sha256:5dbdff18a5cf8f6a1b3fa6c8023f1d06b9533ca00ad8613be8d9b224968994f3                                                                 
✓ Pulled    application/vnd.docker.image.rootfs.diff.tar.gzip                                                       106/106 MB 100.00%    13s
  └─ sha256:a86616b90bad56f0f83f8c87e2dfe7e05e5242a89caa4e0238835fa52ef25585                                                                 
✓ Pulled    application/vnd.docker.container.image.v1+json                                                        6.69/6.69 KB 100.00%    1ms
  └─ sha256:322bd434c69032bddfb830e9c36c39f3efd987b693c311235c72618a3f654767                                                                 
✓ Pulled    application/vnd.docker.image.rootfs.diff.tar.gzip                                                       108/108 MB 100.00%    18s
  └─ sha256:e00d812ed2fb91179f71603b1314d730013904dd1f6fbeac538b9aac24d71e76                                                                 
✓ Pulled    application/vnd.docker.distribution.manifest.v2+json                                                    430/430  B 100.00%   17ms
  └─ sha256:2af8ed9feaeada845f4d60f1fe4db951df2e5334ea01bec4b5ef4f191ad20d65                                                                 
✓ Pulled    application/vnd.docker.distribution.manifest.v2+json                                                    430/430  B 100.00%   13ms
  └─ sha256:c8efec87588c7a2d84c760d54446b2e081e607a709f16f19283774d5612191b7                                                                 
✓ Pulled    application/vnd.docker.distribution.manifest.list.v2+json                                               529/529  B 100.00%   15ms
  └─ sha256:9081a6f83f4febf47369fc46b6f0f7683c7db243df5b43fc9defe51b0471a950                                                                 
Pulled tag v1.33.1 with 0 referrer(s)
✓ Exists    application/vnd.docker.distribution.manifest.list.v2+json                                               529/529  B 100.00%     0s
  └─ sha256:9081a6f83f4febf47369fc46b6f0f7683c7db243df5b43fc9defe51b0471a950                                                                 
Pulled tag v1.33.2 with 0 referrer(s)
Exporting to kubectl.tar
Exported to kubectl.tar (214 MB)
Successfully backed up 2 tag(s) from "docker.io/bitnami/kubectl" to "kubectl.tar" in 21s.

Are you willing to submit PRs to contribute to this feature?

  • Yes, I am willing to implement it.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions