netbird/management/server
Bethuel Mmbaga 7bda385e1b
[management] Optimize network map updates (#2718)
* Skip peer update on unchanged network map (#2236)

* Enhance network updates by skipping unchanged messages

Optimizes the network update process
by skipping updates where no changes in the peer update message received.

* Add unit tests

* add locks

* Improve concurrency and update peer message handling

* Refactor account manager network update tests

* fix test

* Fix inverted network map update condition

* Add default group and policy to test data

* Run peer updates in a separate goroutine

* Refactor

* Refactor lock

* Fix peers update by including NetworkMap and posture Checks

* go mod tidy

* fix merge

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix merge

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* [management] Skip account peers update if no changes affect peers (#2310)

* Remove incrementing network serial and updating peers after group deletion

* Update account peer if posture check is linked to policy

* Remove account peers update on saving setup key

* Refactor group link checking into re-usable functions

* Add HasPeers function to group

* Refactor group management

* Optimize group change effects on account peers

* Update account peers if ns group has peers

* Refactor group changes

* Optimize account peers update in DNS settings

* Optimize update of account peers on jwt groups sync

* Refactor peer account updates for efficiency

* Optimize peer update on user deletion and changes

* Remove condition check for network serial update

* Optimize account peers updates on route changes

* Remove UpdatePeerSSHKey method

* Remove unused isPolicyRuleGroupsEmpty

* Add tests for peer update behavior on posture check changes

* Add tests for peer update behavior on policy changes

* Add tests for peer update behavior on group changes

* Add tests for peer update behavior on dns settings changes

* Refactor

* Add tests for peer update behavior on name server changes

* Add tests for peer update behavior on user changes

* Add tests for peer update behavior on route changes

* fix tests

* Add tests for peer update behavior on setup key changes

* Add tests for peer update behavior on peers changes

* fix merge

* Fix tests

* go mod tidy

* Add NameServer and Route comparators

* Update network map diff logic with custom comparators

* Add tests

* Refactor duplicate diff handling logic

* fix linter

* fix tests

* Refactor policy group handling and update logic.

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Update route check by checking if group has peers

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Refactor posture check policy linking logic

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Simplify peer update condition in DNS management

Refactor the condition for updating account peers to remove redundant checks

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix merge

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add policy tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add posture checks tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix user and setup key tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix account and route tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix typo

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix nameserver tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix routes tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix group tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* upgrade diff package

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix nameserver tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* use generic differ for netip.Addr and netip.Prefix

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* go mod tidy

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add peer tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix merge

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix management suite tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* fix postgres tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* enable diff nil structs comparison

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* skip the update only last sent the serial is larger

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* refactor peer and user

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* skip spell check for groupD

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Refactor group, ns group, policy and posture checks

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* skip spell check for GroupD

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* update account policy check before verifying policy status

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Update management/server/route_test.go

Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>

* Update management/server/route_test.go

Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>

* Update management/server/route_test.go

Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>

* Update management/server/route_test.go

Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>

* Update management/server/route_test.go

Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>

* add tests missing tests for dns setting groups

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add tests for posture checks changes

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add ns group and policy tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add route and group tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* increase Linux test timeout to 10 minutes

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Run diff for client posture checks only

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* add panic recovery and detailed logging in peer update comparison

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

* Fix tests

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>

---------

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>

---------

Signed-off-by: bcmmbaga <bethuelmbaga12@gmail.com>
Co-authored-by: Maycon Santos <mlsmaycon@gmail.com>
2024-10-23 13:05:02 +03:00
..
account
activity
context
differs [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
geolocation
group [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
http
idp
integrated_validator
integration_reference
jwtclaims
metrics
migration
mock_server [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
peer [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
posture
status
telemetry
testdata [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
testutil
account_request_buffer.go
account_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
account.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
config.go
dns_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
dns.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
ephemeral_test.go
ephemeral.go
event_test.go
event.go
file_store.go
group_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
group.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
grpcserver.go
integrated_validator.go
management_proto_test.go
management_suite_test.go
management_test.go
nameserver_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
nameserver.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
network_test.go
network.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
peer_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
peer.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
personal_access_token_test.go
personal_access_token.go
policy_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
policy.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
posture_checks_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
posture_checks.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
route_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
route.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
scheduler_test.go
scheduler.go
setupkey_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
setupkey.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
sql_store_test.go Fix JSON function compatibility for SQLite and PostgreSQL (#2746) 2024-10-16 17:55:30 +02:00
sql_store.go Fix JSON function compatibility for SQLite and PostgreSQL (#2746) 2024-10-16 17:55:30 +02:00
store_test.go
store.go
token_mgr_test.go
token_mgr.go
updatechannel_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
updatechannel.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
user_test.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00
user.go [management] Optimize network map updates (#2718) 2024-10-23 13:05:02 +03:00