Browse Source

delete node fix, mq modify client if host is already created

Abhishek Kondur 2 years ago
parent
commit
ba2466aa25
2 changed files with 20 additions and 2 deletions
  1. 19 1
      controllers/node.go
  2. 1 1
      logic/nodes.go

+ 19 - 1
controllers/node.go

@@ -571,9 +571,11 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 	// consume password before hashing for mq client creation
 	hostPassword := data.Host.HostPass
 	data.Node.Server = servercfg.GetServer()
+	modifyMqClient := false
 	if err := logic.CreateHost(&data.Host); err != nil {
 		if errors.Is(err, logic.ErrHostExists) {
 			logger.Log(3, "host exists .. no need to create")
+			modifyMqClient = true
 		} else {
 			logger.Log(0, "error creating host", err.Error())
 			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
@@ -592,12 +594,25 @@ func createNode(w http.ResponseWriter, r *http.Request) {
 			return
 		}
 	}
+
 	host, err := logic.GetHost(data.Host.ID.String())
 	if err != nil {
 		logger.Log(0, r.Header.Get("user"), "failed to find host:", err.Error())
 		logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
 		return
 	}
+	if modifyMqClient {
+		networks := logic.GetHostNetworks(data.Host.ID.String())
+		if err := mq.ModifyClient(&mq.MqClient{
+			ID:       host.ID.String(),
+			Text:     host.Name,
+			Networks: networks,
+		}); err != nil {
+			logger.Log(0, fmt.Sprintf("failed to modify DynSec client: %v", err.Error()))
+			logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
+			return
+		}
+	}
 	err = logic.AssociateNodeToHost(&data.Node, host)
 	if err != nil {
 		logger.Log(0, r.Header.Get("user"),
@@ -1074,7 +1089,10 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 	}
 	logic.ReturnSuccessResponse(w, r, nodeid+" deleted.")
 	logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
-	runUpdates(&node, false)
+	if !fromNode {
+		runUpdates(&node, false)
+	}
+
 }
 
 func runUpdates(node *models.Node, ifaceDelta bool) {

+ 1 - 1
logic/nodes.go

@@ -84,10 +84,10 @@ func UpdateNode(currentNode *models.Node, newNode *models.Node) error {
 
 // DeleteNode - marks node for deletion if called by UI or deletes node if called by node
 func DeleteNode(node *models.Node, purge bool) error {
+	node.Action = models.NODE_DELETE
 	if !purge {
 		newnode := *node
 		newnode.PendingDelete = true
-		newnode.Action = models.NODE_DELETE
 		if err := UpdateNode(node, &newnode); err != nil {
 			return err
 		}