| 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 |
| }, |
| } |