refactor components creation

This commit is contained in:
crn4
2026-01-08 17:34:53 +01:00
parent 7b5d7aeb2e
commit ca432ff681
+25 -50
View File
@@ -30,13 +30,13 @@ func (a *Account) GetPeerNetworkMapComponents(
} }
components := &NetworkMapComponents{ components := &NetworkMapComponents{
PeerID: peerID, PeerID: peerID,
Serial: a.Network.Serial, Serial: a.Network.Serial,
Network: a.Network.Copy(), Network: a.Network.Copy(),
Peers: make(map[string]*nbpeer.Peer, len(a.Peers)/4), // Peers: make(map[string]*nbpeer.Peer, len(a.Peers)/4),
Groups: make(map[string]*Group, len(a.Groups)/4), // Groups: make(map[string]*Group, len(a.Groups)/4),
Policies: make([]*Policy, 0, len(a.Policies)/4), // Policies: make([]*Policy, 0, len(a.Policies)/4),
Routes: make([]*route.Route, 0, len(a.Routes)/4), // Routes: make([]*route.Route, 0, len(a.Routes)/4),
NameServerGroups: make([]*nbdns.NameServerGroup, 0), NameServerGroups: make([]*nbdns.NameServerGroup, 0),
CustomZoneDomain: peersCustomZone.Domain, CustomZoneDomain: peersCustomZone.Domain,
AllDNSRecords: peersCustomZone.Records, AllDNSRecords: peersCustomZone.Records,
@@ -58,40 +58,11 @@ func (a *Account) GetPeerNetworkMapComponents(
relevantPeers, relevantGroups, relevantPolicies, relevantRoutes := a.getPeersGroupsPoliciesRoutes(ctx, peerID, validatedPeersMap) relevantPeers, relevantGroups, relevantPolicies, relevantRoutes := a.getPeersGroupsPoliciesRoutes(ctx, peerID, validatedPeersMap)
_, _, networkResourcesSourcePeers := a.GetNetworkResourcesRoutesToSync(ctx, peerID, resourcePolicies, routers)
for sourcePeerID := range networkResourcesSourcePeers {
relevantPeers[sourcePeerID] = a.GetPeer(sourcePeerID)
}
// for pid := range relevantPeerIDsMap {
// if p := a.Peers[pid]; p != nil {
// components.Peers[pid] = p
// }
// }
// for gid := range relevantGroupIDs {
// if g := a.Groups[gid]; g != nil {
// components.Groups[gid] = g
// }
// }
components.Peers = relevantPeers components.Peers = relevantPeers
components.Groups = relevantGroups components.Groups = relevantGroups
components.Policies = relevantPolicies components.Policies = relevantPolicies
components.Routes = relevantRoutes components.Routes = relevantRoutes
// for _, policy := range a.Policies {
// if a.isPolicyRelevantForPeer(ctx, policy, peerID, relevantGroupIDs) {
// components.Policies = append(components.Policies, policy)
// }
// }
// for _, r := range a.Routes {
// if a.isRouteRelevantForPeer(ctx, r, peerID, relevantGroupIDs) {
// components.Routes = append(components.Routes, r)
// }
// }
for _, nsGroup := range a.NameServerGroups { for _, nsGroup := range a.NameServerGroups {
if nsGroup.Enabled { if nsGroup.Enabled {
for _, gID := range nsGroup.Groups { for _, gID := range nsGroup.Groups {
@@ -103,8 +74,8 @@ func (a *Account) GetPeerNetworkMapComponents(
} }
} }
relevantResourceIDs := make(map[string]struct{}) relevantResourceIDs := make(map[string]struct{}, len(a.NetworkResources))
relevantNetworkIDs := make(map[string]struct{}) relevantNetworkIDs := make(map[string]struct{}, len(a.NetworkResources))
for _, resource := range a.NetworkResources { for _, resource := range a.NetworkResources {
if !resource.Enabled { if !resource.Enabled {
@@ -117,33 +88,37 @@ func (a *Account) GetPeerNetworkMapComponents(
} }
isRelevant := false isRelevant := false
isRouter := false
networkRoutingPeers, routerExists := routers[resource.NetworkID] networkRoutingPeers, routerExists := routers[resource.NetworkID]
if routerExists { if routerExists {
if _, ok := networkRoutingPeers[peerID]; ok { if _, ok := networkRoutingPeers[peerID]; ok {
isRelevant = true isRelevant = true
isRouter = true
} }
} }
if !isRelevant { for _, policy := range policies {
for _, policy := range policies { var peers []string
var peers []string if policy.Rules[0].SourceResource.Type == ResourceTypePeer && policy.Rules[0].SourceResource.ID != "" {
if policy.Rules[0].SourceResource.Type == ResourceTypePeer && policy.Rules[0].SourceResource.ID != "" { peers = []string{policy.Rules[0].SourceResource.ID}
peers = []string{policy.Rules[0].SourceResource.ID} } else {
} else { peers = a.getUniquePeerIDsFromGroupsIDs(ctx, policy.SourceGroups())
peers = a.getUniquePeerIDsFromGroupsIDs(ctx, policy.SourceGroups()) }
}
if isRouter {
for _, pID := range a.getPostureValidPeers(peers, policy.SourcePostureChecks) {
if _, exists := components.Peers[pID]; !exists {
components.Peers[pID] = a.GetPeer(pID)
}
}
} else if !isRelevant {
for _, p := range peers { for _, p := range peers {
if p == peerID && a.validatePostureChecksOnPeer(ctx, policy.SourcePostureChecks, peerID) { if p == peerID && a.validatePostureChecksOnPeer(ctx, policy.SourcePostureChecks, peerID) {
isRelevant = true isRelevant = true
break break
} }
} }
if isRelevant {
break
}
} }
} }