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"
"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)
}

View file

@ -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)

View file

@ -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")

View file

@ -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,
}
}

View file

@ -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
}

View file

@ -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