Parcourir la source

send deleted node peer update, when deleted host from client

Abhishek Kondur il y a 1 an
Parent
commit
532b2b5e8f
1 fichiers modifiés avec 20 ajouts et 0 suppressions
  1. 20 0
      mq/handlers.go

+ 20 - 0
mq/handlers.go

@@ -159,6 +159,26 @@ func UpdateHost(client mqtt.Client, msg mqtt.Message) {
 				return
 			}
 		}
+
+		// notify of deleted peer change
+		go func(host models.Host) {
+			for _, nodeID := range host.Nodes {
+				node, err := logic.GetNodeByID(nodeID)
+				if err == nil {
+					var gwClients []models.ExtClient
+					if node.IsIngressGateway {
+						gwClients = logic.GetGwExtclients(node.ID.String(), node.Network)
+					}
+					err = PublishDeletedNodePeerUpdate(&node)
+					if err != nil {
+						slog.Error("error publishing peer update", "error", err.Error())
+					}
+					go PublishMqUpdatesForDeletedNode(node, false, gwClients)
+				}
+
+			}
+		}(*currentHost)
+
 		if err := logic.DisassociateAllNodesFromHost(currentHost.ID.String()); err != nil {
 			slog.Error("failed to delete all nodes of host", "id", currentHost.ID, "error", err)
 			return