Skip to content

Commit 2fd81ee

Browse files
committed
feature: support to print snapshot info for image
Signed-off-by: ningmingxiao <ning.mingxiao@zte.com.cn>
1 parent 9145d0f commit 2fd81ee

2 files changed

Lines changed: 17 additions & 0 deletions

File tree

pkg/imageinspector/imageinspector.go

Lines changed: 15 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,19 @@ func Inspect(ctx context.Context, client *containerd.Client, image images.Image,
5658
} else {
5759
n.ImageConfigDesc = imageConfigDesc
5860
n.ImageConfig = imageConfig
61+
diffIDS := imageConfig.RootFS.DiffIDs
62+
// chainIDS := calculateChainID(diffIDS)
63+
chainIDS := identity.ChainIDs(diffIDS)
64+
snapshots := make([]snapshots.Info, len(chainIDS))
65+
for i, id := range chainIDS {
66+
snapInfo, err := snapshotter.Stat(ctx, id.String())
67+
if err == nil {
68+
snapshots[i] = snapInfo
69+
} else {
70+
log.G(ctx).WithError(err).WithField("id", image.Name).Warnf("failed to get snapshot %s info", id.String())
71+
}
72+
}
73+
n.Snapshots = snapshots
5974
}
6075
n.Size, err = imgutil.UnpackedImageSize(ctx, snapshotter, img)
6176
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)