From a4d445b5f30ae40a1e1d9233f5a510f0a85589ab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20Br=C3=BCderl?= Date: Wed, 3 Oct 2018 01:55:20 +0200 Subject: [PATCH] add node ls --- cmd/kaf/node.go | 53 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 cmd/kaf/node.go diff --git a/cmd/kaf/node.go b/cmd/kaf/node.go new file mode 100644 index 00000000..b35eda02 --- /dev/null +++ b/cmd/kaf/node.go @@ -0,0 +1,53 @@ +package main + +import ( + "fmt" + "os" + "text/tabwriter" + + "sort" + + "github.com/spf13/cobra" +) + +func init() { + rootCmd.AddCommand(nodeCommand) + nodeCommand.AddCommand(nodeLsCommand) + nodeLsCommand.Flags().BoolVar(&noHeaderFlag, "no-headers", false, "Hide table headers") +} + +var nodeCommand = &cobra.Command{ + Use: "node", + Short: "Describe and List nodes", +} + +var nodeLsCommand = &cobra.Command{ + Use: "ls", + Short: "List nodes in a cluster", + Run: func(cmd *cobra.Command, args []string) { + admin, err := getClusterAdmin() + if err != nil { + panic(err) + } + + brokers, _, err := admin.DescribeCluster() + if err != nil { + panic(err) + } + + sort.Slice(brokers, func(i, j int) bool { + return brokers[i].ID() < brokers[j].ID() + }) + + w := tabwriter.NewWriter(os.Stdout, tabwriterMinWidth, tabwriterWidth, tabwriterPadding, tabwriterPadChar, tabwriterFlags) + if !noHeaderFlag { + fmt.Fprintf(w, "ID\tADDRESS\t\n") + } + + for _, broker := range brokers { + fmt.Fprintf(w, "%v\t%v\t\n", broker.ID(), broker.Addr()) + } + + w.Flush() + }, +}