hookup validated peers

This commit is contained in:
pascal
2026-08-03 21:47:41 +02:00
parent 1f190a50cf
commit 2c85d94c6c
3 changed files with 37 additions and 6 deletions
@@ -65,7 +65,7 @@ type Controller struct {
perAccountServerSupportedSyncMessageVersions map[string]sharedgrpc.SyncMessageVersion perAccountServerSupportedSyncMessageVersions map[string]sharedgrpc.SyncMessageVersion
nmdataStore networkmapdb.NetworkMapDBStore nmdataStore *networkmapdb.NetworkMapDBStoreImpl
} }
type bufferUpdate struct { type bufferUpdate struct {
@@ -83,7 +83,7 @@ type bufferAffectedUpdate struct {
var _ network_map.Controller = (*Controller)(nil) var _ network_map.Controller = (*Controller)(nil)
func NewController(ctx context.Context, store store.Store, metrics telemetry.AppMetrics, peersUpdateManager network_map.PeersUpdateManager, requestBuffer account.RequestBuffer, integratedPeerValidator integrated_validator.IntegratedValidator, settingsManager settings.Manager, dnsDomain string, proxyController port_forwarding.Controller, ephemeralPeersManager ephemeral.Manager, config *config.Config, nmdataStore networkmapdb.NetworkMapDBStore) *Controller { func NewController(ctx context.Context, store store.Store, metrics telemetry.AppMetrics, peersUpdateManager network_map.PeersUpdateManager, requestBuffer account.RequestBuffer, integratedPeerValidator integrated_validator.IntegratedValidator, settingsManager settings.Manager, dnsDomain string, proxyController port_forwarding.Controller, ephemeralPeersManager ephemeral.Manager, config *config.Config, nmdataStore *networkmapdb.NetworkMapDBStoreImpl) *Controller {
nMetrics, err := newMetrics(metrics.UpdateChannelMetrics()) nMetrics, err := newMetrics(metrics.UpdateChannelMetrics())
if err != nil { if err != nil {
log.Fatal(fmt.Errorf("error creating metrics: %w", err)) log.Fatal(fmt.Errorf("error creating metrics: %w", err))
@@ -8,10 +8,13 @@ import (
"reflect" "reflect"
"strings" "strings"
"github.com/rs/xid"
"golang.org/x/exp/maps"
"github.com/netbirdio/management-integrations/integrations"
"github.com/netbirdio/netbird/management/server/integrations/integrated_validator" "github.com/netbirdio/netbird/management/server/integrations/integrated_validator"
"github.com/netbirdio/netbird/shared/management/networkmap" "github.com/netbirdio/netbird/shared/management/networkmap"
"github.com/netbirdio/netbird/shared/management/networkmap/nmdata" "github.com/netbirdio/netbird/shared/management/networkmap/nmdata"
"github.com/rs/xid"
) )
const ( const (
@@ -40,6 +43,34 @@ type NetworkMapDBStore interface {
type NetworkMapDBStoreImpl struct { type NetworkMapDBStoreImpl struct {
store NetworkMapDBStore store NetworkMapDBStore
integratedPeerValidator integrated_validator.IntegratedValidator integratedPeerValidator integrated_validator.IntegratedValidator
extraSettingsManager integrations.Manager
}
func NewNetworkMapDBStoreImpl(store NetworkMapDBStore, integratedPeerValidator integrated_validator.IntegratedValidator, extraSettingsManager integrations.Manager) *NetworkMapDBStoreImpl {
return &NetworkMapDBStoreImpl{
store: store,
integratedPeerValidator: integratedPeerValidator,
extraSettingsManager: extraSettingsManager,
}
}
func (s *NetworkMapDBStoreImpl) GetNetworkMapData(ctx context.Context, accountId string) (*networkmap.NetworkMapData, error) {
nmdata, err := s.store.GetNetworkMapData(ctx, accountId)
if err != nil {
return nil, err
}
extraSettings, err := s.extraSettingsManager.GetExtraSettings(ctx, accountId)
if err != nil {
return nil, err
}
nmdata.ValidatedPeers, err = s.integratedPeerValidator.GetValidatedPeers(ctx, accountId, maps.Values(nmdata.Groups), maps.Values(nmdata.Peers), extraSettings)
if err != nil {
return nil, err
}
return nmdata, nil
} }
func FromSqlTypesToSharedTypes(src reflect.Value, dst reflect.Value) error { func FromSqlTypesToSharedTypes(src reflect.Value, dst reflect.Value) error {
+3 -3
View File
@@ -102,8 +102,8 @@ func (s *BaseServer) Store() store.Store {
}) })
} }
func (s *BaseServer) NetworkMapStore() networkmapdb.NetworkMapDBStore { func (s *BaseServer) NetworkMapStore() *networkmapdb.NetworkMapDBStoreImpl {
return Create(s, func() networkmapdb.NetworkMapDBStore { return Create(s, func() *networkmapdb.NetworkMapDBStoreImpl {
dsn := os.Getenv("NETBIRD_NMAP_STORE_DSN") // Todo: this needs to be hoocked up properly dsn := os.Getenv("NETBIRD_NMAP_STORE_DSN") // Todo: this needs to be hoocked up properly
if dsn == "" { if dsn == "" {
return nil return nil
@@ -114,7 +114,7 @@ func (s *BaseServer) NetworkMapStore() networkmapdb.NetworkMapDBStore {
log.Fatalf("failed to create network map store: %v", err) log.Fatalf("failed to create network map store: %v", err)
} }
return store return networkmapdb.NewNetworkMapDBStoreImpl(store, s.IntegratedValidator(), s.SettingsManager())
}) })
} }