From 2c85d94c6c3e848bb084730c087a7fdcbfe94079 Mon Sep 17 00:00:00 2001 From: pascal Date: Mon, 3 Aug 2026 21:47:41 +0200 Subject: [PATCH] hookup validated peers --- .../network_map/controller/controller.go | 4 +-- .../internals/network_map_db/db_store.go | 33 ++++++++++++++++++- management/internals/server/boot.go | 6 ++-- 3 files changed, 37 insertions(+), 6 deletions(-) diff --git a/management/internals/controllers/network_map/controller/controller.go b/management/internals/controllers/network_map/controller/controller.go index 91957bae5..dac3f6990 100644 --- a/management/internals/controllers/network_map/controller/controller.go +++ b/management/internals/controllers/network_map/controller/controller.go @@ -65,7 +65,7 @@ type Controller struct { perAccountServerSupportedSyncMessageVersions map[string]sharedgrpc.SyncMessageVersion - nmdataStore networkmapdb.NetworkMapDBStore + nmdataStore *networkmapdb.NetworkMapDBStoreImpl } type bufferUpdate struct { @@ -83,7 +83,7 @@ type bufferAffectedUpdate struct { 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()) if err != nil { log.Fatal(fmt.Errorf("error creating metrics: %w", err)) diff --git a/management/internals/network_map_db/db_store.go b/management/internals/network_map_db/db_store.go index c8ba94b80..73282cdfb 100644 --- a/management/internals/network_map_db/db_store.go +++ b/management/internals/network_map_db/db_store.go @@ -8,10 +8,13 @@ import ( "reflect" "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/shared/management/networkmap" "github.com/netbirdio/netbird/shared/management/networkmap/nmdata" - "github.com/rs/xid" ) const ( @@ -40,6 +43,34 @@ type NetworkMapDBStore interface { type NetworkMapDBStoreImpl struct { store NetworkMapDBStore 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 { diff --git a/management/internals/server/boot.go b/management/internals/server/boot.go index 5bc755754..ed4d22a8d 100644 --- a/management/internals/server/boot.go +++ b/management/internals/server/boot.go @@ -102,8 +102,8 @@ func (s *BaseServer) Store() store.Store { }) } -func (s *BaseServer) NetworkMapStore() networkmapdb.NetworkMapDBStore { - return Create(s, func() networkmapdb.NetworkMapDBStore { +func (s *BaseServer) NetworkMapStore() *networkmapdb.NetworkMapDBStoreImpl { + return Create(s, func() *networkmapdb.NetworkMapDBStoreImpl { dsn := os.Getenv("NETBIRD_NMAP_STORE_DSN") // Todo: this needs to be hoocked up properly if dsn == "" { return nil @@ -114,7 +114,7 @@ func (s *BaseServer) NetworkMapStore() networkmapdb.NetworkMapDBStore { log.Fatalf("failed to create network map store: %v", err) } - return store + return networkmapdb.NewNetworkMapDBStoreImpl(store, s.IntegratedValidator(), s.SettingsManager()) }) }