Skip to content

Commit cc97cff

Browse files
[management] move network map logic into new design (#4774)
1 parent c282756 commit cc97cff

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

62 files changed

+2568
-1989
lines changed

client/cmd/testutil_test.go

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,9 @@ import (
1212
"google.golang.org/grpc"
1313

1414
"github.com/netbirdio/management-integrations/integrations"
15+
"github.com/netbirdio/netbird/management/internals/controllers/network_map/controller"
16+
"github.com/netbirdio/netbird/management/internals/controllers/network_map/update_channel"
17+
nbgrpc "github.com/netbirdio/netbird/management/internals/shared/grpc"
1518

1619
clientProto "github.com/netbirdio/netbird/client/proto"
1720
client "github.com/netbirdio/netbird/client/server"
@@ -84,7 +87,6 @@ func startManagement(t *testing.T, config *config.Config, testFile string) (*grp
8487
}
8588
t.Cleanup(cleanUp)
8689

87-
peersUpdateManager := mgmt.NewPeersUpdateManager(nil)
8890
eventStore := &activity.InMemoryEventStore{}
8991
if err != nil {
9092
return nil, nil
@@ -110,13 +112,18 @@ func startManagement(t *testing.T, config *config.Config, testFile string) (*grp
110112
Return(&types.Settings{}, nil).
111113
AnyTimes()
112114

113-
accountManager, err := mgmt.BuildManager(context.Background(), store, peersUpdateManager, nil, "", "netbird.selfhosted", eventStore, nil, false, iv, metrics, port_forwarding.NewControllerMock(), settingsMockManager, permissionsManagerMock, false)
115+
ctx := context.Background()
116+
updateManager := update_channel.NewPeersUpdateManager(metrics)
117+
requestBuffer := mgmt.NewAccountRequestBuffer(ctx, store)
118+
networkMapController := controller.NewController(ctx, store, metrics, updateManager, requestBuffer, mgmt.MockIntegratedValidator{}, settingsMockManager, "netbird.cloud", port_forwarding.NewControllerMock())
119+
120+
accountManager, err := mgmt.BuildManager(context.Background(), store, networkMapController, nil, "", eventStore, nil, false, iv, metrics, port_forwarding.NewControllerMock(), settingsMockManager, permissionsManagerMock, false)
114121
if err != nil {
115122
t.Fatal(err)
116123
}
117124

118-
secretsManager := mgmt.NewTimeBasedAuthSecretsManager(peersUpdateManager, config.TURNConfig, config.Relay, settingsMockManager, groupsManager)
119-
mgmtServer, err := mgmt.NewServer(context.Background(), config, accountManager, settingsMockManager, peersUpdateManager, secretsManager, nil, &manager.EphemeralManager{}, nil, &mgmt.MockIntegratedValidator{})
125+
secretsManager := nbgrpc.NewTimeBasedAuthSecretsManager(updateManager, config.TURNConfig, config.Relay, settingsMockManager, groupsManager)
126+
mgmtServer, err := nbgrpc.NewServer(config, accountManager, settingsMockManager, updateManager, secretsManager, nil, &manager.EphemeralManager{}, nil, &mgmt.MockIntegratedValidator{}, networkMapController)
120127
if err != nil {
121128
t.Fatal(err)
122129
}

client/internal/engine_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ import (
2626
"google.golang.org/grpc/keepalive"
2727

2828
"github.com/netbirdio/management-integrations/integrations"
29+
"github.com/netbirdio/netbird/management/internals/controllers/network_map/controller"
30+
"github.com/netbirdio/netbird/management/internals/controllers/network_map/update_channel"
31+
nbgrpc "github.com/netbirdio/netbird/management/internals/shared/grpc"
2932

3033
"github.com/netbirdio/netbird/management/internals/server/config"
3134
"github.com/netbirdio/netbird/management/server/groups"
@@ -1556,7 +1559,6 @@ func startManagement(t *testing.T, dataDir, testFile string) (*grpc.Server, stri
15561559
}
15571560
t.Cleanup(cleanUp)
15581561

1559-
peersUpdateManager := server.NewPeersUpdateManager(nil)
15601562
eventStore := &activity.InMemoryEventStore{}
15611563
if err != nil {
15621564
return nil, "", err
@@ -1584,13 +1586,16 @@ func startManagement(t *testing.T, dataDir, testFile string) (*grpc.Server, stri
15841586

15851587
groupsManager := groups.NewManagerMock()
15861588

1587-
accountManager, err := server.BuildManager(context.Background(), store, peersUpdateManager, nil, "", "netbird.selfhosted", eventStore, nil, false, ia, metrics, port_forwarding.NewControllerMock(), settingsMockManager, permissionsManager, false)
1589+
updateManager := update_channel.NewPeersUpdateManager(metrics)
1590+
requestBuffer := server.NewAccountRequestBuffer(context.Background(), store)
1591+
networkMapController := controller.NewController(context.Background(), store, metrics, updateManager, requestBuffer, server.MockIntegratedValidator{}, settingsMockManager, "netbird.selfhosted", port_forwarding.NewControllerMock())
1592+
accountManager, err := server.BuildManager(context.Background(), store, networkMapController, nil, "", eventStore, nil, false, ia, metrics, port_forwarding.NewControllerMock(), settingsMockManager, permissionsManager, false)
15881593
if err != nil {
15891594
return nil, "", err
15901595
}
15911596

1592-
secretsManager := server.NewTimeBasedAuthSecretsManager(peersUpdateManager, config.TURNConfig, config.Relay, settingsMockManager, groupsManager)
1593-
mgmtServer, err := server.NewServer(context.Background(), config, accountManager, settingsMockManager, peersUpdateManager, secretsManager, nil, &manager.EphemeralManager{}, nil, &server.MockIntegratedValidator{})
1597+
secretsManager := nbgrpc.NewTimeBasedAuthSecretsManager(updateManager, config.TURNConfig, config.Relay, settingsMockManager, groupsManager)
1598+
mgmtServer, err := nbgrpc.NewServer(config, accountManager, settingsMockManager, updateManager, secretsManager, nil, &manager.EphemeralManager{}, nil, &server.MockIntegratedValidator{}, networkMapController)
15941599
if err != nil {
15951600
return nil, "", err
15961601
}

client/server/server_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,9 @@ import (
1414
"go.opentelemetry.io/otel"
1515

1616
"github.com/netbirdio/management-integrations/integrations"
17+
"github.com/netbirdio/netbird/management/internals/controllers/network_map/controller"
18+
"github.com/netbirdio/netbird/management/internals/controllers/network_map/update_channel"
19+
nbgrpc "github.com/netbirdio/netbird/management/internals/shared/grpc"
1720

1821
"github.com/netbirdio/netbird/management/internals/server/config"
1922
"github.com/netbirdio/netbird/management/server/groups"
@@ -290,7 +293,6 @@ func startManagement(t *testing.T, signalAddr string, counter *int) (*grpc.Serve
290293
}
291294
t.Cleanup(cleanUp)
292295

293-
peersUpdateManager := server.NewPeersUpdateManager(nil)
294296
eventStore := &activity.InMemoryEventStore{}
295297
if err != nil {
296298
return nil, "", err
@@ -311,13 +313,16 @@ func startManagement(t *testing.T, signalAddr string, counter *int) (*grpc.Serve
311313
settingsMockManager := settings.NewMockManager(ctrl)
312314
groupsManager := groups.NewManagerMock()
313315

314-
accountManager, err := server.BuildManager(context.Background(), store, peersUpdateManager, nil, "", "netbird.selfhosted", eventStore, nil, false, ia, metrics, port_forwarding.NewControllerMock(), settingsMockManager, permissionsManagerMock, false)
316+
requestBuffer := server.NewAccountRequestBuffer(context.Background(), store)
317+
peersUpdateManager := update_channel.NewPeersUpdateManager(metrics)
318+
networkMapController := controller.NewController(context.Background(), store, metrics, peersUpdateManager, requestBuffer, server.MockIntegratedValidator{}, settingsMockManager, "netbird.selfhosted", port_forwarding.NewControllerMock())
319+
accountManager, err := server.BuildManager(context.Background(), store, networkMapController, nil, "", eventStore, nil, false, ia, metrics, port_forwarding.NewControllerMock(), settingsMockManager, permissionsManagerMock, false)
315320
if err != nil {
316321
return nil, "", err
317322
}
318323

319-
secretsManager := server.NewTimeBasedAuthSecretsManager(peersUpdateManager, config.TURNConfig, config.Relay, settingsMockManager, groupsManager)
320-
mgmtServer, err := server.NewServer(context.Background(), config, accountManager, settingsMockManager, peersUpdateManager, secretsManager, nil, &manager.EphemeralManager{}, nil, &server.MockIntegratedValidator{})
324+
secretsManager := nbgrpc.NewTimeBasedAuthSecretsManager(peersUpdateManager, config.TURNConfig, config.Relay, settingsMockManager, groupsManager)
325+
mgmtServer, err := nbgrpc.NewServer(config, accountManager, settingsMockManager, peersUpdateManager, secretsManager, nil, &manager.EphemeralManager{}, nil, &server.MockIntegratedValidator{}, networkMapController)
321326
if err != nil {
322327
return nil, "", err
323328
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@ require (
9999
go.opentelemetry.io/otel/exporters/prometheus v0.48.0
100100
go.opentelemetry.io/otel/metric v1.35.0
101101
go.opentelemetry.io/otel/sdk/metric v1.35.0
102+
go.uber.org/mock v0.5.0
102103
go.uber.org/zap v1.27.0
103104
goauthentik.io/api/v3 v3.2023051.3
104105
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842
@@ -242,7 +243,6 @@ require (
242243
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.51.0 // indirect
243244
go.opentelemetry.io/otel/sdk v1.35.0 // indirect
244245
go.opentelemetry.io/otel/trace v1.35.0 // indirect
245-
go.uber.org/mock v0.5.0 // indirect
246246
go.uber.org/multierr v1.11.0 // indirect
247247
golang.org/x/image v0.18.0 // indirect
248248
golang.org/x/text v0.27.0 // indirect
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package cache
2+
3+
import (
4+
"sync"
5+
6+
"github.com/netbirdio/netbird/shared/management/proto"
7+
)
8+
9+
// DNSConfigCache is a thread-safe cache for DNS configuration components
10+
type DNSConfigCache struct {
11+
NameServerGroups sync.Map
12+
}
13+
14+
// GetNameServerGroup retrieves a cached name server group
15+
func (c *DNSConfigCache) GetNameServerGroup(key string) (*proto.NameServerGroup, bool) {
16+
if c == nil {
17+
return nil, false
18+
}
19+
if value, ok := c.NameServerGroups.Load(key); ok {
20+
return value.(*proto.NameServerGroup), true
21+
}
22+
return nil, false
23+
}
24+
25+
// SetNameServerGroup stores a name server group in the cache
26+
func (c *DNSConfigCache) SetNameServerGroup(key string, value *proto.NameServerGroup) {
27+
if c == nil {
28+
return
29+
}
30+
c.NameServerGroups.Store(key, value)
31+
}

0 commit comments

Comments
 (0)