Переглянути джерело

added peers update for network create

0xdcarns 2 роки тому
батько
коміт
9d86a1ee84
1 змінених файлів з 25 додано та 3 видалено
  1. 25 3
      controllers/network.go

+ 25 - 3
controllers/network.go

@@ -416,6 +416,7 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
 	}
 
 	defaultHosts := logic.GetDefaultHosts()
+	var shouldUpdatePeers bool
 	for i := range defaultHosts {
 		currHost := &defaultHosts[i]
 		newNode, err := logic.UpdateHostNetwork(currHost, network.NetID, true)
@@ -425,12 +426,33 @@ func createNetwork(w http.ResponseWriter, r *http.Request) {
 			return
 		}
 		logger.Log(1, "added new node", newNode.ID.String(), "to host", currHost.Name)
-		if err = mq.HostUpdate(&models.HostUpdate{
+		hostUpdate := &models.HostUpdate{
 			Action: models.JoinHostToNetwork,
 			Host:   *currHost,
 			Node:   *newNode,
-		}); err != nil {
-			logger.Log(0, r.Header.Get("user"), "failed to add host to network:", currHost.ID.String(), network.NetID, err.Error())
+		}
+		if servercfg.IsMessageQueueBackend() {
+			if err = mq.HostUpdate(hostUpdate); err != nil {
+				logger.Log(0, r.Header.Get("user"), "failed to add host to network:", currHost.ID.String(), network.NetID, err.Error())
+			}
+		} else {
+			if err = queue.HostUpdate(hostUpdate); err != nil {
+				logger.Log(0, "failed to host update:", err.Error())
+			}
+		}
+		if i == 1 {
+			shouldUpdatePeers = true
+		}
+	}
+	if shouldUpdatePeers { // if more than 1 host was added to created network, we'll need a peer update
+		if servercfg.IsMessageQueueBackend() {
+			go func() {
+				if err := mq.PublishPeerUpdate(); err != nil {
+					logger.Log(0, "fail to publish peer update: ", err.Error())
+				}
+			}()
+		} else {
+			queue.PublishAllPeerUpdate()
 		}
 	}