list.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. package dns
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/gravitl/netmaker/cli/cmd/commons"
  6. "github.com/gravitl/netmaker/cli/functions"
  7. "github.com/gravitl/netmaker/models"
  8. "github.com/guumaster/tablewriter"
  9. "github.com/spf13/cobra"
  10. )
  11. var dnsListCmd = &cobra.Command{
  12. Use: "list",
  13. Args: cobra.NoArgs,
  14. Short: "List DNS entries",
  15. Long: `List DNS entries`,
  16. Run: func(cmd *cobra.Command, args []string) {
  17. var data []models.DNSEntry
  18. if networkName != "" {
  19. switch dnsType {
  20. case "node":
  21. data = *functions.GetNodeDNS(networkName)
  22. case "custom":
  23. data = *functions.GetCustomDNS(networkName)
  24. case "network", "":
  25. data = *functions.GetNetworkDNS(networkName)
  26. default:
  27. fmt.Println("Invalid DNS type provided ", dnsType)
  28. }
  29. } else {
  30. data = *functions.GetDNS()
  31. }
  32. switch commons.OutputFormat {
  33. case commons.JsonOutput:
  34. functions.PrettyPrint(data)
  35. default:
  36. table := tablewriter.NewWriter(os.Stdout)
  37. table.SetHeader([]string{"Name", "Network", "IPv4 Address", "IPv6 Address"})
  38. for _, d := range data {
  39. table.Append([]string{d.Name, d.Network, d.Address, d.Address6})
  40. }
  41. table.Render()
  42. }
  43. },
  44. }
  45. func init() {
  46. dnsListCmd.Flags().StringVar(&networkName, "network", "", "Network name")
  47. dnsListCmd.Flags().StringVar(&dnsType, "type", "", "Type of DNS records to fetch ENUM(node, custom, network)")
  48. rootCmd.AddCommand(dnsListCmd)
  49. }