format option added to network inspect command.

This helps user to print the inspect output in go template format.

Signed-off-by: Kunal Kushwaha <kunal.kushwaha@gmail.com>
This commit is contained in:
Kunal Kushwaha
2020-05-11 07:27:10 +00:00
parent 1dde2730e8
commit ade20f3323
2 changed files with 41 additions and 1 deletions

View File

@ -3,6 +3,10 @@ package network
import ( import (
"encoding/json" "encoding/json"
"fmt" "fmt"
"html/template"
"io"
"os"
"strings"
"github.com/containers/libpod/cmd/podman/registry" "github.com/containers/libpod/cmd/podman/registry"
"github.com/containers/libpod/pkg/domain/entities" "github.com/containers/libpod/pkg/domain/entities"
@ -24,12 +28,18 @@ var (
} }
) )
var (
networkInspectOptions entities.NetworkInspectOptions
)
func init() { func init() {
registry.Commands = append(registry.Commands, registry.CliCommand{ registry.Commands = append(registry.Commands, registry.CliCommand{
Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode}, Mode: []entities.EngineMode{entities.ABIMode, entities.TunnelMode},
Command: networkinspectCommand, Command: networkinspectCommand,
Parent: networkCmd, Parent: networkCmd,
}) })
flags := networkinspectCommand.Flags()
flags.StringVarP(&networkInspectOptions.Format, "format", "f", "", "Pretty-print network to JSON or using a Go template")
} }
func networkInspect(cmd *cobra.Command, args []string) error { func networkInspect(cmd *cobra.Command, args []string) error {
@ -41,6 +51,22 @@ func networkInspect(cmd *cobra.Command, args []string) error {
if err != nil { if err != nil {
return err return err
} }
fmt.Println(string(b)) if strings.ToLower(networkInspectOptions.Format) == "json" || networkInspectOptions.Format == "" {
fmt.Println(string(b))
} else {
var w io.Writer = os.Stdout
//There can be more than 1 in the inspect output.
format := "{{range . }}" + networkInspectOptions.Format + "{{end}}"
tmpl, err := template.New("inspectNetworks").Parse(format)
if err != nil {
return err
}
if err := tmpl.Execute(w, responses); err != nil {
return err
}
if flusher, ok := w.(interface{ Flush() error }); ok {
return flusher.Flush()
}
}
return nil return nil
} }

View File

@ -9,6 +9,15 @@ podman\-network\-inspect - Displays the raw CNI network configuration for one or
## DESCRIPTION ## DESCRIPTION
Display the raw (JSON format) network configuration. This command is not available for rootless users. Display the raw (JSON format) network configuration. This command is not available for rootless users.
## OPTIONS
**--quiet**, **-q**
The `quiet` option will restrict the output to only the network names.
**--format**, **-f**
Pretty-print networks to JSON or using a Go template.
## EXAMPLE ## EXAMPLE
Inspect the default podman network Inspect the default podman network
@ -43,6 +52,11 @@ Inspect the default podman network
] ]
``` ```
```
# podman network inspect podman --format '{{(index .plugins 0).ipam.ranges}}'
[[map[gateway:10.88.0.1 subnet:10.88.0.0/16]]]
```
## SEE ALSO ## SEE ALSO
podman(1), podman-network(1), podman-network-ls(1) podman(1), podman-network(1), podman-network-ls(1)