From f0037fb880e10ff98adecfa190e7e7eb4de4ebb1 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Fri, 4 Feb 2022 11:40:29 -0500 Subject: [PATCH 1/5] publish updates on key change from ui --- controllers/network.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/controllers/network.go b/controllers/network.go index 0a78b64c..2bc3b2ac 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -98,6 +98,14 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) { logger.Log(2, r.Header.Get("user"), "updated key on network", netname) w.WriteHeader(http.StatusOK) json.NewEncoder(w).Encode(network) + nodes, err := logic.GetNetworkNodes(netname) + if err != nil { + logger.Log(2, "failed to retrieve network nodes for network", netname, err.Error()) + return + } + for _, node := range nodes { + runUpdates(&node, true) + } } // Update a network From 02b7025b28a5c254db1af1744b420f9f7cdab5ad Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Fri, 4 Feb 2022 13:11:11 -0500 Subject: [PATCH 2/5] added sleep --- controllers/network.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/controllers/network.go b/controllers/network.go index 2bc3b2ac..11aed47e 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -3,8 +3,10 @@ package controller import ( "encoding/json" "errors" + "fmt" "net/http" "strings" + "time" "github.com/gorilla/mux" "github.com/gravitl/netmaker/database" @@ -104,7 +106,9 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) { return } for _, node := range nodes { + fmt.Println("updating node ", node.Name, " for a key update") runUpdates(&node, true) + time.Sleep(time.Second << 10) } } From 96caccc43ea4873c81774e97124c6c0ce01922d1 Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Fri, 4 Feb 2022 13:26:09 -0500 Subject: [PATCH 3/5] prevent publish to server node --- controllers/node.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/controllers/node.go b/controllers/node.go index 05838def..172f523d 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -608,6 +608,10 @@ func deleteNode(w http.ResponseWriter, r *http.Request) { } func runUpdates(node *models.Node, nodeUpdate bool) error { + //don't publish to server node + if node.IsServer == "yes" { + return + } if nodeUpdate { if err := mq.NodeUpdate(node); err != nil { logger.Log(1, "error publishing node update", err.Error()) From c371d87eb30cb25f9dbce76a3abe13a6dd0feafe Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Fri, 4 Feb 2022 13:30:11 -0500 Subject: [PATCH 4/5] fix return --- controllers/node.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/controllers/node.go b/controllers/node.go index 172f523d..625215d0 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -2,6 +2,7 @@ package controller import ( "encoding/json" + "errors" "fmt" "net/http" "strings" @@ -610,7 +611,7 @@ func deleteNode(w http.ResponseWriter, r *http.Request) { func runUpdates(node *models.Node, nodeUpdate bool) error { //don't publish to server node if node.IsServer == "yes" { - return + return errors.New("attempt to publish to server node") } if nodeUpdate { if err := mq.NodeUpdate(node); err != nil { From c8fec5af8007e21cdaa15bc0b352859b79479a0b Mon Sep 17 00:00:00 2001 From: "Matthew R. Kasun" Date: Fri, 4 Feb 2022 13:57:01 -0500 Subject: [PATCH 5/5] fixed timing --- controllers/network.go | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/controllers/network.go b/controllers/network.go index 11aed47e..2b3fc61e 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -6,13 +6,13 @@ import ( "fmt" "net/http" "strings" - "time" "github.com/gorilla/mux" "github.com/gravitl/netmaker/database" "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" ) @@ -107,9 +107,16 @@ func keyUpdate(w http.ResponseWriter, r *http.Request) { } for _, node := range nodes { fmt.Println("updating node ", node.Name, " for a key update") - runUpdates(&node, true) - time.Sleep(time.Second << 10) + if err := mq.NodeUpdate(&node); err != nil { + logger.Log(2, "failed key update ", node.Name) + } } + node, err := logic.GetNetworkServerLeader(netname) + if err != nil { + logger.Log(2, "failed to get server node") + return + } + runUpdates(&node, false) } // Update a network