mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-17 14:24:30 +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:
@@ -8,7 +8,6 @@ import (
|
||||
"github.com/gravitl/netmaker/database"
|
||||
"github.com/gravitl/netmaker/logger"
|
||||
"github.com/gravitl/netmaker/models"
|
||||
"github.com/gravitl/netmaker/servercfg"
|
||||
)
|
||||
|
||||
// GetInternetGateways - gets all the nodes that are internet gateways
|
||||
@@ -168,9 +167,6 @@ func CreateIngressGateway(netid string, nodeid string, ingress models.IngressReq
|
||||
node.IngressGatewayRange6 = network.AddressRange6
|
||||
node.IngressDNS = ingress.ExtclientDNS
|
||||
node.SetLastModified()
|
||||
if ingress.Failover && servercfg.IsPro {
|
||||
node.Failover = true
|
||||
}
|
||||
err = UpsertNode(&node)
|
||||
if err != nil {
|
||||
return models.Node{}, err
|
||||
@@ -199,35 +195,33 @@ func GetIngressGwUsers(node models.Node) (models.IngressGwUsers, error) {
|
||||
}
|
||||
|
||||
// DeleteIngressGateway - deletes an ingress gateway
|
||||
func DeleteIngressGateway(nodeid string) (models.Node, bool, []models.ExtClient, error) {
|
||||
func DeleteIngressGateway(nodeid string) (models.Node, []models.ExtClient, error) {
|
||||
removedClients := []models.ExtClient{}
|
||||
node, err := GetNodeByID(nodeid)
|
||||
if err != nil {
|
||||
return models.Node{}, false, removedClients, err
|
||||
return models.Node{}, removedClients, err
|
||||
}
|
||||
clients, err := GetExtClientsByID(nodeid, node.Network)
|
||||
if err != nil && !database.IsEmptyRecord(err) {
|
||||
return models.Node{}, false, removedClients, err
|
||||
return models.Node{}, removedClients, err
|
||||
}
|
||||
|
||||
removedClients = clients
|
||||
|
||||
// delete ext clients belonging to ingress gateway
|
||||
if err = DeleteGatewayExtClients(node.ID.String(), node.Network); err != nil {
|
||||
return models.Node{}, false, removedClients, err
|
||||
return models.Node{}, removedClients, err
|
||||
}
|
||||
logger.Log(3, "deleting ingress gateway")
|
||||
wasFailover := node.Failover
|
||||
node.LastModified = time.Now()
|
||||
node.IsIngressGateway = false
|
||||
node.IngressGatewayRange = ""
|
||||
node.Failover = false
|
||||
err = UpsertNode(&node)
|
||||
if err != nil {
|
||||
return models.Node{}, wasFailover, removedClients, err
|
||||
return models.Node{}, removedClients, err
|
||||
}
|
||||
err = SetNetworkNodesLastModified(node.Network)
|
||||
return node, wasFailover, removedClients, err
|
||||
return node, removedClients, err
|
||||
}
|
||||
|
||||
// DeleteGatewayExtClients - deletes ext clients based on gateway (mac) of ingress node and network
|
||||
|
Reference in New Issue
Block a user