mirror of
https://github.com/gravitl/netmaker.git
synced 2025-10-06 01:07:41 +08:00
fix node update
This commit is contained in:
@@ -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)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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)
|
||||||
|
@@ -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")
|
||||||
|
@@ -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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
}
|
}
|
||||||
|
@@ -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
|
||||||
|
Reference in New Issue
Block a user