diff --git a/controllers/network.go b/controllers/network.go index 0a78b64c..2b3fc61e 100644 --- a/controllers/network.go +++ b/controllers/network.go @@ -3,6 +3,7 @@ package controller import ( "encoding/json" "errors" + "fmt" "net/http" "strings" @@ -11,6 +12,7 @@ import ( "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" ) @@ -98,6 +100,23 @@ 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 { + fmt.Println("updating node ", node.Name, " for a key update") + 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 diff --git a/controllers/node.go b/controllers/node.go index 05838def..625215d0 100644 --- a/controllers/node.go +++ b/controllers/node.go @@ -2,6 +2,7 @@ package controller import ( "encoding/json" + "errors" "fmt" "net/http" "strings" @@ -608,6 +609,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 errors.New("attempt to publish to server node") + } if nodeUpdate { if err := mq.NodeUpdate(node); err != nil { logger.Log(1, "error publishing node update", err.Error())