[lxc-devel] [lxd/master] lxc/network: Add --format option to list
stgraber on Github
lxc-bot at linuxcontainers.org
Tue Jun 26 23:32:41 UTC 2018
A non-text attachment was scrubbed...
Name: not available
Type: text/x-mailbox
Size: 370 bytes
Desc: not available
URL: <http://lists.linuxcontainers.org/pipermail/lxc-devel/attachments/20180626/668e7885/attachment.bin>
-------------- next part --------------
From 378e1041703d78f03d7772072465a30d4c1c76d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?St=C3=A9phane=20Graber?= <stgraber at ubuntu.com>
Date: Tue, 26 Jun 2018 19:31:19 -0400
Subject: [PATCH] lxc/network: Add --format option to list
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Closes #4654
Signed-off-by: Stéphane Graber <stgraber at ubuntu.com>
---
lxc/network.go | 51 +++++++++++++++++++++++++++++++++++++++++++--------
1 file changed, 43 insertions(+), 8 deletions(-)
diff --git a/lxc/network.go b/lxc/network.go
index 0386ed12f..2831a0b29 100644
--- a/lxc/network.go
+++ b/lxc/network.go
@@ -1,6 +1,8 @@
package main
import (
+ "encoding/csv"
+ "encoding/json"
"fmt"
"io/ioutil"
"os"
@@ -709,6 +711,8 @@ func (c *cmdNetworkGet) Run(cmd *cobra.Command, args []string) error {
type cmdNetworkList struct {
global *cmdGlobal
network *cmdNetwork
+
+ flagFormat string
}
func (c *cmdNetworkList) Command() *cobra.Command {
@@ -720,6 +724,7 @@ func (c *cmdNetworkList) Command() *cobra.Command {
`List available networks`))
cmd.RunE = c.Run
+ cmd.Flags().StringVar(&c.flagFormat, "format", "table", i18n.G("Format (csv|json|table|yaml)")+"``")
return cmd
}
@@ -773,10 +778,6 @@ func (c *cmdNetworkList) Run(cmd *cobra.Command, args []string) error {
data = append(data, details)
}
- table := tablewriter.NewWriter(os.Stdout)
- table.SetAutoWrapText(false)
- table.SetAlignment(tablewriter.ALIGN_LEFT)
- table.SetRowLine(true)
header := []string{
i18n.G("NAME"),
i18n.G("TYPE"),
@@ -787,10 +788,44 @@ func (c *cmdNetworkList) Run(cmd *cobra.Command, args []string) error {
if resource.server.IsClustered() {
header = append(header, i18n.G("STATE"))
}
- table.SetHeader(header)
- sort.Sort(byName(data))
- table.AppendBulk(data)
- table.Render()
+
+ switch c.flagFormat {
+ case listFormatTable:
+ table := tablewriter.NewWriter(os.Stdout)
+ table.SetAutoWrapText(false)
+ table.SetAlignment(tablewriter.ALIGN_LEFT)
+ table.SetRowLine(true)
+ table.SetHeader(header)
+ sort.Sort(byName(data))
+ table.AppendBulk(data)
+ table.Render()
+ case listFormatCSV:
+ sort.Sort(byName(data))
+ data = append(data, []string{})
+ copy(data[1:], data[0:])
+ data[0] = header
+ w := csv.NewWriter(os.Stdout)
+ w.WriteAll(data)
+ if err := w.Error(); err != nil {
+ return err
+ }
+ case listFormatJSON:
+ data := networks
+ enc := json.NewEncoder(os.Stdout)
+ err := enc.Encode(data)
+ if err != nil {
+ return err
+ }
+ case listFormatYAML:
+ data := networks
+ out, err := yaml.Marshal(data)
+ if err != nil {
+ return err
+ }
+ fmt.Printf("%s", out)
+ default:
+ return fmt.Errorf(i18n.G("Invalid format %q"), c.flagFormat)
+ }
return nil
}
More information about the lxc-devel
mailing list