Merge pull request #1884 from gravitl/netclient_refactor_fixes

send node update only if left from UI, modify mq client if host already exists
This commit is contained in:
dcarns 2022-12-29 11:36:01 -05:00 committed by GitHub
commit 8c4c062ee4
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 18 additions and 2 deletions

View file

@ -571,9 +571,20 @@ func createNode(w http.ResponseWriter, r *http.Request) {
// consume password before hashing for mq client creation
hostPassword := data.Host.HostPass
data.Node.Server = servercfg.GetServer()
if err := logic.CreateHost(&data.Host); err != nil {
if errors.Is(err, logic.ErrHostExists) {
logger.Log(3, "host exists .. no need to create")
networks := logic.GetHostNetworks(data.Host.ID.String())
if err := mq.ModifyClient(&mq.MqClient{
ID: data.Host.ID.String(),
Text: data.Host.Name,
Networks: networks,
}); err != nil {
logger.Log(0, fmt.Sprintf("failed to modify DynSec client: %v", err.Error()))
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
return
}
} else {
logger.Log(0, "error creating host", err.Error())
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "badrequest"))
@ -592,12 +603,14 @@ func createNode(w http.ResponseWriter, r *http.Request) {
return
}
}
host, err := logic.GetHost(data.Host.ID.String())
if err != nil {
logger.Log(0, r.Header.Get("user"), "failed to find host:", err.Error())
logic.ReturnErrorResponse(w, r, logic.FormatError(err, "internal"))
return
}
err = logic.AssociateNodeToHost(&data.Node, host)
if err != nil {
logger.Log(0, r.Header.Get("user"),
@ -1074,7 +1087,10 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
}
logic.ReturnSuccessResponse(w, r, nodeid+" deleted.")
logger.Log(1, r.Header.Get("user"), "Deleted node", nodeid, "from network", params["network"])
runUpdates(&node, false)
if !fromNode {
runUpdates(&node, false)
}
}
func runUpdates(node *models.Node, ifaceDelta bool) {

View file

@ -84,10 +84,10 @@ func UpdateNode(currentNode *models.Node, newNode *models.Node) error {
// DeleteNode - marks node for deletion if called by UI or deletes node if called by node
func DeleteNode(node *models.Node, purge bool) error {
node.Action = models.NODE_DELETE
if !purge {
newnode := *node
newnode.PendingDelete = true
newnode.Action = models.NODE_DELETE
if err := UpdateNode(node, &newnode); err != nil {
return err
}