12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- package controller
- import (
- "github.com/gravitl/netmaker/logger"
- "github.com/gravitl/netmaker/logic"
- "github.com/gravitl/netmaker/models"
- "github.com/gravitl/netmaker/serverctl"
- )
- func runServerPeerUpdate() error {
- var serverData = models.ServerUpdateData{
- UpdatePeers: true,
- }
- serverctl.Push(serverData)
- var settings, err = serverctl.Pop()
- if err != nil {
- return err
- }
- return handlePeerUpdate(&settings.ServerNode)
- }
- func runServerUpdateIfNeeded(shouldPeersUpdate bool, serverNode *models.Node) error {
- // check if a peer/server update is needed
- var serverData = models.ServerUpdateData{
- UpdatePeers: shouldPeersUpdate,
- }
- if serverNode.IsServer == "yes" {
- serverData.ServerNode = *serverNode
- }
- serverctl.Push(serverData)
- return handleServerUpdate()
- }
- func handleServerUpdate() error {
- var settings, settingsErr = serverctl.Pop()
- if settingsErr != nil {
- return settingsErr
- }
- var currentServerNodeID, err = logic.GetNetworkServerNodeID(settings.ServerNode.Network)
- if err != nil {
- return err
- }
- // ensure server client is available
- if settings.UpdatePeers || (settings.ServerNode.ID == currentServerNodeID) {
- serverctl.SyncServerNetwork(&settings.ServerNode)
- }
- // if peers should update, update peers on network
- if settings.UpdatePeers {
- if err = handlePeerUpdate(&settings.ServerNode); err != nil {
- return err
- }
- logger.Log(1, "updated peers on network:", settings.ServerNode.Network)
- }
- // if the server node had an update, run the update function
- if settings.ServerNode.ID == currentServerNodeID {
- if err = logic.ServerUpdate(&settings.ServerNode); err != nil {
- return err
- }
- logger.Log(1, "server node:", settings.ServerNode.ID, "was updated")
- }
- return nil
- }
- // tells server to update it's peers
- func handlePeerUpdate(serverNode *models.Node) error {
- logger.Log(1, "updating peers on network:", serverNode.Network)
- logic.SetNetworkServerPeers(serverNode)
- return nil
- }
|