Add format flag to network inspect

…for consistency as docker inspect and docker volume inspect supports it too

Signed-off-by: Vincent Demeester <vincent@sbr.pm>
Upstream-commit: 295c27388dd1e7cc4196fbb8ffe0646b33bacb5b
Component: engine
This commit is contained in:
Vincent Demeester
2015-12-02 22:32:10 +01:00
parent 6e71f2c42e
commit f437e2a3c8
6 changed files with 78 additions and 9 deletions

View File

@ -8,6 +8,7 @@ import (
"net"
"strings"
"text/tabwriter"
"text/template"
"github.com/docker/docker/api/types"
Cli "github.com/docker/docker/cli"
@ -203,14 +204,25 @@ func (cli *DockerCli) CmdNetworkLs(args ...string) error {
// Usage: docker network inspect [OPTIONS] <NETWORK> [NETWORK...]
func (cli *DockerCli) CmdNetworkInspect(args ...string) error {
cmd := Cli.Subcmd("network inspect", []string{"NETWORK [NETWORK...]"}, "Displays detailed information on one or more networks", false)
tmplStr := cmd.String([]string{"f", "-format"}, "", "Format the output using the given go template")
cmd.Require(flag.Min, 1)
err := cmd.ParseFlags(args, true)
if err != nil {
if err := cmd.ParseFlags(args, true); err != nil {
return err
}
var tmpl *template.Template
if *tmplStr != "" {
var err error
tmpl, err = template.New("").Funcs(funcMap).Parse(*tmplStr)
if err != nil {
return err
}
}
status := 0
var networks []*types.NetworkResource
var networks []types.NetworkResource
buf := new(bytes.Buffer)
for _, name := range cmd.Args() {
obj, _, err := readBody(cli.call("GET", "/networks/"+name, nil, nil))
if err != nil {
@ -222,12 +234,34 @@ func (cli *DockerCli) CmdNetworkInspect(args ...string) error {
status = 1
continue
}
networkResource := types.NetworkResource{}
var networkResource types.NetworkResource
if err := json.NewDecoder(bytes.NewReader(obj)).Decode(&networkResource); err != nil {
return err
}
networks = append(networks, &networkResource)
if tmpl == nil {
networks = append(networks, networkResource)
continue
}
if err := tmpl.Execute(buf, &networkResource); err != nil {
if err := tmpl.Execute(buf, &networkResource); err != nil {
fmt.Fprintf(cli.err, "%s\n", err)
return Cli.StatusError{StatusCode: 1}
}
}
buf.WriteString("\n")
}
if tmpl != nil {
if _, err := io.Copy(cli.out, buf); err != nil {
return err
}
return nil
}
if len(networks) == 0 {
io.WriteString(cli.out, "[]")
}
b, err := json.MarshalIndent(networks, "", " ")