mirror of
https://github.com/gravitl/netmaker.git
synced 2025-02-27 17:42:57 +08:00
updated serverUpdate check
This commit is contained in:
parent
922ebcb4ab
commit
43b6b8c6cb
1 changed files with 28 additions and 24 deletions
|
@ -5,6 +5,7 @@ import (
|
|||
"fmt"
|
||||
"net/http"
|
||||
"strings"
|
||||
"sync"
|
||||
|
||||
"github.com/gorilla/mux"
|
||||
"github.com/gravitl/netmaker/database"
|
||||
|
@ -434,7 +435,7 @@ func uncordonNode(w http.ResponseWriter, r *http.Request) {
|
|||
w.WriteHeader(http.StatusOK)
|
||||
json.NewEncoder(w).Encode("SUCCESS")
|
||||
|
||||
mq.NodeUpdate(&node)
|
||||
runUpdates(&node, false)
|
||||
}
|
||||
|
||||
// == EGRESS ==
|
||||
|
@ -624,42 +625,45 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
func runUpdates(node *models.Node, ifaceDelta bool) {
|
||||
go func() { // don't block http response
|
||||
if isServer(node) { // don't publish to server node
|
||||
err := logic.TimerCheckpoint()
|
||||
if err != nil {
|
||||
logger.Log(3, "error occurred on timer,", err.Error())
|
||||
}
|
||||
if err := runServerUpdate(node, ifaceDelta); err != nil {
|
||||
logger.Log(1, "error running server update", err.Error())
|
||||
}
|
||||
} else { // publish node update if not server
|
||||
// publish node update if not server
|
||||
if err := mq.NodeUpdate(node); err != nil {
|
||||
logger.Log(1, "error publishing node update to node", node.Name, node.ID, err.Error())
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
// updates local peers for a server on a given node's network
|
||||
func runServerUpdate(serverNode *models.Node, ifaceDelta bool) error {
|
||||
|
||||
err := logic.TimerCheckpoint()
|
||||
if err != nil {
|
||||
logger.Log(3, "error occurred on timer,", err.Error())
|
||||
}
|
||||
|
||||
func runServerUpdate(node *models.Node, ifaceDelta bool) error {
|
||||
var mutex sync.Mutex
|
||||
mutex.Lock()
|
||||
defer mutex.Unlock()
|
||||
if servercfg.IsClientMode() != "on" {
|
||||
return nil
|
||||
}
|
||||
|
||||
if ifaceDelta {
|
||||
if err := mq.PublishPeerUpdate(serverNode); err != nil {
|
||||
if !isServer(node) && ifaceDelta {
|
||||
ifaceDelta = false
|
||||
}
|
||||
|
||||
currentServerNode, err := logic.GetNetworkServerLocal(node.Network)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if ifaceDelta && logic.IsLeader(¤tServerNode) {
|
||||
if err := mq.PublishPeerUpdate(¤tServerNode); err != nil {
|
||||
logger.Log(1, "failed to publish peer update "+err.Error())
|
||||
}
|
||||
}
|
||||
|
||||
var currentServerNode, getErr = logic.GetNetworkServerLeader(serverNode.Network)
|
||||
if err != nil {
|
||||
return getErr
|
||||
}
|
||||
|
||||
if err = logic.ServerUpdate(¤tServerNode, ifaceDelta); err != nil {
|
||||
if err := logic.ServerUpdate(¤tServerNode, ifaceDelta); err != nil {
|
||||
logger.Log(1, "server node:", currentServerNode.ID, "failed update")
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue