Browse Source

Merge pull request #1049 from gravitl/feature_v0.13.1_instant_dns_propogation

added logic to propogate DNS updates on custom entry
dcarns 3 years ago
parent
commit
f4a0ac00a3
1 changed files with 16 additions and 0 deletions
  1. 16 0
      controllers/dns.go

+ 16 - 0
controllers/dns.go

@@ -9,6 +9,8 @@ import (
 	"github.com/gravitl/netmaker/logger"
 	"github.com/gravitl/netmaker/logic"
 	"github.com/gravitl/netmaker/models"
+	"github.com/gravitl/netmaker/mq"
+	"github.com/gravitl/netmaker/servercfg"
 )
 
 func dnsHandlers(r *mux.Router) {
@@ -116,6 +118,20 @@ func createDNS(w http.ResponseWriter, r *http.Request) {
 		returnErrorResponse(w, r, formatError(err, "internal"))
 		return
 	}
+	logger.Log(1, "new DNS record added:", entry.Name)
+	if servercfg.IsMessageQueueBackend() {
+		serverNode, err := logic.GetNetworkServerLocal(entry.Network)
+		if err != nil {
+			logger.Log(1, "failed to find server node after DNS update on", entry.Network)
+		} else {
+			if err = logic.ServerUpdate(&serverNode, false); err != nil {
+				logger.Log(1, "failed to update server node after DNS update on", entry.Network)
+			}
+			if err = mq.PublishPeerUpdate(&serverNode); err != nil {
+				logger.Log(0, "failed to publish peer update after ACL update on", entry.Network)
+			}
+		}
+	}
 	w.WriteHeader(http.StatusOK)
 	json.NewEncoder(w).Encode(entry)
 }