commands.go 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package command
  2. import (
  3. "fmt"
  4. "strings"
  5. "github.com/gravitl/netmaker/logger"
  6. "github.com/gravitl/netmaker/netclient/config"
  7. "github.com/gravitl/netmaker/netclient/daemon"
  8. "github.com/gravitl/netmaker/netclient/functions"
  9. "github.com/gravitl/netmaker/netclient/ncutils"
  10. )
  11. // Join - join command to run from cli
  12. func Join(cfg *config.ClientConfig, privateKey string) error {
  13. var err error
  14. //join network
  15. err = functions.JoinNetwork(cfg, privateKey)
  16. if err != nil {
  17. if !strings.Contains(err.Error(), "ALREADY_INSTALLED") {
  18. logger.Log(0, "error installing: ", err.Error())
  19. err = functions.WipeLocal(cfg)
  20. if err != nil {
  21. logger.Log(1, "error removing artifacts: ", err.Error())
  22. }
  23. if cfg.Daemon != "off" {
  24. if ncutils.IsLinux() {
  25. err = daemon.RemoveSystemDServices()
  26. }
  27. if err != nil {
  28. logger.Log(1, "error removing services: ", err.Error())
  29. }
  30. if ncutils.IsFreeBSD() {
  31. daemon.RemoveFreebsdDaemon()
  32. }
  33. }
  34. }
  35. if err != nil && strings.Contains(err.Error(), "ALREADY_INSTALLED") {
  36. logger.Log(0, err.Error())
  37. err = nil
  38. }
  39. return err
  40. }
  41. logger.Log(1, "joined", cfg.Network)
  42. return err
  43. }
  44. // Leave - runs the leave command from cli
  45. func Leave(cfg *config.ClientConfig) error {
  46. err := functions.LeaveNetwork(cfg.Network)
  47. if err != nil {
  48. logger.Log(1, "error attempting to leave network "+cfg.Network)
  49. } else {
  50. logger.Log(0, "success")
  51. }
  52. return err
  53. }
  54. // Pull - runs pull command from cli
  55. func Pull(cfg *config.ClientConfig) error {
  56. var err error
  57. var networks = []string{}
  58. if cfg.Network == "all" {
  59. logger.Log(0, "No network selected. Running Pull for all networks.")
  60. networks, err = ncutils.GetSystemNetworks()
  61. if err != nil {
  62. logger.Log(1, "Error retrieving networks. Exiting.")
  63. return err
  64. }
  65. } else {
  66. networks = append(networks, cfg.Network)
  67. }
  68. var currentServers = make(map[string]config.ClientConfig)
  69. for _, network := range networks {
  70. currCfg, err := config.ReadConfig(network)
  71. if err != nil {
  72. logger.Log(1, "could not read config when pulling for network", network)
  73. continue
  74. }
  75. _, err = functions.Pull(network, true)
  76. if err != nil {
  77. logger.Log(1, "error pulling network config for network: ", network, "\n", err.Error())
  78. } else {
  79. logger.Log(1, "pulled network config for "+network)
  80. }
  81. currentServers[currCfg.Server.Server] = *currCfg
  82. }
  83. daemon.Restart()
  84. logger.Log(1, "reset network", cfg.Network, "and peer configs")
  85. return err
  86. }
  87. // List - runs list command from cli
  88. func List(cfg config.ClientConfig) error {
  89. _, err := functions.List(cfg.Network)
  90. return err
  91. }
  92. // Uninstall - runs uninstall command from cli
  93. func Uninstall() error {
  94. logger.Log(0, "uninstalling netclient...")
  95. err := functions.Uninstall()
  96. logger.Log(0, "uninstalled netclient")
  97. return err
  98. }
  99. // Daemon - runs the daemon
  100. func Daemon() error {
  101. err := functions.Daemon()
  102. return err
  103. }
  104. // Install - installs binary and daemon
  105. func Install() error {
  106. return functions.Install()
  107. }
  108. // Connect - re-instates a connection of a node
  109. func Connect(cfg config.ClientConfig) error {
  110. networkName := cfg.Network
  111. if networkName == "" {
  112. networkName = cfg.Node.Network
  113. }
  114. if networkName == "all" {
  115. return fmt.Errorf("no network specified")
  116. }
  117. return functions.Connect(networkName)
  118. }
  119. // Disconnect - disconnects a connection of a node
  120. func Disconnect(cfg config.ClientConfig) error {
  121. networkName := cfg.Network
  122. if networkName == "" {
  123. networkName = cfg.Node.Network
  124. }
  125. if networkName == "all" {
  126. return fmt.Errorf("no network specified")
  127. }
  128. return functions.Disconnect(networkName)
  129. }