fix node update

This commit is contained in:
Abhishek Kondur
2023-01-06 16:58:41 +05:30
parent 9f0ef1628c
commit ca3d9dc40b
6 changed files with 24 additions and 56 deletions

View File

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

View File

@@ -63,26 +63,6 @@ func GetHostsMap() (map[string]*models.Host, error) {
return currHostMap, nil 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 // GetHost - gets a host from db given id
func GetHost(hostid string) (*models.Host, error) { func GetHost(hostid string) (*models.Host, error) {
record, err := database.FetchRecord(database.HOSTS_TABLE_NAME, hostid) record, err := database.FetchRecord(database.HOSTS_TABLE_NAME, hostid)

View File

@@ -561,7 +561,11 @@ func createNode(node *models.Node) error {
if node.Address.IP, err = UniqueAddress(node.Network, false); err != nil { if node.Address.IP, err = UniqueAddress(node.Network, false); err != nil {
return err 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) { } 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") 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 { if node.Address6.IP, err = UniqueAddress6(node.Network, false); err != nil {
return err 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) { } 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") return fmt.Errorf("invalid address: ipv6 " + node.Address6.String() + " is not unique")

View File

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

View File

@@ -58,7 +58,6 @@ type Iface struct {
type CommonNode struct { type CommonNode struct {
ID uuid.UUID `json:"id" yaml:"id"` ID uuid.UUID `json:"id" yaml:"id"`
HostID uuid.UUID `json:"hostid" yaml:"hostid"` HostID uuid.UUID `json:"hostid" yaml:"hostid"`
Name string `json:"name" yaml:"name"`
Network string `json:"network" yaml:"network"` Network string `json:"network" yaml:"network"`
NetworkRange net.IPNet `json:"networkrange" yaml:"networkrange"` NetworkRange net.IPNet `json:"networkrange" yaml:"networkrange"`
NetworkRange6 net.IPNet `json:"networkrange6" yaml:"networkrange6"` 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 == "" { if newNode.Server == "" {
newNode.Server = currentNode.Server newNode.Server = currentNode.Server
} }
if newNode.Connected != currentNode.Connected {
newNode.Connected = currentNode.Connected
}
if newNode.DefaultACL == "" { if newNode.DefaultACL == "" {
newNode.DefaultACL = currentNode.DefaultACL newNode.DefaultACL = currentNode.DefaultACL
} }

View File

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