mirror of
https://github.com/gravitl/netmaker.git
synced 2025-09-27 15:36:25 +08:00
fix node update
This commit is contained in:
parent
9f0ef1628c
commit
ca3d9dc40b
6 changed files with 24 additions and 56 deletions
|
@ -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)
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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,
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue