diff --git a/controllers/node.go b/controllers/node.go index 86d1c71b..4ea427ad 100644 --- a/controllers/node.go +++ b/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) } diff --git a/logic/hosts.go b/logic/hosts.go index c50fddae..0dfeedec 100644 --- a/logic/hosts.go +++ b/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) diff --git a/logic/nodes.go b/logic/nodes.go index 933741f6..d3691824 100644 --- a/logic/nodes.go +++ b/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") diff --git a/logic/peers.go b/logic/peers.go index 1bde8e5e..487d7511 100644 --- a/logic/peers.go +++ b/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, } } diff --git a/models/node.go b/models/node.go index 782fcf8a..30920658 100644 --- a/models/node.go +++ b/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 } diff --git a/mq/publishers.go b/mq/publishers.go index 05fbcb9f..181dd98f 100644 --- a/mq/publishers.go +++ b/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