server_util.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package controller
  2. import (
  3. "github.com/gravitl/netmaker/logger"
  4. "github.com/gravitl/netmaker/logic"
  5. "github.com/gravitl/netmaker/models"
  6. "github.com/gravitl/netmaker/serverctl"
  7. )
  8. func runServerPeerUpdate() error {
  9. var serverData = models.ServerUpdateData{
  10. UpdatePeers: true,
  11. }
  12. serverctl.Push(serverData)
  13. var settings, err = serverctl.Pop()
  14. if err != nil {
  15. return err
  16. }
  17. return handlePeerUpdate(&settings.ServerNode)
  18. }
  19. func runServerUpdateIfNeeded(shouldPeersUpdate bool, serverNode *models.Node) error {
  20. // check if a peer/server update is needed
  21. var serverData = models.ServerUpdateData{
  22. UpdatePeers: shouldPeersUpdate,
  23. }
  24. if serverNode.IsServer == "yes" {
  25. serverData.ServerNode = *serverNode
  26. }
  27. serverctl.Push(serverData)
  28. return handleServerUpdate()
  29. }
  30. func handleServerUpdate() error {
  31. var settings, settingsErr = serverctl.Pop()
  32. if settingsErr != nil {
  33. return settingsErr
  34. }
  35. var currentServerNodeID, err = logic.GetNetworkServerNodeID(settings.ServerNode.Network)
  36. if err != nil {
  37. return err
  38. }
  39. // ensure server client is available
  40. if settings.UpdatePeers || (settings.ServerNode.ID == currentServerNodeID) {
  41. serverctl.SyncServerNetwork(&settings.ServerNode)
  42. }
  43. // if peers should update, update peers on network
  44. if settings.UpdatePeers {
  45. if err = handlePeerUpdate(&settings.ServerNode); err != nil {
  46. return err
  47. }
  48. logger.Log(1, "updated peers on network:", settings.ServerNode.Network)
  49. }
  50. // if the server node had an update, run the update function
  51. if settings.ServerNode.ID == currentServerNodeID {
  52. if err = logic.ServerUpdate(&settings.ServerNode); err != nil {
  53. return err
  54. }
  55. logger.Log(1, "server node:", settings.ServerNode.ID, "was updated")
  56. }
  57. return nil
  58. }
  59. // tells server to update it's peers
  60. func handlePeerUpdate(serverNode *models.Node) error {
  61. logger.Log(1, "updating peers on network:", serverNode.Network)
  62. logic.SetNetworkServerPeers(serverNode)
  63. return nil
  64. }