mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-05 08:47:35 +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:
@@ -30,7 +30,6 @@ type ApiNode struct {
|
||||
IsIngressGateway bool `json:"isingressgateway"`
|
||||
EgressGatewayRanges []string `json:"egressgatewayranges"`
|
||||
EgressGatewayNatEnabled bool `json:"egressgatewaynatenabled"`
|
||||
FailoverNode string `json:"failovernode"`
|
||||
DNSOn bool `json:"dnson"`
|
||||
IngressDns string `json:"ingressdns"`
|
||||
Server string `json:"server"`
|
||||
@@ -38,8 +37,10 @@ type ApiNode struct {
|
||||
Connected bool `json:"connected"`
|
||||
PendingDelete bool `json:"pendingdelete"`
|
||||
// == PRO ==
|
||||
DefaultACL string `json:"defaultacl,omitempty" validate:"checkyesornoorunset"`
|
||||
Failover bool `json:"failover"`
|
||||
DefaultACL string `json:"defaultacl,omitempty" validate:"checkyesornoorunset"`
|
||||
IsFailOver bool `json:"is_fail_over"`
|
||||
FailOverPeers map[string]struct{} `json:"fail_over_peers" yaml:"fail_over_peers"`
|
||||
FailedOverBy uuid.UUID `json:"failed_over_by" yaml:"failed_over_by"`
|
||||
}
|
||||
|
||||
// ApiNode.ConvertToServerNode - converts an api node to a server node
|
||||
@@ -56,7 +57,8 @@ func (a *ApiNode) ConvertToServerNode(currentNode *Node) *Node {
|
||||
convertedNode.RelayedBy = a.RelayedBy
|
||||
convertedNode.RelayedNodes = a.RelayedNodes
|
||||
convertedNode.PendingDelete = a.PendingDelete
|
||||
convertedNode.Failover = a.Failover
|
||||
convertedNode.FailedOverBy = currentNode.FailedOverBy
|
||||
convertedNode.FailOverPeers = currentNode.FailOverPeers
|
||||
convertedNode.IsEgressGateway = a.IsEgressGateway
|
||||
convertedNode.IsIngressGateway = a.IsIngressGateway
|
||||
// prevents user from changing ranges, must delete and recreate
|
||||
@@ -100,7 +102,6 @@ func (a *ApiNode) ConvertToServerNode(currentNode *Node) *Node {
|
||||
convertedNode.Address6 = *addr6
|
||||
convertedNode.Address6.IP = ip6
|
||||
}
|
||||
convertedNode.FailoverNode, _ = uuid.Parse(a.FailoverNode)
|
||||
convertedNode.LastModified = time.Unix(a.LastModified, 0)
|
||||
convertedNode.LastCheckIn = time.Unix(a.LastCheckIn, 0)
|
||||
convertedNode.LastPeerUpdate = time.Unix(a.LastPeerUpdate, 0)
|
||||
@@ -146,10 +147,6 @@ func (nm *Node) ConvertToAPINode() *ApiNode {
|
||||
apiNode.IsIngressGateway = nm.IsIngressGateway
|
||||
apiNode.EgressGatewayRanges = nm.EgressGatewayRanges
|
||||
apiNode.EgressGatewayNatEnabled = nm.EgressGatewayNatEnabled
|
||||
apiNode.FailoverNode = nm.FailoverNode.String()
|
||||
if isUUIDSet(apiNode.FailoverNode) {
|
||||
apiNode.FailoverNode = ""
|
||||
}
|
||||
apiNode.DNSOn = nm.DNSOn
|
||||
apiNode.IngressDns = nm.IngressDNS
|
||||
apiNode.Server = nm.Server
|
||||
@@ -160,14 +157,12 @@ func (nm *Node) ConvertToAPINode() *ApiNode {
|
||||
apiNode.Connected = nm.Connected
|
||||
apiNode.PendingDelete = nm.PendingDelete
|
||||
apiNode.DefaultACL = nm.DefaultACL
|
||||
apiNode.Failover = nm.Failover
|
||||
apiNode.IsFailOver = nm.IsFailOver
|
||||
apiNode.FailOverPeers = nm.FailOverPeers
|
||||
apiNode.FailedOverBy = nm.FailedOverBy
|
||||
return &apiNode
|
||||
}
|
||||
|
||||
func isEmptyAddr(addr string) bool {
|
||||
return addr == "<nil>" || addr == ":0"
|
||||
}
|
||||
|
||||
func isUUIDSet(uuid string) bool {
|
||||
return uuid != "00000000-0000-0000-0000-000000000000"
|
||||
}
|
||||
|
Reference in New Issue
Block a user