mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-08 10:11:08 +08:00
ext client logic for peer updates
This commit is contained in:
@@ -14,6 +14,7 @@ import (
|
|||||||
"github.com/gravitl/netmaker/logger"
|
"github.com/gravitl/netmaker/logger"
|
||||||
"github.com/gravitl/netmaker/logic"
|
"github.com/gravitl/netmaker/logic"
|
||||||
"github.com/gravitl/netmaker/models"
|
"github.com/gravitl/netmaker/models"
|
||||||
|
"github.com/gravitl/netmaker/mq"
|
||||||
"github.com/skip2/go-qrcode"
|
"github.com/skip2/go-qrcode"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -238,6 +239,10 @@ func createExtClient(w http.ResponseWriter, r *http.Request) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
w.WriteHeader(http.StatusOK)
|
w.WriteHeader(http.StatusOK)
|
||||||
|
err = mq.PublishExtPeerUpdate(nodeid)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log(1, "error setting ext peers on "+nodeid+": "+err.Error())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func updateExtClient(w http.ResponseWriter, r *http.Request) {
|
func updateExtClient(w http.ResponseWriter, r *http.Request) {
|
||||||
@@ -289,6 +294,13 @@ func deleteExtClient(w http.ResponseWriter, r *http.Request) {
|
|||||||
returnErrorResponse(w, r, formatError(err, "internal"))
|
returnErrorResponse(w, r, formatError(err, "internal"))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
// we dont currently have logic to get the nodeid when we delete ext clients, apparently
|
||||||
|
err = mq.PublishExtPeerUpdate(nodeid)
|
||||||
|
if err != nil {
|
||||||
|
logger.Log("error setting ext peers on " + nodeid + ": " + err.Error())
|
||||||
|
}
|
||||||
|
*/
|
||||||
logger.Log(1, r.Header.Get("user"),
|
logger.Log(1, r.Header.Get("user"),
|
||||||
"Deleted extclient client", params["clientid"], "from network", params["network"])
|
"Deleted extclient client", params["clientid"], "from network", params["network"])
|
||||||
returnSuccessResponse(w, r, params["clientid"]+" deleted.")
|
returnSuccessResponse(w, r, params["clientid"]+" deleted.")
|
||||||
|
@@ -601,6 +601,16 @@ func GetNetworkServerLocal(network string) (models.Node, error) {
|
|||||||
return models.Node{}, errors.New("could not find node for local server")
|
return models.Node{}, errors.New("could not find node for local server")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// IsLocalServer - get network server node ID if exists
|
||||||
|
func IsLocalServer(node *models.Node) bool {
|
||||||
|
var islocal bool
|
||||||
|
local, err := GetNetworkServerLocal(node.Network)
|
||||||
|
if err != nil {
|
||||||
|
return islocal
|
||||||
|
}
|
||||||
|
return node.ID != "" && local.ID == node.ID
|
||||||
|
}
|
||||||
|
|
||||||
// validateServer - make sure servers dont change port or address
|
// validateServer - make sure servers dont change port or address
|
||||||
func validateServer(currentNode, newNode *models.Node) bool {
|
func validateServer(currentNode, newNode *models.Node) bool {
|
||||||
return (newNode.Address == currentNode.Address &&
|
return (newNode.Address == currentNode.Address &&
|
||||||
|
25
mq/mq.go
25
mq/mq.go
@@ -133,6 +133,31 @@ func PublishPeerUpdate(newNode *models.Node) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// PublishPeerUpdate --- deterines and publishes a peer update to all the peers of a node
|
||||||
|
func PublishExtPeerUpdate(nodeid string) error {
|
||||||
|
node, err := logic.GetNodeByID(nodeid)
|
||||||
|
if logic.IsLocalServer(&node) {
|
||||||
|
if err = logic.ServerUpdate(&node, false); err != nil {
|
||||||
|
logger.Log(1, "server node:", node.ID, "failed to update peers with ext clients")
|
||||||
|
return err
|
||||||
|
} else {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if !servercfg.IsMessageQueueBackend() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
peerUpdate, err := logic.GetPeerUpdate(&node)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
data, err := json.Marshal(&peerUpdate)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return publish(&node, fmt.Sprintf("peers/%s/%s", node.Network, node.ID), data)
|
||||||
|
}
|
||||||
|
|
||||||
// GetID -- decodes a message queue topic and returns the embedded node.ID
|
// GetID -- decodes a message queue topic and returns the embedded node.ID
|
||||||
func GetID(topic string) (string, error) {
|
func GetID(topic string) (string, error) {
|
||||||
parts := strings.Split(topic, "/")
|
parts := strings.Split(topic, "/")
|
||||||
|
Reference in New Issue
Block a user