publish node update when UI updates a node

This commit is contained in:
Matthew R Kasun 2022-01-21 17:22:56 -05:00
parent 9c6a26dcc5
commit e164e6446f
2 changed files with 26 additions and 0 deletions

View file

@ -11,6 +11,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"
"golang.org/x/crypto/bcrypt"
)
@ -552,6 +553,9 @@ func updateNode(w http.ResponseWriter, r *http.Request) {
logger.Log(1, r.Header.Get("user"), "updated node", node.MacAddress, "on network", node.Network)
w.WriteHeader(http.StatusOK)
json.NewEncoder(w).Encode(newNode)
if err := mq.NodeUpdate(&newNode); err != nil {
logger.Log(1, "error publishing node update"+err.Error())
}
}
func deleteNode(w http.ResponseWriter, r *http.Request) {

View file

@ -117,6 +117,28 @@ func GetID(topic string) (string, error) {
return parts[count-1], nil
}
// UpdateNode -- publishes a node update
func NodeUpdate(node *models.Node) error {
opts := mqtt.NewClientOptions()
broker := servercfg.GetMessageQueueEndpoint()
logger.Log(0, "broker: "+broker)
opts.AddBroker(broker)
client := mqtt.NewClient(opts)
if token := client.Connect(); token.Wait() && token.Error() != nil {
return token.Error()
}
data, err := json.Marshal(node)
if err != nil {
logger.Log(2, "error marshalling node update "+err.Error())
return err
}
if token := client.Publish("/update/"+node.ID, 0, false, data); token.Wait() && token.Error() != nil {
logger.Log(2, "error publishing peer update to peer "+node.ID+" "+token.Error().Error())
return err
}
return nil
}
// NewPeer -- publishes a peer update to all the peers of a newNode
func NewPeer(node models.Node) error {
opts := mqtt.NewClientOptions()