Skip to content

Commit 497045b

Browse files
authored
Merge pull request #5114 from ningmingxiao/add_snapshot
feature: support to print snapshot info for image
2 parents f40e074 + c55fd08 commit 497045b

2 files changed

Lines changed: 15 additions & 0 deletions

File tree

pkg/imageinspector/imageinspector.go

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@ package imageinspector
1919
import (
2020
"context"
2121

22+
"github.com/opencontainers/image-spec/identity"
23+
2224
containerd "github.com/containerd/containerd/v2/client"
2325
"github.com/containerd/containerd/v2/core/images"
2426
"github.com/containerd/containerd/v2/core/snapshots"
@@ -56,6 +58,17 @@ func Inspect(ctx context.Context, client *containerd.Client, image images.Image,
5658
} else {
5759
n.ImageConfigDesc = imageConfigDesc
5860
n.ImageConfig = imageConfig
61+
chainIDs := identity.ChainIDs(imageConfig.RootFS.DiffIDs)
62+
snapshots := make([]snapshots.Info, len(chainIDs))
63+
for i, id := range chainIDs {
64+
snapInfo, err := snapshotter.Stat(ctx, id.String())
65+
if err == nil {
66+
snapshots[i] = snapInfo
67+
} else {
68+
log.G(ctx).WithError(err).WithField("id", image.Name).Warnf("failed to get snapshot %s info", id.String())
69+
}
70+
}
71+
n.Snapshots = snapshots
5972
}
6073
n.Size, err = imgutil.UnpackedImageSize(ctx, snapshotter, img)
6174
if err != nil {

pkg/inspecttypes/native/image.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ import (
2020
ocispec "github.com/opencontainers/image-spec/specs-go/v1"
2121

2222
"github.com/containerd/containerd/v2/core/images"
23+
"github.com/containerd/containerd/v2/core/snapshots"
2324
)
2425

2526
// Image corresponds to a containerd-native image object.
@@ -34,4 +35,5 @@ type Image struct {
3435
ImageConfigDesc ocispec.Descriptor `json:"ImageConfigDesc"`
3536
ImageConfig ocispec.Image `json:"ImageConfig"`
3637
Size int64 `json:"size"`
38+
Snapshots []snapshots.Info `json:"Snapshots,omitempty"`
3739
}

0 commit comments

Comments
 (0)