server_util.go 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  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 runServerUpdateIfNeeded(currentNode *models.Node, newNode *models.Node) error {
  9. // check if a peer/server update is needed
  10. var serverData = serverctl.ServerUpdateData{
  11. UpdatePeers: logic.ShouldPeersUpdate(currentNode, newNode),
  12. }
  13. if currentNode.IsServer == "yes" {
  14. serverData.ServerNode = *currentNode
  15. }
  16. serverctl.Push(serverData)
  17. return handleServerUpdate()
  18. }
  19. func handleServerUpdate() error {
  20. var settings, settingsErr = serverctl.Pop()
  21. if settingsErr != nil {
  22. return settingsErr
  23. }
  24. var currentServerNodeID, err = logic.GetNetworkServerNodeID(settings.ServerNode.Network)
  25. if err != nil {
  26. return err
  27. }
  28. // ensure server client is available
  29. if settings.UpdatePeers || (settings.ServerNode.ID == currentServerNodeID) {
  30. serverctl.SyncServerNetwork(&settings.ServerNode)
  31. }
  32. // if peers should update, update peers on network
  33. if settings.UpdatePeers {
  34. if err = handlePeerUpdate(&settings.ServerNode); err != nil {
  35. return err
  36. }
  37. logger.Log(1, "updated peers on network:", settings.ServerNode.Network)
  38. }
  39. // if the server node had an update, run the update function
  40. if settings.ServerNode.ID == currentServerNodeID {
  41. if err = logic.ServerUpdate(&settings.ServerNode); err != nil {
  42. return err
  43. }
  44. logger.Log(1, "server node:", settings.ServerNode.ID, "was updated")
  45. }
  46. return nil
  47. }
  48. // tells server to update it's peers
  49. func handlePeerUpdate(serverNode *models.Node) error {
  50. logger.Log(1, "updating peers on network:", serverNode.Network)
  51. logic.SetNetworkServerPeers(serverNode)
  52. return nil
  53. }