Browse Source

fix node update

Abhishek Kondur 2 years ago
parent
commit
ca3d9dc40b
6 changed files with 24 additions and 56 deletions
  1. 11 27
      controllers/node.go
  2. 0 20
      logic/hosts.go
  3. 10 2
      logic/nodes.go
  4. 2 2
      logic/peers.go
  5. 0 4
      models/node.go
  6. 1 1
      mq/publishers.go

+ 11 - 27
controllers/node.go

@@ -7,7 +7,6 @@ import (
 	"net/http"
 	"strings"
 
-	"github.com/google/uuid"
 	"github.com/gorilla/mux"
 	proxy_models "github.com/gravitl/netclient/nmproxy/models"
 	"github.com/gravitl/netmaker/database"
@@ -1069,28 +1068,14 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 		}, &node)
 	}
 	if fromNode {
-		// check if server should be removed from mq
-		// err is irrelevent
-		nodes, _ := logic.GetAllNodes()
-		var foundNode models.Node
-		for _, nodetocheck := range nodes {
-			if nodetocheck.HostID == node.HostID {
-				foundNode = nodetocheck
-				break
-			}
-		}
-		// TODO: Address how to remove host
-		if foundNode.HostID != uuid.Nil {
-			if err = logic.DissasociateNodeFromHost(&foundNode, host); err == nil {
-				currNets := logic.GetHostNetworks(host.ID.String())
-				if len(currNets) > 0 {
-					mq.ModifyClient(&mq.MqClient{
-						ID:       host.ID.String(),
-						Text:     host.Name,
-						Networks: currNets,
-					})
-				}
-			}
+		// update networks for host mq client
+		currNets := logic.GetHostNetworks(host.ID.String())
+		if len(currNets) > 0 {
+			mq.ModifyClient(&mq.MqClient{
+				ID:       host.ID.String(),
+				Text:     host.Name,
+				Networks: currNets,
+			})
 		}
 	}
 	logic.ReturnSuccessResponse(w, r, nodeid+" deleted.")
@@ -1099,12 +1084,11 @@ func deleteNode(w http.ResponseWriter, r *http.Request) {
 		runUpdates(&node, false)
 		return
 	}
-	go func() {
-		if err := mq.PublishPeerUpdate(node.Network, false); err != nil {
+	go func(network string) {
+		if err := mq.PublishPeerUpdate(network, false); err != nil {
 			logger.Log(1, "error publishing peer update ", err.Error())
-			return
 		}
-	}()
+	}(node.Network)
 
 }
 

+ 0 - 20
logic/hosts.go

@@ -63,26 +63,6 @@ func GetHostsMap() (map[string]*models.Host, error) {
 	return currHostMap, nil
 }
 
-func GetNetworkHosts(network string) ([]models.Host, error) {
-	networkHosts := []models.Host{}
-	hosts, err := GetAllHosts()
-	if err != nil {
-		return networkHosts, err
-	}
-	for _, host := range hosts {
-		for _, nodeID := range host.Nodes {
-			node, err := GetNodeByID(nodeID)
-			if err == nil {
-				if node.Network == network {
-					networkHosts = append(networkHosts, host)
-					break
-				}
-			}
-		}
-	}
-	return networkHosts, nil
-}
-
 // GetHost - gets a host from db given id
 func GetHost(hostid string) (*models.Host, error) {
 	record, err := database.FetchRecord(database.HOSTS_TABLE_NAME, hostid)

+ 10 - 2
logic/nodes.go

@@ -561,7 +561,11 @@ func createNode(node *models.Node) error {
 			if node.Address.IP, err = UniqueAddress(node.Network, false); err != nil {
 				return err
 			}
-			node.Address.Mask = net.CIDRMask(32, 32)
+			_, cidr, err := net.ParseCIDR(parentNetwork.AddressRange)
+			if err != nil {
+				return err
+			}
+			node.Address.Mask = net.CIDRMask(cidr.Mask.Size())
 		}
 	} else if !IsIPUnique(node.Network, node.Address.String(), database.NODES_TABLE_NAME, false) {
 		return fmt.Errorf("invalid address: ipv4 " + node.Address.String() + " is not unique")
@@ -571,7 +575,11 @@ func createNode(node *models.Node) error {
 			if node.Address6.IP, err = UniqueAddress6(node.Network, false); err != nil {
 				return err
 			}
-			node.Address6.Mask = net.CIDRMask(128, 128)
+			_, cidr, err := net.ParseCIDR(parentNetwork.AddressRange6)
+			if err != nil {
+				return err
+			}
+			node.Address6.Mask = net.CIDRMask(cidr.Mask.Size())
 		}
 	} else if !IsIPUnique(node.Network, node.Address6.String(), database.NODES_TABLE_NAME, true) {
 		return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique")

+ 2 - 2
logic/peers.go

@@ -292,7 +292,7 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()][peer.ID.String()] = models.IDandAddr{
 					ID:      peer.ID.String(),
 					Address: peer.PrimaryAddress(),
-					Name:    peer.Name,
+					Name:    peerHost.Name,
 					Network: peer.Network,
 				}
 			} else {
@@ -302,7 +302,7 @@ func GetPeerUpdateForHost(host *models.Host) (models.HostPeerUpdate, error) {
 				hostPeerUpdate.PeerIDs[peerHost.PublicKey.String()][peer.ID.String()] = models.IDandAddr{
 					ID:      peer.ID.String(),
 					Address: peer.PrimaryAddress(),
-					Name:    peer.Name,
+					Name:    peerHost.Name,
 					Network: peer.Network,
 				}
 			}

+ 0 - 4
models/node.go

@@ -58,7 +58,6 @@ type Iface struct {
 type CommonNode struct {
 	ID                  uuid.UUID     `json:"id" yaml:"id"`
 	HostID              uuid.UUID     `json:"hostid" yaml:"hostid"`
-	Name                string        `json:"name" yaml:"name"`
 	Network             string        `json:"network" yaml:"network"`
 	NetworkRange        net.IPNet     `json:"networkrange" yaml:"networkrange"`
 	NetworkRange6       net.IPNet     `json:"networkrange6" yaml:"networkrange6"`
@@ -435,9 +434,6 @@ func (newNode *Node) Fill(currentNode *Node) { // TODO add new field for nftable
 	if newNode.Server == "" {
 		newNode.Server = currentNode.Server
 	}
-	if newNode.Connected != currentNode.Connected {
-		newNode.Connected = currentNode.Connected
-	}
 	if newNode.DefaultACL == "" {
 		newNode.DefaultACL = currentNode.DefaultACL
 	}

+ 1 - 1
mq/publishers.go

@@ -20,7 +20,7 @@ func PublishPeerUpdate(network string, publishToSelf bool) error {
 		return nil
 	}
 
-	hosts, err := logic.GetNetworkHosts(network)
+	hosts, err := logic.GetAllHosts()
 	if err != nil {
 		logger.Log(1, "err getting all hosts", err.Error())
 		return err