mirror of
https://github.com/gravitl/netmaker.git
synced 2025-11-10 08:41:20 +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"
|
"fmt"
|
||||||
"net/http"
|
"net/http"
|
||||||
"strings"
|
"strings"
|
||||||
|
"sync"
|
||||||
|
|
||||||
"github.com/gorilla/mux"
|
"github.com/gorilla/mux"
|
||||||
"github.com/gravitl/netmaker/database"
|
"github.com/gravitl/netmaker/database"
|
||||||
|
|
@ -434,7 +435,7 @@ func uncordonNode(w http.ResponseWriter, r *http.Request) {
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
json.NewEncoder(w).Encode("SUCCESS")
|
json.NewEncoder(w).Encode("SUCCESS")
|
||||||
|
|
||||||
mq.NodeUpdate(&node)
|
runUpdates(&node, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
// == EGRESS ==
|
// == EGRESS ==
|
||||||
|
|
@ -624,42 +625,45 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
func runUpdates(node *models.Node, ifaceDelta bool) {
|
func runUpdates(node *models.Node, ifaceDelta bool) {
|
||||||
go func() { // don't block http response
|
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 {
|
if err := runServerUpdate(node, ifaceDelta); err != nil {
|
||||||
logger.Log(1, "error running server update", err.Error())
|
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 {
|
if err := mq.NodeUpdate(node); err != nil {
|
||||||
logger.Log(1, "error publishing node update to node", node.Name, node.ID, err.Error())
|
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
|
// updates local peers for a server on a given node's network
|
||||||
func runServerUpdate(serverNode *models.Node, ifaceDelta bool) error {
|
func runServerUpdate(node *models.Node, ifaceDelta bool) error {
|
||||||
|
var mutex sync.Mutex
|
||||||
err := logic.TimerCheckpoint()
|
mutex.Lock()
|
||||||
if err != nil {
|
defer mutex.Unlock()
|
||||||
logger.Log(3, "error occurred on timer,", err.Error())
|
|
||||||
}
|
|
||||||
|
|
||||||
if servercfg.IsClientMode() != "on" {
|
if servercfg.IsClientMode() != "on" {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
if ifaceDelta {
|
if !isServer(node) && ifaceDelta {
|
||||||
if err := mq.PublishPeerUpdate(serverNode); err != nil {
|
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())
|
logger.Log(1, "failed to publish peer update "+err.Error())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var currentServerNode, getErr = logic.GetNetworkServerLeader(serverNode.Network)
|
if err := logic.ServerUpdate(¤tServerNode, ifaceDelta); err != nil {
|
||||||
if err != nil {
|
|
||||||
return getErr
|
|
||||||
}
|
|
||||||
|
|
||||||
if err = logic.ServerUpdate(¤tServerNode, ifaceDelta); err != nil {
|
|
||||||
logger.Log(1, "server node:", currentServerNode.ID, "failed update")
|
logger.Log(1, "server node:", currentServerNode.ID, "failed update")
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue