Browse Source

publish dns update on node ip change

Matthew R Kasun 2 years ago
parent
commit
a24263281c
2 changed files with 23 additions and 0 deletions
  1. 3 0
      controllers/node.go
  2. 20 0
      mq/publishers.go

+ 3 - 0
controllers/node.go

@@ -967,6 +967,9 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
 	json.NewEncoder(w).Encode(apiNode)
 	json.NewEncoder(w).Encode(apiNode)
 
 
 	runUpdates(newNode, ifaceDelta)
 	runUpdates(newNode, ifaceDelta)
+	if err := mq.PublishReplaceDNS(&currentNode, newNode, host); err != nil {
+		logger.Log(1, "failed to publish dns update", err.Error())
+	}
 }
 }
 
 
 // swagger:route DELETE /api/nodes/{network}/{nodeid} nodes deleteNode
 // swagger:route DELETE /api/nodes/{network}/{nodeid} nodes deleteNode

+ 20 - 0
mq/publishers.go

@@ -258,6 +258,26 @@ func PublishDNSDelete(node *models.Node, host *models.Host) error {
 	return nil
 	return nil
 }
 }
 
 
+func PublishReplaceDNS(oldNode, newNode *models.Node, host *models.Host) error {
+	dns := models.DNSUpdate{
+		Action: models.DNSReplace,
+		Name:   host.Name + "." + oldNode.Network,
+	}
+	if !oldNode.Address.IP.Equal(newNode.Address.IP) {
+		dns.Address = newNode.Address.IP.String()
+		if err := PublishDNSUpdate(oldNode.Network, dns); err != nil {
+			return err
+		}
+	}
+	if !oldNode.Address6.IP.Equal(newNode.Address6.IP) {
+		dns.Address = newNode.Address6.IP.String()
+		if err := PublishDNSUpdate(oldNode.Network, dns); err != nil {
+			return err
+		}
+	}
+	return nil
+}
+
 // function to collect and store metrics for server nodes
 // function to collect and store metrics for server nodes
 //func collectServerMetrics(networks []models.Network) {
 //func collectServerMetrics(networks []models.Network) {
 //	if !servercfg.Is_EE {
 //	if !servercfg.Is_EE {