From b671a97213f27d6c9ffe3570dd585212bd17ef12 Mon Sep 17 00:00:00 2001 From: Ruidong Cao Date: Tue, 24 Jun 2025 15:25:22 +0800 Subject: [PATCH] ctr:add sandbox info command to print sandbox info Signed-off-by: Ruidong Cao --- cmd/ctr/commands/sandboxes/sandboxes.go | 29 +++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cmd/ctr/commands/sandboxes/sandboxes.go b/cmd/ctr/commands/sandboxes/sandboxes.go index f129f8cfba..a1938c24ec 100644 --- a/cmd/ctr/commands/sandboxes/sandboxes.go +++ b/cmd/ctr/commands/sandboxes/sandboxes.go @@ -26,6 +26,7 @@ import ( "github.com/containerd/containerd/v2/cmd/ctr/commands" "github.com/containerd/containerd/v2/defaults" "github.com/containerd/containerd/v2/pkg/oci" + "github.com/containerd/errdefs" "github.com/containerd/log" "github.com/urfave/cli/v2" ) @@ -39,6 +40,7 @@ var Command = &cli.Command{ runCommand, listCommand, removeCommand, + infoCommand, }, } @@ -191,3 +193,30 @@ var removeCommand = &cli.Command{ return nil }, } + +var infoCommand = &cli.Command{ + Name: "info", + Aliases: []string{"i"}, + Usage: "Get info about a sandbox", + ArgsUsage: "", + Action: func(cliContext *cli.Context) error { + client, ctx, cancel, err := commands.NewClient(cliContext) + if err != nil { + return err + } + defer cancel() + + id := cliContext.Args().First() + if id == "" { + return fmt.Errorf("sandbox id must be provided: %w", errdefs.ErrInvalidArgument) + } + sandbox, err := client.LoadSandbox(ctx, id) + if err != nil { + return fmt.Errorf("failed to load sandbox %s", id) + } + + info := sandbox.Metadata() + commands.PrintAsJSON(info) + return nil + }, +}