mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-05 20:54:18 +08:00
NET-1608:reset failover if endpoint changed (#3149)
* reset failover if endpoint changed * add peerUpdate in pull when resetfailover * remove go routine for peerUpdate in pull * update peerUpdate in pull
This commit is contained in:
parent
370f8521f7
commit
24cee9b6de
2 changed files with 27 additions and 1 deletions
|
@ -167,6 +167,8 @@ func pull(w http.ResponseWriter, r *http.Request) {
|
|||
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
|
||||
return
|
||||
}
|
||||
|
||||
sendPeerUpdate := false
|
||||
for _, nodeID := range host.Nodes {
|
||||
node, err := logic.GetNodeByID(nodeID)
|
||||
if err != nil {
|
||||
|
@ -174,7 +176,13 @@ func pull(w http.ResponseWriter, r *http.Request) {
|
|||
continue
|
||||
}
|
||||
if node.FailedOverBy != uuid.Nil {
|
||||
go logic.ResetFailedOverPeer(&node)
|
||||
logic.ResetFailedOverPeer(&node)
|
||||
sendPeerUpdate = true
|
||||
}
|
||||
}
|
||||
if sendPeerUpdate {
|
||||
if err := mq.PublishPeerUpdate(true); err != nil {
|
||||
logger.Log(0, "fail to publish peer update: ", err.Error())
|
||||
}
|
||||
}
|
||||
allNodes, err := logic.GetAllNodes()
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
|
||||
"github.com/google/uuid"
|
||||
"golang.org/x/crypto/bcrypt"
|
||||
"golang.org/x/exp/slog"
|
||||
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
|
@ -254,14 +255,31 @@ func UpdateHostFromClient(newHost, currHost *models.Host) (sendPeerUpdate bool)
|
|||
currHost.WgPublicListenPort = newHost.WgPublicListenPort
|
||||
sendPeerUpdate = true
|
||||
}
|
||||
isEndpointChanged := false
|
||||
if currHost.EndpointIP.String() != newHost.EndpointIP.String() {
|
||||
currHost.EndpointIP = newHost.EndpointIP
|
||||
sendPeerUpdate = true
|
||||
isEndpointChanged = true
|
||||
}
|
||||
if currHost.EndpointIPv6.String() != newHost.EndpointIPv6.String() {
|
||||
currHost.EndpointIPv6 = newHost.EndpointIPv6
|
||||
sendPeerUpdate = true
|
||||
isEndpointChanged = true
|
||||
}
|
||||
|
||||
if isEndpointChanged {
|
||||
for _, nodeID := range currHost.Nodes {
|
||||
node, err := GetNodeByID(nodeID)
|
||||
if err != nil {
|
||||
slog.Error("failed to get node:", "id", node.ID, "error", err)
|
||||
continue
|
||||
}
|
||||
if node.FailedOverBy != uuid.Nil {
|
||||
ResetFailedOverPeer(&node)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
currHost.DaemonInstalled = newHost.DaemonInstalled
|
||||
currHost.Debug = newHost.Debug
|
||||
currHost.Verbosity = newHost.Verbosity
|
||||
|
|
Loading…
Add table
Reference in a new issue