Browse Source

commented out logic

0xdcarns 2 years ago
parent
commit
75fc15ac4c
6 changed files with 41 additions and 35 deletions
  1. 13 13
      ee/initialize.go
  2. 4 1
      ee/logic/failover.go
  3. 7 7
      logic/gateway.go
  4. 8 7
      logic/peers.go
  5. 1 1
      models/metrics.go
  6. 8 6
      mq/handlers.go

+ 13 - 13
ee/initialize.go

@@ -30,8 +30,8 @@ func InitEE() {
 		AddLicenseHooks()
 	})
 	logic.EnterpriseFailoverFunc = eelogic.SetFailover
-	logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover
-	resetFailover()
+	// logic.EnterpriseResetFailoverFunc = eelogic.ResetFailover
+	// resetFailover()
 }
 
 func setControllerLimits() {
@@ -42,17 +42,17 @@ func setControllerLimits() {
 	servercfg.Is_EE = true
 }
 
-func resetFailover() {
-	nets, err := logic.GetNetworks()
-	if err == nil {
-		for _, net := range nets {
-			err = logic.EnterpriseResetFailoverFunc.(func(string) error)(net.NetID)
-			if err != nil {
-				logger.Log(0, "failed to reset failover on network", net.NetID, ":", err.Error())
-			}
-		}
-	}
-}
+// func resetFailover() {
+// 	nets, err := logic.GetNetworks()
+// 	if err == nil {
+// 		for _, net := range nets {
+// 			err = logic.EnterpriseResetFailoverFunc.(func(string) error)(net.NetID)
+// 			if err != nil {
+// 				logger.Log(0, "failed to reset failover on network", net.NetID, ":", err.Error())
+// 			}
+// 		}
+// 	}
+// }
 
 func retrieveEELogo() string {
 	return `              

+ 4 - 1
ee/logic/failover.go

@@ -81,6 +81,9 @@ func setFailoverNode(failoverNode, node *models.Node) error {
 	if err != nil {
 		return err
 	}
+	if nodeToUpdate.FailoverNode == failoverNode.ID {
+		return nil
+	}
 	return logic.UpdateNode(&nodeToUpdate, node)
 }
 
@@ -89,6 +92,6 @@ func WipeFailover(nodeid string) error {
 	if err != nil {
 		return err
 	}
-	metrics.NeedsFailover = make(map[string]string)
+	metrics.FailoverPeers = make(map[string]string)
 	return logic.UpdateMetrics(nodeid, metrics)
 }

+ 7 - 7
logic/gateway.go

@@ -224,9 +224,9 @@ func CreateIngressGateway(netid string, nodeid string, failover bool) (models.No
 	node.PostUp = postUpCmd
 	node.PostDown = postDownCmd
 	node.UDPHolePunch = "no"
-	if failover {
-		node.Failover = "yes"
-	}
+	// if failover && servercfg.Is_EE {
+	// 	node.Failover = "yes"
+	// }
 	data, err := json.Marshal(&node)
 	if err != nil {
 		return models.Node{}, err
@@ -275,10 +275,10 @@ func DeleteIngressGateway(networkName string, nodeid string) (models.Node, error
 		}
 	}
 
-	err = EnterpriseResetFailoverFunc.(func(string) error)(node.Network)
-	if err != nil {
-		logger.Log(0, "failed to reset failover on network", node.Network, ":", err.Error())
-	}
+	// err = EnterpriseResetFailoverFunc.(func(string) error)(node.Network)
+	// if err != nil {
+	// 	logger.Log(0, "failed to reset failover on network", node.Network, ":", err.Error())
+	// }
 
 	data, err := json.Marshal(&node)
 	if err != nil {

+ 8 - 7
logic/peers.go

@@ -37,8 +37,8 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
 	if servercfg.Is_EE {
 		metrics, _ = GetMetrics(node.ID)
 	}
-	if metrics.NeedsFailover == nil {
-		metrics.NeedsFailover = make(map[string]string)
+	if metrics.FailoverPeers == nil {
+		metrics.FailoverPeers = make(map[string]string)
 	}
 	// udppeers = the peers parsed from the local interface
 	// gives us correct port to reach
@@ -92,8 +92,8 @@ func GetPeerUpdate(node *models.Node) (models.PeerUpdate, error) {
 		if isP2S && peer.IsHub != "yes" {
 			continue
 		}
-		if metrics.NeedsFailover[peer.ID] != "" {
-			continue
+		if len(metrics.FailoverPeers[peer.ID]) > 0 {
+			logger.Log(0, "peer", peer.Name, peer.PrimaryAddress(), "was found to be in failover peers list for node", node.Name, node.PrimaryAddress())
 		}
 		pubkey, err := wgtypes.ParseKey(peer.PublicKey)
 		if err != nil {
@@ -271,16 +271,17 @@ func GetAllowedIPs(node, peer *models.Node, metrics *models.Metrics) []net.IPNet
 			allowedips = append(allowedips, extPeer.AllowedIPs...)
 		}
 		// if node is a failover node, add allowed ips from nodes it is handling
-		if peer.Failover == "yes" && metrics.NeedsFailover != nil {
+		if peer.Failover == "yes" && metrics.FailoverPeers != nil {
 			// travers through nodes that need handling
-			for k, v := range metrics.NeedsFailover {
+			for k, v := range metrics.FailoverPeers {
 				// if FailoverNode is me for this node, add allowedips
 				if v == peer.ID {
 					// get original node so we can traverse the allowed ips
 					nodeToFailover, err := GetNodeByID(k)
 					if err == nil {
 						// get all allowedips and append
-						allowedips = append(allowedips, getNodeAllowedIPs(&nodeToFailover, peer)...)
+						// allowedips = append(allowedips, getNodeAllowedIPs(&nodeToFailover, peer)...)
+						logger.Log(0, "failing over node", nodeToFailover.Name, nodeToFailover.PrimaryAddress())
 					}
 				}
 			}

+ 1 - 1
models/metrics.go

@@ -9,7 +9,7 @@ type Metrics struct {
 	NodeName      string            `json:"node_name" bson:"node_name" yaml:"node_name"`
 	IsServer      string            `json:"isserver" bson:"isserver" yaml:"isserver" validate:"checkyesorno"`
 	Connectivity  map[string]Metric `json:"connectivity" bson:"connectivity" yaml:"connectivity"`
-	NeedsFailover map[string]string `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"`
+	FailoverPeers map[string]string `json:"needsfailover" bson:"needsfailover" yaml:"needsfailover"`
 }
 
 // Metric - holds a metric for data between nodes

+ 8 - 6
mq/handlers.go

@@ -209,16 +209,16 @@ func updateNodePeers(currentNode *models.Node) {
 }
 
 func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) {
-	if newMetrics.NeedsFailover == nil {
-		newMetrics.NeedsFailover = make(map[string]string)
+	if newMetrics.FailoverPeers == nil {
+		newMetrics.FailoverPeers = make(map[string]string)
 	}
 	oldMetrics, err := logic.GetMetrics(currentNode.ID)
 	if err != nil {
 		logger.Log(1, "error finding old metrics for node", currentNode.ID, currentNode.Name)
 		return
 	}
-	if oldMetrics.NeedsFailover == nil {
-		oldMetrics.NeedsFailover = make(map[string]string)
+	if oldMetrics.FailoverPeers == nil {
+		oldMetrics.FailoverPeers = make(map[string]string)
 	}
 
 	var attachedClients []models.ExtClient
@@ -259,8 +259,10 @@ func updateNodeMetrics(currentNode *models.Node, newMetrics *models.Metrics) {
 		return
 	}
 	for _, node := range nodes {
-		if !newMetrics.Connectivity[node.ID].Connected && node.Connected == "yes" {
-			newMetrics.NeedsFailover[node.ID] = node.FailoverNode
+		if !newMetrics.Connectivity[node.ID].Connected &&
+			len(newMetrics.Connectivity[node.ID].NodeName) > 0 &&
+			node.Connected == "yes" {
+			newMetrics.FailoverPeers[node.ID] = node.FailoverNode
 		}
 	}