Sfoglia il codice sorgente

peer singleton update action

Abhishek Kondur 2 anni fa
parent
commit
c91aaa81d0
3 ha cambiato i file con 14 aggiunte e 9 eliminazioni
  1. 1 1
      auth/host_session.go
  2. 5 4
      controllers/node.go
  3. 8 4
      mq/publishers.go

+ 1 - 1
auth/host_session.go

@@ -237,7 +237,7 @@ func CheckNetRegAndHostUpdate(networks []string, h *models.Host) {
 				Host:   *h,
 				Node:   *newNode,
 			})
-			mq.PublishPeerAction(h)
+			mq.BroadCastAddPeer(h, newNode, false)
 		}
 	}
 	if servercfg.IsMessageQueueBackend() {

+ 5 - 4
controllers/node.go

@@ -753,8 +753,13 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 	}
 	go func(deletedNode *models.Node, fromNode bool) { // notify of peer change
 		var err error
+		host, err := logic.GetHost(node.HostID.String())
+		if err != nil {
+			logger.Log(1, "failed to retrieve host for node", node.ID.String(), err.Error())
+		}
 		if fromNode {
 			err = mq.PublishDeletedNodePeerUpdate(deletedNode)
+			mq.BroadCastDelPeer(host, deletedNode.Network)
 		} else {
 			err = mq.PublishPeerUpdate()
 		}
@@ -762,10 +767,6 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 			logger.Log(1, "error publishing peer update ", err.Error())
 		}
 
-		host, err := logic.GetHost(node.HostID.String())
-		if err != nil {
-			logger.Log(1, "failed to retrieve host for node", node.ID.String(), err.Error())
-		}
 		if err := mq.PublishDNSDelete(&node, host); err != nil {
 			logger.Log(1, "error publishing dns update", err.Error())
 		}

+ 8 - 4
mq/publishers.go

@@ -130,14 +130,14 @@ func BroadCastDelPeer(host *models.Host, network string) error {
 	for _, nodeI := range nodes {
 		peerHost, err := logic.GetHost(nodeI.HostID.String())
 		if err == nil {
-			publish(peerHost, fmt.Sprintf("peer/host/%s/%s", host.ID.String(), servercfg.GetServer()), data)
+			publish(peerHost, fmt.Sprintf("peer/host/%s/%s", peerHost.ID.String(), servercfg.GetServer()), data)
 		}
 	}
 	return nil
 }
 
-func BroadCastAddPeer(host *models.Host, node *models.Node, network string, update bool) error {
-	nodes, err := logic.GetNetworkNodes(network)
+func BroadCastAddPeer(host *models.Host, node *models.Node, update bool) error {
+	nodes, err := logic.GetNetworkNodes(node.Network)
 	if err != nil {
 		return err
 	}
@@ -158,6 +158,10 @@ func BroadCastAddPeer(host *models.Host, node *models.Node, network string, upda
 		p.Action = models.UpdatePeer
 	}
 	for _, nodeI := range nodes {
+		if nodeI.ID.String() == node.ID.String() {
+			// skip self...
+			continue
+		}
 		// update allowed ips, according to the peer node
 		p.Peer.AllowedIPs = logic.GetAllowedIPs(&nodeI, node, nil)
 		data, err := json.Marshal(p)
@@ -166,7 +170,7 @@ func BroadCastAddPeer(host *models.Host, node *models.Node, network string, upda
 		}
 		peerHost, err := logic.GetHost(nodeI.HostID.String())
 		if err == nil {
-			publish(peerHost, fmt.Sprintf("peer/host/%s/%s", host.ID.String(), servercfg.GetServer()), data)
+			publish(peerHost, fmt.Sprintf("peer/host/%s/%s", peerHost.ID.String(), servercfg.GetServer()), data)
 		}
 	}
 	return nil