list.go 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. package node
  2. import (
  3. "os"
  4. "strconv"
  5. "github.com/gravitl/netmaker/cli/functions"
  6. "github.com/gravitl/netmaker/models"
  7. "github.com/guumaster/tablewriter"
  8. "github.com/spf13/cobra"
  9. )
  10. // nodeListCmd lists all nodes
  11. var nodeListCmd = &cobra.Command{
  12. Use: "list",
  13. Args: cobra.NoArgs,
  14. Short: "List all nodes",
  15. Long: `List all nodes`,
  16. Run: func(cmd *cobra.Command, args []string) {
  17. var data []models.ApiNode
  18. if networkName != "" {
  19. data = *functions.GetNodes(networkName)
  20. } else {
  21. data = *functions.GetNodes()
  22. }
  23. table := tablewriter.NewWriter(os.Stdout)
  24. table.SetHeader([]string{"ID", "Addresses", "Network", "Egress", "Ingress", "Relay"})
  25. for _, d := range data {
  26. addresses := ""
  27. if d.Address != "" {
  28. addresses += d.Address
  29. }
  30. if d.Address6 != "" {
  31. if d.Address != "" {
  32. addresses += ", "
  33. }
  34. addresses += d.Address6
  35. }
  36. table.Append([]string{d.ID, addresses, d.Network,
  37. strconv.FormatBool(d.IsEgressGateway), strconv.FormatBool(d.IsIngressGateway), strconv.FormatBool(d.IsRelay)})
  38. }
  39. table.Render()
  40. },
  41. }
  42. func init() {
  43. nodeListCmd.Flags().StringVar(&networkName, "network", "", "Network name specifier")
  44. rootCmd.AddCommand(nodeListCmd)
  45. }