Przeglądaj źródła

push peer update network deletion

abhishek9686 7 miesięcy temu
rodzic
commit
d2033a18d2
3 zmienionych plików z 15 dodań i 6 usunięć
  1. 6 2
      controllers/network.go
  2. 6 3
      controllers/network_test.go
  3. 3 1
      logic/networks.go

+ 6 - 2
controllers/network.go

@@ -445,7 +445,8 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
 	force := r.URL.Query().Get("force") == "true"
 	var params = mux.Vars(r)
 	network := params["networkname"]
-	err := logic.DeleteNetwork(network, force)
+	doneCh := make(chan struct{}, 1)
+	err := logic.DeleteNetwork(network, force, doneCh)
 	if err != nil {
 		errtype := "badrequest"
 		if strings.Contains(err.Error(), "Node check failed") {
@@ -460,7 +461,10 @@ func deleteNetwork(w http.ResponseWriter, r *http.Request) {
 	go logic.DeleteDefaultNetworkPolicies(models.NetworkID(network))
 	//delete network from allocated ip map
 	go logic.RemoveNetworkFromAllocatedIpMap(network)
-
+	go func() {
+		<-doneCh
+		mq.PublishPeerUpdate(true)
+	}()
 	logger.Log(1, r.Header.Get("user"), "deleted network", network)
 	w.WriteHeader(http.StatusOK)
 	json.NewEncoder(w).Encode("success")

+ 6 - 3
controllers/network_test.go

@@ -75,16 +75,19 @@ func TestDeleteNetwork(t *testing.T) {
 	t.Run("NetworkwithNodes", func(t *testing.T) {
 	})
 	t.Run("DeleteExistingNetwork", func(t *testing.T) {
-		err := logic.DeleteNetwork("skynet", false)
+		doneCh := make(chan struct{}, 1)
+		err := logic.DeleteNetwork("skynet", false, doneCh)
 		assert.Nil(t, err)
 	})
 	t.Run("NonExistentNetwork", func(t *testing.T) {
-		err := logic.DeleteNetwork("skynet", false)
+		doneCh := make(chan struct{}, 1)
+		err := logic.DeleteNetwork("skynet", false, doneCh)
 		assert.Nil(t, err)
 	})
 	createNetv1("test")
 	t.Run("ForceDeleteNetwork", func(t *testing.T) {
-		err := logic.DeleteNetwork("test", true)
+		doneCh := make(chan struct{}, 1)
+		err := logic.DeleteNetwork("test", true, doneCh)
 		assert.Nil(t, err)
 	})
 }

+ 3 - 1
logic/networks.go

@@ -171,7 +171,7 @@ func GetNetworks() ([]models.Network, error) {
 }
 
 // DeleteNetwork - deletes a network
-func DeleteNetwork(network string, force bool) error {
+func DeleteNetwork(network string, force bool, done chan struct{}) error {
 
 	nodeCount, err := GetNetworkNonServerNodeCount(network)
 	if nodeCount == 0 || database.IsEmptyRecord(err) {
@@ -212,6 +212,8 @@ func DeleteNetwork(network string, force bool) error {
 		if servercfg.CacheEnabled() {
 			deleteNetworkFromCache(network)
 		}
+		done <- struct{}{}
+		close(done)
 	}()
 
 	// Delete default network enrollment key