Browse Source

add bool to control update to node

Matthew R. Kasun 3 years ago
parent
commit
e5a59d7081
5 changed files with 16 additions and 12 deletions
  1. 1 1
      controllers/dns.go
  2. 1 1
      controllers/network.go
  3. 5 5
      controllers/node.go
  4. 1 1
      mq/handlers.go
  5. 8 4
      mq/publishers.go

+ 1 - 1
controllers/dns.go

@@ -127,7 +127,7 @@ func createDNS(w http.ResponseWriter, r *http.Request) {
 			if err = logic.ServerUpdate(&serverNode, false); err != nil {
 			if err = logic.ServerUpdate(&serverNode, false); err != nil {
 				logger.Log(1, "failed to update server node after DNS update on", entry.Network)
 				logger.Log(1, "failed to update server node after DNS update on", entry.Network)
 			}
 			}
-			if err = mq.PublishPeerUpdate(&serverNode); err != nil {
+			if err = mq.PublishPeerUpdate(&serverNode, false); err != nil {
 				logger.Log(0, "failed to publish peer update after ACL update on", entry.Network)
 				logger.Log(0, "failed to publish peer update after ACL update on", entry.Network)
 			}
 			}
 		}
 		}

+ 1 - 1
controllers/network.go

@@ -255,7 +255,7 @@ func updateNetworkACL(w http.ResponseWriter, r *http.Request) {
 			if err = logic.ServerUpdate(&serverNode, false); err != nil {
 			if err = logic.ServerUpdate(&serverNode, false); err != nil {
 				logger.Log(1, "failed to update server node after ACL update on", netname)
 				logger.Log(1, "failed to update server node after ACL update on", netname)
 			}
 			}
-			if err = mq.PublishPeerUpdate(&serverNode); err != nil {
+			if err = mq.PublishPeerUpdate(&serverNode, false); err != nil {
 				logger.Log(0, "failed to publish peer update after ACL update on", netname)
 				logger.Log(0, "failed to publish peer update after ACL update on", netname)
 			}
 			}
 		}
 		}

+ 5 - 5
controllers/node.go

@@ -501,7 +501,7 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 	logger.Log(1, r.Header.Get("user"), "created new node", node.Name, "on network", node.Network)
 	logger.Log(1, r.Header.Get("user"), "created new node", node.Name, "on network", node.Network)
 	w.WriteHeader(http.StatusOK)
 	w.WriteHeader(http.StatusOK)
 	json.NewEncoder(w).Encode(response)
 	json.NewEncoder(w).Encode(response)
-	runForceServerUpdate(&node)
+	runForceServerUpdate(&node, true)
 }
 }
 
 
 // Takes node out of pending state
 // Takes node out of pending state
@@ -722,7 +722,7 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 
 
 	logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
 	logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
 	runUpdates(&node, false)
 	runUpdates(&node, false)
-	runForceServerUpdate(&node)
+	runForceServerUpdate(&node, false)
 }
 }
 
 
 func runUpdates(node *models.Node, ifaceDelta bool) {
 func runUpdates(node *models.Node, ifaceDelta bool) {
@@ -751,7 +751,7 @@ func runServerUpdate(node *models.Node, ifaceDelta bool) error {
 	}
 	}
 
 
 	if ifaceDelta && logic.IsLeader(&currentServerNode) {
 	if ifaceDelta && logic.IsLeader(&currentServerNode) {
-		if err := mq.PublishPeerUpdate(&currentServerNode); err != nil {
+		if err := mq.PublishPeerUpdate(&currentServerNode, false); err != nil {
 			logger.Log(1, "failed to publish peer update "+err.Error())
 			logger.Log(1, "failed to publish peer update "+err.Error())
 		}
 		}
 	}
 	}
@@ -763,9 +763,9 @@ func runServerUpdate(node *models.Node, ifaceDelta bool) error {
 	return nil
 	return nil
 }
 }
 
 
-func runForceServerUpdate(node *models.Node) {
+func runForceServerUpdate(node *models.Node, publishPeerUpdateToNode bool) {
 	go func() {
 	go func() {
-		if err := mq.PublishPeerUpdate(node); err != nil {
+		if err := mq.PublishPeerUpdate(node, publishPeerUpdateToNode); err != nil {
 			logger.Log(1, "failed a peer update after creation of node", node.Name)
 			logger.Log(1, "failed a peer update after creation of node", node.Name)
 		}
 		}
 
 

+ 1 - 1
mq/handlers.go

@@ -133,7 +133,7 @@ func updateNodePeers(currentNode *models.Node) {
 		return
 		return
 	}
 	}
 	if logic.IsLeader(&currentServerNode) {
 	if logic.IsLeader(&currentServerNode) {
-		if err := PublishPeerUpdate(currentNode); err != nil {
+		if err := PublishPeerUpdate(currentNode, false); err != nil {
 			logger.Log(1, "error publishing peer update ", err.Error())
 			logger.Log(1, "error publishing peer update ", err.Error())
 			return
 			return
 		}
 		}

+ 8 - 4
mq/publishers.go

@@ -12,7 +12,7 @@ import (
 )
 )
 
 
 // PublishPeerUpdate --- deterines and publishes a peer update to all the peers of a node
 // PublishPeerUpdate --- deterines and publishes a peer update to all the peers of a node
-func PublishPeerUpdate(newNode *models.Node) error {
+func PublishPeerUpdate(newNode *models.Node, publishToSelf bool) error {
 	if !servercfg.IsMessageQueueBackend() {
 	if !servercfg.IsMessageQueueBackend() {
 		return nil
 		return nil
 	}
 	}
@@ -23,7 +23,11 @@ func PublishPeerUpdate(newNode *models.Node) error {
 	}
 	}
 	for _, node := range networkNodes {
 	for _, node := range networkNodes {
 
 
-		if node.IsServer == "yes" || newNode.ID == node.ID { // skip servers and self
+		if node.IsServer == "yes" {
+			continue
+		}
+		if !publishToSelf && newNode.ID == node.ID {
+			//skip self
 			continue
 			continue
 		}
 		}
 		peerUpdate, err := logic.GetPeerUpdate(&node)
 		peerUpdate, err := logic.GetPeerUpdate(&node)
@@ -70,7 +74,7 @@ func PublishExtPeerUpdate(node *models.Node) error {
 	if err = publish(node, fmt.Sprintf("peers/%s/%s", node.Network, node.ID), data); err != nil {
 	if err = publish(node, fmt.Sprintf("peers/%s/%s", node.Network, node.ID), data); err != nil {
 		return err
 		return err
 	}
 	}
-	go PublishPeerUpdate(node)
+	go PublishPeerUpdate(node, false)
 	return nil
 	return nil
 }
 }
 
 
@@ -132,7 +136,7 @@ func sendPeers() {
 					if force {
 					if force {
 						logger.Log(2, "sending scheduled peer update (5 min)")
 						logger.Log(2, "sending scheduled peer update (5 min)")
 					}
 					}
-					err = PublishPeerUpdate(&serverNode)
+					err = PublishPeerUpdate(&serverNode, false)
 					if err != nil {
 					if err != nil {
 						logger.Log(1, "error publishing udp port updates for network", network.NetID)
 						logger.Log(1, "error publishing udp port updates for network", network.NetID)
 						logger.Log(1, errN.Error())
 						logger.Log(1, errN.Error())