зеркало из https://github.com/microsoft/docker.git
Merge pull request #17481 from vdemeester/17446-network-inspect-format
Add format flag to network inspect
This commit is contained in:
Коммит
4d849619d4
|
@ -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, "", " ")
|
||||
|
|
|
@ -1133,9 +1133,15 @@ _docker_network_disconnect() {
|
|||
}
|
||||
|
||||
_docker_network_inspect() {
|
||||
case "$prev" in
|
||||
--format|-f)
|
||||
return
|
||||
;;
|
||||
esac
|
||||
|
||||
case "$cur" in
|
||||
-*)
|
||||
COMPREPLY=( $( compgen -W "--help" -- "$cur" ) )
|
||||
COMPREPLY=( $( compgen -W "--format -f --help" -- "$cur" ) )
|
||||
;;
|
||||
*)
|
||||
__docker_networks
|
||||
|
|
|
@ -309,9 +309,10 @@ __docker_network_subcommand() {
|
|||
"($help)*"{-o=,--opt=}"[Set driver specific options]:key=value: " \
|
||||
"($help -)1:Network Name: " && ret=0
|
||||
;;
|
||||
(inspect|rm)
|
||||
(inspect)
|
||||
_arguments $(__docker_arguments) \
|
||||
$opts_help \
|
||||
"($help -f --format)"{-f=,--format=}"[Format the output using the given go template]:template: " \
|
||||
"($help -)*:network:__docker_networks" && ret=0
|
||||
;;
|
||||
(ls)
|
||||
|
@ -320,6 +321,11 @@ __docker_network_subcommand() {
|
|||
"($help)--no-trunc[Do not truncate the output]" \
|
||||
"($help -q --quiet)"{-q,--quiet}"[Only display numeric IDs]" && ret=0
|
||||
;;
|
||||
(rm)
|
||||
_arguments $(__docker_arguments) \
|
||||
$opts_help \
|
||||
"($help -)*:network:__docker_networks" && ret=0
|
||||
;;
|
||||
(help)
|
||||
_arguments $(__docker_arguments) ":subcommand:__docker_network_commands" && ret=0
|
||||
;;
|
||||
|
|
|
@ -14,6 +14,7 @@ parent = "smn_cli"
|
|||
|
||||
Displays detailed information on a network
|
||||
|
||||
-f, --format= Format the output using the given go template.
|
||||
--help=false Print usage
|
||||
|
||||
Returns information about one or more networks. By default, this command renders all results in a JSON object. For example, if you connect two containers to a network:
|
||||
|
@ -26,7 +27,11 @@ $ sudo docker run -itd --name=container2 busybox
|
|||
bda12f8922785d1f160be70736f26c1e331ab8aaf8ed8d56728508f2e2fd4727
|
||||
```
|
||||
|
||||
The `network inspect` command shows the containers, by id, in its results.
|
||||
The `network inspect` command shows the containers, by id, in its
|
||||
results. You can specify an alternate format to execute a given
|
||||
template for each result. Go's
|
||||
[text/template](http://golang.org/pkg/text/template/) package describes all the
|
||||
details of the format.
|
||||
|
||||
```bash
|
||||
$ sudo docker network inspect bridge
|
||||
|
|
|
@ -293,6 +293,17 @@ func (s *DockerSuite) TestDockerNetworkDeleteMultiple(c *check.C) {
|
|||
assertNwIsAvailable(c, "testDelMulti2")
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestDockerNetworkInspect(c *check.C) {
|
||||
out, _ := dockerCmd(c, "network", "inspect", "host")
|
||||
networkResources := []types.NetworkResource{}
|
||||
err := json.Unmarshal([]byte(out), &networkResources)
|
||||
c.Assert(err, check.IsNil)
|
||||
c.Assert(networkResources, checker.HasLen, 1)
|
||||
|
||||
out, _ = dockerCmd(c, "network", "inspect", "--format='{{ .Name }}'", "host")
|
||||
c.Assert(strings.TrimSpace(out), check.Equals, "host")
|
||||
}
|
||||
|
||||
func (s *DockerSuite) TestDockerInspectMultipleNetwork(c *check.C) {
|
||||
out, _ := dockerCmd(c, "network", "inspect", "host", "none")
|
||||
networkResources := []types.NetworkResource{}
|
||||
|
|
|
@ -6,6 +6,7 @@ docker-network-inspect - inspect a network
|
|||
|
||||
# SYNOPSIS
|
||||
**docker network inspect**
|
||||
[**-f**|**--format**[=*FORMAT*]]
|
||||
[**--help**]
|
||||
NETWORK [NETWORK...]
|
||||
|
||||
|
@ -21,7 +22,11 @@ $ sudo docker run -itd --name=container2 busybox
|
|||
bda12f8922785d1f160be70736f26c1e331ab8aaf8ed8d56728508f2e2fd4727
|
||||
```
|
||||
|
||||
The `network inspect` command shows the containers, by id, in its results.
|
||||
The `network inspect` command shows the containers, by id, in its
|
||||
results. You can specify an alternate format to execute a given
|
||||
template for each result. Go's
|
||||
[text/template](http://golang.org/pkg/text/template/) package
|
||||
describes all the details of the format.
|
||||
|
||||
```bash
|
||||
$ sudo docker network inspect bridge
|
||||
|
@ -69,6 +74,8 @@ $ sudo docker network inspect bridge
|
|||
```
|
||||
|
||||
# OPTIONS
|
||||
**-f**, **--format**=""
|
||||
Format the output using the given go template.
|
||||
|
||||
**--help**
|
||||
Print usage statement
|
||||
|
|
Загрузка…
Ссылка в новой задаче