Преглед изворни кода

fallback to interface with docker inspect

Signed-off-by: Victor Vieux <victorvieux@gmail.com>
Victor Vieux пре 10 година
родитељ
комит
52c3bb6a0e
1 измењених фајлова са 18 додато и 4 уклоњено
  1. 18 4
      api/client/inspect.go

+ 18 - 4
api/client/inspect.go

@@ -59,7 +59,8 @@ func (cli *DockerCli) CmdInspect(args ...string) error {
 				continue
 				continue
 			}
 			}
 		} else {
 		} else {
-			dec := json.NewDecoder(bytes.NewReader(obj))
+			rdr := bytes.NewReader(obj)
+			dec := json.NewDecoder(rdr)
 
 
 			if isImage {
 			if isImage {
 				inspPtr := types.ImageInspect{}
 				inspPtr := types.ImageInspect{}
@@ -69,7 +70,14 @@ func (cli *DockerCli) CmdInspect(args ...string) error {
 					continue
 					continue
 				}
 				}
 				if err := tmpl.Execute(cli.out, inspPtr); err != nil {
 				if err := tmpl.Execute(cli.out, inspPtr); err != nil {
-					return err
+					rdr.Seek(0, 0)
+					var raw interface{}
+					if err := dec.Decode(&raw); err != nil {
+						return err
+					}
+					if err = tmpl.Execute(cli.out, raw); err != nil {
+						return err
+					}
 				}
 				}
 			} else {
 			} else {
 				inspPtr := types.ContainerJSON{}
 				inspPtr := types.ContainerJSON{}
@@ -79,8 +87,14 @@ func (cli *DockerCli) CmdInspect(args ...string) error {
 					continue
 					continue
 				}
 				}
 				if err := tmpl.Execute(cli.out, inspPtr); err != nil {
 				if err := tmpl.Execute(cli.out, inspPtr); err != nil {
-					return err
-
+					rdr.Seek(0, 0)
+					var raw interface{}
+					if err := dec.Decode(&raw); err != nil {
+						return err
+					}
+					if err = tmpl.Execute(cli.out, raw); err != nil {
+						return err
+					}
 				}
 				}
 			}
 			}
 			cli.out.Write([]byte{'\n'})
 			cli.out.Write([]byte{'\n'})