blob: 2cfba1151ec7f8e5bbd6c119a4b05c374bad2995 [file] [log] [blame] [edit]
package main
import (
"encoding/json"
gocontext "context"
"fmt"
containersapi "github.com/containerd/containerd/api/services/containers"
"github.com/containerd/containerd/api/services/execution"
"github.com/pkg/errors"
"github.com/urfave/cli"
)
var infoCommand = cli.Command{
Name: "info",
Usage: "get info about a container",
Flags: []cli.Flag{
cli.StringFlag{
Name: "id",
Usage: "id of the container",
},
},
Action: func(context *cli.Context) error {
id := context.String("id")
if id == "" {
return errors.New("container id must be provided")
}
containers, err := getContainersService(context)
if err != nil {
return err
}
tasks, err := getTasksService(context)
if err != nil {
return err
}
containerResponse, err := containers.Get(gocontext.TODO(), &containersapi.GetContainerRequest{ID: id})
if err != nil {
return err
}
// TODO(stevvooe): Just dumping the container and the task, for now. We
// should split this into two separate commands.
cjson, err := json.MarshalIndent(containerResponse, "", " ")
if err != nil {
return err
}
fmt.Println(string(cjson))
response, err := tasks.Info(gocontext.Background(), &execution.InfoRequest{ContainerID: id})
if err != nil {
return err
}
json, err := json.MarshalIndent(response, "", " ")
if err != nil {
return err
}
fmt.Println(string(json))
return nil
},
}