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

add signalHost in fallback api

Max Ma 11 місяців тому
батько
коміт
e75d5411c6
2 змінених файлів з 18 додано та 0 видалено
  1. 17 0
      controllers/hosts.go
  2. 1 0
      models/structs.go

+ 17 - 0
controllers/hosts.go

@@ -11,6 +11,7 @@ import (
 	"github.com/gravitl/netmaker/database"
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/logic"
+	"github.com/gravitl/netmaker/logic/hostactions"
 	"github.com/gravitl/netmaker/models"
 	"github.com/gravitl/netmaker/mq"
 	"github.com/gravitl/netmaker/servercfg"
@@ -213,6 +214,11 @@ func pull(w http.ResponseWriter, r *http.Request) {
 		EndpointDetection: servercfg.IsEndpointDetectionEnabled(),
 	}
 
+	hu := hostactions.GetAction(hostID)
+	if hu != nil {
+		response.Signal = hu.Signal
+	}
+
 	logger.Log(1, hostID, "completed a pull")
 	w.WriteHeader(http.StatusOK)
 	json.NewEncoder(w).Encode(&response)
@@ -340,6 +346,17 @@ func hostUpdateFallback(w http.ResponseWriter, r *http.Request) {
 
 	case models.UpdateMetrics:
 		mq.UpdateMetricsFallBack(hostUpdate.Node.ID.String(), hostUpdate.NewMetrics)
+	case models.SignalHost:
+		peerHost, err := logic.GetHost(hostUpdate.Signal.ToHostID)
+		if err != nil {
+			slog.Error("failed to signal, peer host not found", "error", err)
+			return
+		}
+		hostactions.AddAction(models.HostUpdate{
+			Action: models.SignalHost,
+			Host:   *peerHost,
+			Signal: hostUpdate.Signal,
+		})
 	}
 
 	if sendPeerUpdate {

+ 1 - 0
models/structs.go

@@ -227,6 +227,7 @@ type HostPull struct {
 	DefaultGwIp       net.IP                `json:"default_gw_ip"`
 	IsInternetGw      bool                  `json:"is_inet_gw"`
 	EndpointDetection bool                  `json:"endpoint_detection"`
+	Signal            Signal                `json:"signal"`
 }
 
 type DefaultGwInfo struct {