mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-12 20:20:52 +08:00
NET-725: Failovers (#2685)
* api to to get host relayed from client * add auto relay to api host * add peer nat type * set pro field on signal * rm net check on relay me handler * return success response * re-establish failover logic * set failOver ctx * failOver with peer pub key * failovered peer updates * failover handlers, reset failovered peer on deletion * rm unused funcs * initialize failover handler on EE * ignore failover node on signal * failover changes * set host id on signal * extend signal model to include node ids * add backwards compatibility * add failover as node api * set json response on failover handers * add failover field to api node * fix signal data check * initialize failover peer map * reset failovered status when relayed or deleted * add failover info to api node * reset network failover * only proceed furtuer if failover exists in the network * set failOver node defaults * cannot set failover node as relayed * debug log * debug log * debug changes * debug changes * debug changes * revert debug changes * don't add peers to idmap when removed * reset failed Over * fix static checks * rm debug log * add check for linux host
This commit is contained in:
@@ -205,6 +205,9 @@ func DeleteNode(node *models.Node, purge bool) error {
|
||||
UpsertNode(&relayNode)
|
||||
}
|
||||
}
|
||||
if node.FailedOverBy != uuid.Nil {
|
||||
ResetFailedOverPeer(node)
|
||||
}
|
||||
if node.IsRelay {
|
||||
// unset all the relayed nodes
|
||||
SetRelayedNodes(false, node.ID.String(), node.RelayedNodes)
|
||||
@@ -233,11 +236,6 @@ func DeleteNode(node *models.Node, purge bool) error {
|
||||
if err := DissasociateNodeFromHost(node, host); err != nil {
|
||||
return err
|
||||
}
|
||||
if servercfg.IsPro {
|
||||
if err := EnterpriseResetAllPeersFailovers(node.ID, node.Network); err != nil {
|
||||
logger.Log(0, "failed to reset failover lists during node delete for node", host.Name, node.Network)
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
@@ -309,20 +307,6 @@ func ValidateNode(node *models.Node, isUpdate bool) error {
|
||||
return err
|
||||
}
|
||||
|
||||
// IsFailoverPresent - checks if a node is marked as a failover in given network
|
||||
func IsFailoverPresent(network string) bool {
|
||||
netNodes, err := GetNetworkNodes(network)
|
||||
if err != nil {
|
||||
return false
|
||||
}
|
||||
for i := range netNodes {
|
||||
if netNodes[i].Failover {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
// GetAllNodes - returns all nodes in the DB
|
||||
func GetAllNodes() ([]models.Node, error) {
|
||||
var nodes []models.Node
|
||||
@@ -385,6 +369,9 @@ func SetNodeDefaults(node *models.Node) {
|
||||
if node.DefaultACL == "" {
|
||||
node.DefaultACL = parentNetwork.DefaultACL
|
||||
}
|
||||
if node.FailOverPeers == nil {
|
||||
node.FailOverPeers = make(map[string]struct{})
|
||||
}
|
||||
|
||||
node.SetLastModified()
|
||||
node.SetLastCheckIn()
|
||||
|
Reference in New Issue
Block a user