summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd/podman/system/connection/list.go35
-rw-r--r--docs/source/markdown/podman-system-connection-list.1.md19
-rw-r--r--test/e2e/system_connection_test.go6
3 files changed, 52 insertions, 8 deletions
diff --git a/cmd/podman/system/connection/list.go b/cmd/podman/system/connection/list.go
index b0b15b57d..2f74215c1 100644
--- a/cmd/podman/system/connection/list.go
+++ b/cmd/podman/system/connection/list.go
@@ -1,11 +1,13 @@
package connection
import (
+ "fmt"
"os"
"github.com/containers/common/pkg/completion"
"github.com/containers/common/pkg/config"
"github.com/containers/common/pkg/report"
+ "github.com/containers/podman/v3/cmd/podman/common"
"github.com/containers/podman/v3/cmd/podman/registry"
"github.com/containers/podman/v3/cmd/podman/system"
"github.com/containers/podman/v3/cmd/podman/validate"
@@ -14,13 +16,14 @@ import (
var (
listCmd = &cobra.Command{
- Use: "list",
+ Use: "list [options]",
Aliases: []string{"ls"},
Args: validate.NoArgs,
Short: "List destination for the Podman service(s)",
Long: `List destination information for the Podman service(s) in podman configuration`,
Example: `podman system connection list
- podman system connection ls`,
+ podman system connection ls
+ podman system connection ls --format=json`,
ValidArgsFunction: completion.AutocompleteNone,
RunE: list,
TraverseChildren: false,
@@ -32,6 +35,9 @@ func init() {
Command: listCmd,
Parent: system.ConnectionCmd,
})
+
+ listCmd.Flags().String("format", "", "Custom Go template for printing connections")
+ _ = listCmd.RegisterFlagCompletionFunc("format", common.AutocompleteFormat(namedDestination{}))
}
type namedDestination struct {
@@ -39,7 +45,7 @@ type namedDestination struct {
config.Destination
}
-func list(_ *cobra.Command, _ []string) error {
+func list(cmd *cobra.Command, _ []string) error {
cfg, err := config.ReadCustomConfig()
if err != nil {
return err
@@ -71,8 +77,22 @@ func list(_ *cobra.Command, _ []string) error {
rows = append(rows, r)
}
- // TODO: Allow user to override format
- format := "{{range . }}{{.Name}}\t{{.Identity}}\t{{.URI}}\n{{end -}}"
+ format := "{{.Name}}\t{{.Identity}}\t{{.URI}}\n"
+ switch {
+ case report.IsJSON(cmd.Flag("format").Value.String()):
+ buf, err := registry.JSONLibrary().MarshalIndent(rows, "", " ")
+ if err == nil {
+ fmt.Println(string(buf))
+ }
+ return err
+ default:
+ if cmd.Flag("format").Changed {
+ format = cmd.Flag("format").Value.String()
+ format = report.NormalizeFormat(format)
+ }
+ }
+ format = report.EnforceRange(format)
+
tmpl, err := report.NewTemplate("list").Parse(format)
if err != nil {
return err
@@ -84,6 +104,9 @@ func list(_ *cobra.Command, _ []string) error {
}
defer w.Flush()
- _ = tmpl.Execute(w, hdrs)
+ isTable := report.HasTable(cmd.Flag("format").Value.String())
+ if !cmd.Flag("format").Changed || isTable {
+ _ = tmpl.Execute(w, hdrs)
+ }
return tmpl.Execute(w, rows)
}
diff --git a/docs/source/markdown/podman-system-connection-list.1.md b/docs/source/markdown/podman-system-connection-list.1.md
index f5fb5c8e3..6b25a045d 100644
--- a/docs/source/markdown/podman-system-connection-list.1.md
+++ b/docs/source/markdown/podman-system-connection-list.1.md
@@ -4,13 +4,28 @@
podman\-system\-connection\-list - List the destination for the Podman service(s)
## SYNOPSIS
-**podman system connection list**
+**podman system connection list** [*options*]
-**podman system connection ls**
+**podman system connection ls** [*options*]
## DESCRIPTION
List ssh destination(s) for podman service(s).
+## OPTIONS
+
+#### **--format**=*format*
+
+Change the default output format. This can be of a supported type like 'json' or a Go template.
+Valid placeholders for the Go template listed below:
+
+| **Placeholder** | **Description** |
+| --------------- | ----------------------------------------------------------------------------- |
+| *.Name* | Connection Name/Identifier |
+| *.Identity* | Path to file containing SSH identity |
+| *.URI* | URI to podman service. Valid schemes are ssh://[user@]*host*[:port]*Unix domain socket*[?secure=True], unix://*Unix domain socket*, and tcp://localhost[:*port*] |
+
+An asterisk is appended to the default connection.
+
## EXAMPLE
```
$ podman system connection list
diff --git a/test/e2e/system_connection_test.go b/test/e2e/system_connection_test.go
index 4697cf860..7c922a648 100644
--- a/test/e2e/system_connection_test.go
+++ b/test/e2e/system_connection_test.go
@@ -147,6 +147,12 @@ var _ = Describe("podman system connection", func() {
session.WaitWithDefaultTimeout()
Expect(session).Should(Exit(0))
Expect(session.Out).Should(Say("Name *Identity *URI"))
+
+ cmd = []string{"system", "connection", "list", "--format", "{{.Name}}"}
+ session = podmanTest.Podman(cmd)
+ session.WaitWithDefaultTimeout()
+ Expect(session).Should(Exit(0))
+ Expect(session.OutputToString()).Should(Equal("devl* qe"))
})
It("failed default", func() {