From cb0eed833d8639fadec83105da3485a709d3480c Mon Sep 17 00:00:00 2001 From: Lifubang Date: Thu, 23 Aug 2018 19:28:53 +0800 Subject: [PATCH] decode Spec value in command 'ctr c info ' Signed-off-by: Lifubang fix some errors use typeurl.UnmarshalAny instead json.Unmarshal to interface{} Signed-off-by: Lifubang Signed-off-by: Michael Crosby --- cmd/ctr/commands/containers/containers.go | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/cmd/ctr/commands/containers/containers.go b/cmd/ctr/commands/containers/containers.go index b89015216..0b88c6254 100644 --- a/cmd/ctr/commands/containers/containers.go +++ b/cmd/ctr/commands/containers/containers.go @@ -28,7 +28,9 @@ import ( "github.com/containerd/containerd/cio" "github.com/containerd/containerd/cmd/ctr/commands" "github.com/containerd/containerd/cmd/ctr/commands/run" + "github.com/containerd/containerd/containers" "github.com/containerd/containerd/log" + "github.com/containerd/typeurl" "github.com/urfave/cli" ) @@ -261,8 +263,22 @@ var infoCommand = cli.Command{ if err != nil { return err } - commands.PrintAsJSON(info) + if info.Spec != nil && info.Spec.Value != nil { + v, err := typeurl.UnmarshalAny(info.Spec) + if err != nil { + return err + } + commands.PrintAsJSON(struct { + containers.Container + Spec interface{} `json:"Spec,omitempty"` + }{ + Container: info, + Spec: v, + }) + return nil + } + commands.PrintAsJSON(info) return nil }, }