mirror of
https://github.com/gravitl/netmaker.git
synced 2026-04-22 16:07:11 +08:00
Merge pull request #3957 from gravitl/v1.5.1/post-fixes
v1.5.1: deduplicate egress routes, set max open conns
This commit is contained in:
@@ -698,25 +698,25 @@ func bulkDeleteHosts(w http.ResponseWriter, r *http.Request) {
|
||||
for _, idStr := range req.IDs {
|
||||
hostID, err := uuid.Parse(idStr)
|
||||
if err != nil {
|
||||
slog.Error("bulk host delete: invalid host id", "id", idStr)
|
||||
slog.Debug("bulk host delete: invalid host id", "id", idStr)
|
||||
continue
|
||||
}
|
||||
currHost := &schema.Host{ID: hostID}
|
||||
if err = currHost.Get(db.WithContext(context.Background())); err != nil {
|
||||
slog.Error("bulk host delete: host not found", "id", idStr, "error", err)
|
||||
slog.Debug("bulk host delete: host not found", "id", idStr, "error", err)
|
||||
continue
|
||||
}
|
||||
var hostNodes []models.Node
|
||||
for _, nodeID := range currHost.Nodes {
|
||||
node, err := logic.GetNodeByID(nodeID)
|
||||
if err != nil {
|
||||
slog.Error("bulk host delete: failed to get node", "nodeid", nodeID, "error", err)
|
||||
slog.Debug("bulk host delete: failed to get node", "nodeid", nodeID, "error", err)
|
||||
continue
|
||||
}
|
||||
hostNodes = append(hostNodes, node)
|
||||
}
|
||||
if err = logic.RemoveHost(currHost, true); err != nil {
|
||||
slog.Error("bulk host delete: failed to remove host", "id", idStr, "error", err)
|
||||
slog.Debug("bulk host delete: failed to remove host", "id", idStr, "error", err)
|
||||
continue
|
||||
}
|
||||
for _, node := range hostNodes {
|
||||
@@ -724,14 +724,14 @@ func bulkDeleteHosts(w http.ResponseWriter, r *http.Request) {
|
||||
}
|
||||
if servercfg.GetBrokerType() == servercfg.EmqxBrokerType {
|
||||
if err := mq.GetEmqxHandler().DeleteEmqxUser(currHost.ID.String()); err != nil {
|
||||
slog.Error("bulk host delete: failed to remove EMQX credentials", "id", currHost.ID, "error", err)
|
||||
slog.Debug("bulk host delete: failed to remove EMQX credentials", "id", currHost.ID, "error", err)
|
||||
}
|
||||
}
|
||||
if err = mq.HostUpdate(&models.HostUpdate{
|
||||
Action: models.DeleteHost,
|
||||
Host: *currHost,
|
||||
}); err != nil {
|
||||
slog.Error("bulk host delete: failed to send host update", "id", currHost.ID, "error", err)
|
||||
slog.Debug("bulk host delete: failed to send host update", "id", currHost.ID, "error", err)
|
||||
}
|
||||
(&schema.PendingHost{HostID: currHost.ID.String()}).DeleteAllPendingHosts(db.WithContext(context.TODO()))
|
||||
logic.LogEvent(&models.Event{
|
||||
|
||||
@@ -62,6 +62,7 @@ func (s *sqliteConnector) connect() (*gorm.DB, error) {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
sqlDB.SetMaxOpenConns(1)
|
||||
sqlDB.SetMaxIdleConns(1)
|
||||
|
||||
return db, nil
|
||||
|
||||
@@ -684,6 +684,7 @@ func getExtPeerEgressRoute(node models.Node, extPeer models.ExtClient) (egressRo
|
||||
NodeAddr: node.Address,
|
||||
NodeAddr6: node.Address6,
|
||||
EgressRanges: extPeer.ExtraAllowedIPs,
|
||||
Network: node.Network,
|
||||
}
|
||||
for _, extraAllowedIP := range extPeer.ExtraAllowedIPs {
|
||||
r.EgressRangesWithMetric = append(r.EgressRangesWithMetric, models.EgressRangeMetric{
|
||||
|
||||
+17
-2
@@ -238,14 +238,14 @@ func computeHostPeerInfo(host *schema.Host, allNodes []models.Node, serverInfo m
|
||||
|
||||
// GetPeerUpdateForHost - gets the consolidated peer update for the host from all networks
|
||||
func GetPeerUpdateForHost(network string, host *schema.Host, allNodes []models.Node,
|
||||
deletedNode *models.Node, deletedClients []models.ExtClient) (models.HostPeerUpdate, error) {
|
||||
deletedNode *models.Node, deletedClients []models.ExtClient) (hostPeerUpdate models.HostPeerUpdate, err error) {
|
||||
if host == nil {
|
||||
return models.HostPeerUpdate{}, errors.New("host is nil")
|
||||
}
|
||||
|
||||
// track which nodes are deleted
|
||||
// after peer calculation, if peer not in list, add delete config of peer
|
||||
hostPeerUpdate := models.HostPeerUpdate{
|
||||
hostPeerUpdate = models.HostPeerUpdate{
|
||||
Host: *host,
|
||||
Server: servercfg.GetServer(),
|
||||
ServerVersion: servercfg.GetVersion(),
|
||||
@@ -266,6 +266,9 @@ func GetPeerUpdateForHost(network string, host *schema.Host, allNodes []models.N
|
||||
GwNodes: make(map[schema.NetworkID][]models.Node),
|
||||
AddressIdentityMap: make(map[string]models.PeerIdentity),
|
||||
}
|
||||
defer func() {
|
||||
hostPeerUpdate.EgressRoutes = deduplicateEgressRoutes(hostPeerUpdate.EgressRoutes)
|
||||
}()
|
||||
if host.DNS == "no" {
|
||||
hostPeerUpdate.ManageDNS = false
|
||||
}
|
||||
@@ -931,6 +934,18 @@ func getNodeAllowedIPs(peer, node *models.Node) []net.IPNet {
|
||||
}
|
||||
return allowedips
|
||||
}
|
||||
func deduplicateEgressRoutes(routes []models.EgressNetworkRoutes) []models.EgressNetworkRoutes {
|
||||
seen := make(map[string]struct{}, len(routes))
|
||||
result := make([]models.EgressNetworkRoutes, 0, len(routes))
|
||||
for _, r := range routes {
|
||||
key := r.PeerKey + "|" + r.Network
|
||||
if _, exists := seen[key]; !exists {
|
||||
seen[key] = struct{}{}
|
||||
result = append(result, r)
|
||||
}
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func getCIDRMaskFromAddr(addr string) net.IPMask {
|
||||
cidr := net.CIDRMask(32, 32)
|
||||
|
||||
Reference in New Issue
Block a user