Browse Source

remove tag from extclient on tag deletion

abhishek9686 10 tháng trước cách đây
mục cha
commit
618c11f89a
1 tập tin đã thay đổi với 13 bổ sung2 xóa
  1. 13 2
      logic/tags.go

+ 13 - 2
logic/tags.go

@@ -65,6 +65,14 @@ func DeleteTag(tagID models.TagID) error {
 			UpsertNode(&nodeI)
 		}
 	}
+
+	extclients, _ := GetNetworkExtClients(tag.Network.String())
+	for _, extclient := range extclients {
+		if _, ok := extclient.Tags[tagID]; ok {
+			delete(extclient.Tags, tagID)
+			SaveExtClient(&extclient)
+		}
+	}
 	return database.DeleteRecord(database.TAG_TABLE_NAME, tagID.String())
 }
 
@@ -138,6 +146,7 @@ func UpdateTag(req models.UpdateTagReq, newID models.TagID) {
 	tagNodesMap := GetNodesWithTag(req.ID)
 	for _, apiNode := range req.TaggedNodes {
 		node := models.Node{}
+		var nodeID string
 		if apiNode.IsStatic {
 			if apiNode.StaticNode.RemoteAccessClientID != "" {
 				continue
@@ -147,15 +156,17 @@ func UpdateTag(req models.UpdateTagReq, newID models.TagID) {
 				continue
 			}
 			node.IsStatic = true
+			nodeID = extclient.ClientID
 			node.StaticNode = extclient
 		} else {
 			node, err = GetNodeByID(apiNode.ID)
 			if err != nil {
 				continue
 			}
+			nodeID = node.ID.String()
 		}
 
-		if _, ok := tagNodesMap[node.ID.String()]; !ok {
+		if _, ok := tagNodesMap[nodeID]; !ok {
 			if node.StaticNode.Tags == nil {
 				node.StaticNode.Tags = make(map[models.TagID]struct{})
 			}
@@ -186,7 +197,7 @@ func UpdateTag(req models.UpdateTagReq, newID models.TagID) {
 					UpsertNode(&node)
 				}
 			}
-			delete(tagNodesMap, node.ID.String())
+			delete(tagNodesMap, nodeID)
 		}
 
 	}