change logging

This commit is contained in:
Pascal Fischer
2025-06-12 14:49:48 +02:00
parent 99304f17af
commit f7d39754d3
38 changed files with 237 additions and 810 deletions
+6 -13
View File
@@ -5,14 +5,12 @@ import (
"os/signal"
"syscall"
log "github.com/sirupsen/logrus"
"github.com/spf13/cobra"
"github.com/netbirdio/management-refactor/internals/server"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage
var newServer = func() server.Server {
return server.NewServer()
}
@@ -26,17 +24,12 @@ var mgmtCmd = &cobra.Command{
Use: "management",
Short: "start NetBird Management Server",
RunE: func(cmd *cobra.Command, args []string) error {
err := logging.Init("logging.yaml")
if err != nil {
log().Debugf("Failed to init logging: %v", err)
}
srv := newServer()
go func() {
log().Info("Starting server on :8080")
log.Info("Starting server on :8080")
if err := srv.Start(); err != nil {
log().Fatalf("Server error: %v", err)
log.Fatalf("Server error: %v", err)
}
}()
@@ -44,11 +37,11 @@ var mgmtCmd = &cobra.Command{
signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM)
<-stopChan
log().Info("Shutting down server...")
log.Info("Shutting down server...")
if err := srv.Stop(); err != nil {
log().Errorf("Error stopping server: %v", err)
log.Errorf("Error stopping server: %v", err)
}
log().Info("Server stopped gracefully.")
log.Info("Server stopped gracefully.")
return nil
},
@@ -3,14 +3,13 @@ package controller
import (
"context"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/controllers/network_map"
"github.com/netbirdio/management-refactor/internals/shared/db"
appmetrics "github.com/netbirdio/management-refactor/internals/shared/metrics"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage
type Controller struct {
repo Repository
metrics *metrics
@@ -20,7 +19,7 @@ type Controller struct {
func NewController(store *db.Store, metrics *appmetrics.AppMetrics, updateChannel network_map.UpdateChannel) *Controller {
cMetrics, err := appmetrics.RegisterMetrics(metrics, newMetrics)
if err != nil {
log().Fatalf("Failed to register app metrics: %v", err)
log.Fatalf("Failed to register app metrics: %v", err)
}
return &Controller{
repo: newRepository(store, cMetrics),
@@ -37,7 +36,7 @@ func (c *Controller) CalculateNetworkMap(accountID string) (*network_map.Network
// Do calc on data
log().Tracef("Calculating network map for account on public")
log.Tracef("Calculating network map for account on public")
return &network_map.NetworkMap{}, nil
}
@@ -45,7 +44,7 @@ func (c *Controller) CalculateNetworkMap(accountID string) (*network_map.Network
func (c *Controller) UpdatePeers(ctx context.Context, accountID string) error {
_, err := c.CalculateNetworkMap(accountID)
if err != nil {
log().Errorf("Failed to calculate network map for account %s: %v", accountID, err)
log.Errorf("Failed to calculate network map for account %s: %v", accountID, err)
return err
}
c.UpdateChannel.SendUpdate(ctx, accountID, &network_map.UpdateMessage{})
@@ -5,15 +5,14 @@ import (
"sync"
"time"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/controllers/network_map"
appmetrics "github.com/netbirdio/management-refactor/internals/shared/metrics"
"github.com/netbirdio/management-refactor/pkg/logging"
)
const channelBufferSize = 100
var log = logging.LoggerForThisPackage
type UpdateChannel struct {
// peerChannels is an update channel indexed by Peer.ID
peerChannels map[string]chan *network_map.UpdateMessage
@@ -27,7 +26,7 @@ type UpdateChannel struct {
func NewUpdateChannel(metrics *appmetrics.AppMetrics) *UpdateChannel {
cMetrics, err := appmetrics.RegisterMetrics(metrics, newMetrics)
if err != nil {
log().Fatalf("Failed to register updatechannel metrics: %v", err)
log.Fatalf("Failed to register updatechannel metrics: %v", err)
}
return &UpdateChannel{
peerChannels: make(map[string]chan *network_map.UpdateMessage),
@@ -38,7 +37,7 @@ func NewUpdateChannel(metrics *appmetrics.AppMetrics) *UpdateChannel {
// SendUpdate sends update message to the peer's channel
func (p *UpdateChannel) SendUpdate(ctx context.Context, peerID string, update *network_map.UpdateMessage) {
log().Debugf("Sending update message to peer %s on public update channel", peerID)
log.Debugf("Sending update message to peer %s on public update channel", peerID)
start := time.Now()
var found, dropped bool
@@ -54,13 +53,13 @@ func (p *UpdateChannel) SendUpdate(ctx context.Context, peerID string, update *n
found = true
select {
case channel <- update:
log().WithContext(ctx).Debugf("update was sent to channel for peer %s", peerID)
log.WithContext(ctx).Debugf("update was sent to channel for peer %s", peerID)
default:
dropped = true
log().WithContext(ctx).Warnf("channel for peer %s is %d full or closed", peerID, len(channel))
log.WithContext(ctx).Warnf("channel for peer %s is %d full or closed", peerID, len(channel))
}
} else {
log().WithContext(ctx).Debugf("peer %s has no channel", peerID)
log.WithContext(ctx).Debugf("peer %s has no channel", peerID)
}
}
@@ -85,7 +84,7 @@ func (p *UpdateChannel) CreateChannel(ctx context.Context, peerID string) chan *
channel := make(chan *network_map.UpdateMessage, channelBufferSize)
p.peerChannels[peerID] = channel
log().WithContext(ctx).Debugf("opened updates channel for a peer %s", peerID)
log.WithContext(ctx).Debugf("opened updates channel for a peer %s", peerID)
return channel
}
@@ -95,11 +94,11 @@ func (p *UpdateChannel) closeChannel(ctx context.Context, peerID string) {
delete(p.peerChannels, peerID)
close(channel)
log().WithContext(ctx).Debugf("closed updates channel of a peer %s", peerID)
log.WithContext(ctx).Debugf("closed updates channel of a peer %s", peerID)
return
}
log().WithContext(ctx).Debugf("closing updates channel: peer %s has no channel", peerID)
log.WithContext(ctx).Debugf("closing updates channel: peer %s has no channel", peerID)
}
// CloseChannels closes updates channel for each given peer
@@ -15,12 +15,12 @@ import (
type managerImpl struct {
repo Repository
activityManager activity.Manager
activityManager *activity.Manager
resourceManager resources.Manager
routerManager routers.Manager
}
func NewManager(repo Repository, activityManager activity.Manager, resourceManager resources.Manager, routerManager routers.Manager) networks.Manager {
func NewManager(repo Repository, activityManager *activity.Manager, resourceManager resources.Manager, routerManager routers.Manager) networks.Manager {
return &managerImpl{
repo: repo,
activityManager: activityManager,
@@ -3,7 +3,6 @@ package resources
import (
"context"
"github.com/netbirdio/management-refactor/internals/modules/networks"
"github.com/netbirdio/management-refactor/internals/shared/db"
)
@@ -11,7 +10,7 @@ type Manager interface {
// Create
// Read
GetNetworkResourcesByNetID(ctx context.Context, tx db.Transaction, lockingStrength db.LockingStrength, network *networks.Network) ([]*NetworkResource, error)
GetNetworkResourcesByNetID(ctx context.Context, tx db.Transaction, lockingStrength db.LockingStrength, id string) ([]*NetworkResource, error)
// Update
@@ -23,12 +23,12 @@ func NewManager(repo Repository, router *mux.Router, networkManager networks.Man
}
}
func (m *managerImpl) GetNetworkResourcesByNetID(ctx context.Context, tx db.Transaction, lockingStrength db.LockingStrength, network *networks.Network) ([]*resources.NetworkResource, error) {
return m.repo.GetResourcesByNetworkID(tx, lockingStrength, network.ID)
func (m *managerImpl) GetNetworkResourcesByNetID(ctx context.Context, tx db.Transaction, lockingStrength db.LockingStrength, id string) ([]*resources.NetworkResource, error) {
return m.repo.GetResourcesByNetworkID(tx, lockingStrength, id)
}
func (m *managerImpl) DeleteResourcesInNetwork(ctx context.Context, tx db.Transaction, network *networks.Network) error {
resources, err := m.GetNetworkResourcesByNetID(ctx, tx, db.LockingStrengthUpdate, network)
func (m *managerImpl) DeleteResourcesInNetwork(ctx context.Context, tx db.Transaction, accountID string, userID string, id string) error {
resources, err := m.GetNetworkResourcesByNetID(ctx, tx, db.LockingStrengthUpdate, id)
if err != nil {
return err
}
@@ -1 +1,33 @@
package manager
import (
"context"
"github.com/netbirdio/management-refactor/internals/modules/networks/routers"
"github.com/netbirdio/management-refactor/internals/shared/db"
)
type managerImpl struct {
repo Repository
}
func NewManager(repo Repository) routers.Manager {
return &managerImpl{
repo: repo,
}
}
func (m managerImpl) GetNetworkRoutersByNetID(ctx context.Context, tx db.Transaction, lockingStrength db.LockingStrength, accountID, userID, networkID string) ([]*routers.NetworkRouter, error) {
// TODO implement me
panic("implement me")
}
func (m managerImpl) DeleteRouter(ctx context.Context, tx db.Transaction, accountID, userID, networkID, routerID string) error {
// TODO implement me
panic("implement me")
}
func (m managerImpl) DeleteRoutersInNetwork(ctx context.Context, tx db.Transaction, accountID, userID, networkID string) error {
// TODO implement me
panic("implement me")
}
@@ -1 +1,21 @@
package manager
import (
"github.com/netbirdio/management-refactor/internals/shared/db"
)
type Repository interface {
Store() *db.Store
}
type repository struct {
store *db.Store
}
func NewRepository(s *db.Store) Repository {
return &repository{store: s}
}
func (r *repository) Store() *db.Store {
return r.store
}
+3 -4
View File
@@ -3,15 +3,14 @@ package manager
import (
"context"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/controllers/network_map"
"github.com/netbirdio/management-refactor/internals/modules/peers"
"github.com/netbirdio/management-refactor/internals/shared/activity"
"github.com/netbirdio/management-refactor/internals/shared/db"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage
var _ peers.Manager = (*Manager)(nil)
type Manager struct {
@@ -25,7 +24,7 @@ func NewManager(repo Repository) *Manager {
}
func (m *Manager) SetNetworkMapController(networkMapController network_map.Controller) {
log().Tracef("Setting network map controller for peers manager")
log.Tracef("Setting network map controller for peers manager")
m.networkMapController = networkMapController
}
@@ -5,11 +5,8 @@ import (
"github.com/netbirdio/management-refactor/internals/modules/users"
"github.com/netbirdio/management-refactor/internals/shared/db"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage()
type Manager struct {
repo Repository
}
@@ -1,6 +1,8 @@
package manager
import (
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/modules/users"
"github.com/netbirdio/management-refactor/internals/shared/db"
)
+5 -3
View File
@@ -7,6 +7,7 @@ import (
"net/http"
"github.com/gorilla/mux"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/shared/activity"
"github.com/netbirdio/management-refactor/internals/shared/activity/sqlite"
@@ -54,13 +55,14 @@ func (s *BaseServer) Router() *mux.Router {
})
}
func (s *BaseServer) EventStore() activity.Store {
return Create(s, func() activity.Store {
func (s *BaseServer) ActivityManager() *activity.Manager {
return Create(s, func() *activity.Manager {
ctx := context.Background()
store, err := sqlite.NewSQLiteStore(ctx, "dataDir", "encryptionKey")
if err != nil {
log.Fatalf("error while creating event store: %s", err)
}
return store
return activity.NewManager(store)
})
}
+11 -1
View File
@@ -5,6 +5,8 @@ import (
"github.com/netbirdio/management-refactor/internals/modules/networks/manager"
"github.com/netbirdio/management-refactor/internals/modules/networks/resources"
resourcesManager "github.com/netbirdio/management-refactor/internals/modules/networks/resources/manager"
"github.com/netbirdio/management-refactor/internals/modules/networks/routers"
routersManager "github.com/netbirdio/management-refactor/internals/modules/networks/routers/manager"
"github.com/netbirdio/management-refactor/internals/modules/peers"
peersManager "github.com/netbirdio/management-refactor/internals/modules/peers/manager"
"github.com/netbirdio/management-refactor/internals/modules/users"
@@ -15,7 +17,7 @@ import (
func (s *BaseServer) NetworksManager() networks.Manager {
return Create(s, func() networks.Manager {
repo := manager.NewRepository(s.Store())
return manager.NewManager(repo)
return manager.NewManager(repo, s.ActivityManager(), s.ResourcesManager(), s.RoutersManager())
})
}
@@ -27,6 +29,14 @@ func (s *BaseServer) ResourcesManager() resources.Manager {
})
}
func (s *BaseServer) RoutersManager() routers.Manager {
return Create(s, func() routers.Manager {
repo := routersManager.NewRepository(s.Store())
manager := routersManager.NewManager(repo)
return manager
})
}
func (s *BaseServer) PermissionsManager() permissions.Manager {
return Create(s, func() permissions.Manager {
return permissions.NewManager(s.UsersManager())
+3 -2
View File
@@ -4,6 +4,8 @@ import (
"context"
"time"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/pkg/logging"
)
@@ -23,10 +25,9 @@ type BaseServer struct {
afterInit []func(s *BaseServer)
}
var log = logging.LoggerForThisPackage()
// NewServer initializes and configures a new Server instance
func NewServer() *BaseServer {
logging.InitFromFile("../management-refactor/pkg/logging/logging.properties")
return &BaseServer{
container: make(map[string]any),
}
+2 -3
View File
@@ -4,13 +4,12 @@ import (
"context"
"time"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/shared/db"
"github.com/netbirdio/management-refactor/pkg/configuration"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage()
type Manager struct {
cfg *config
// eventStore is the event store
@@ -7,11 +7,10 @@ import (
"time"
"github.com/google/uuid"
"github.com/netbirdio/netbird/formatter/hook"
"github.com/netbirdio/netbird/management/server/auth"
nbcontext "github.com/netbirdio/netbird/management/server/context"
"github.com/netbirdio/netbird/management/server/http/middleware/bypass"
"github.com/netbirdio/management-refactor/pkg/logging/hook"
)
// AuthMiddleware middleware to verify personal access tokens (PAT) and JWT tokens
+3 -2
View File
@@ -6,6 +6,7 @@ import (
"path/filepath"
"runtime"
log "github.com/sirupsen/logrus"
"gorm.io/driver/postgres"
"gorm.io/driver/sqlite"
"gorm.io/gorm"
@@ -28,10 +29,10 @@ type DatabaseConn struct {
func NewDatabaseConn(ctx context.Context) (*DatabaseConn, error) {
cfg, err := configuration.Parse[config]()
if err != nil {
log().Fatalf("failed to parse config: %v", err)
log.Fatalf("failed to parse config: %v", err)
}
log().WithContext(ctx).Infof("using %s store engine", cfg.Engine)
log.WithContext(ctx).Infof("using %s store engine", cfg.Engine)
var db *gorm.DB
switch Engine(cfg.Engine) {
-4
View File
@@ -5,12 +5,8 @@ import (
"gorm.io/gorm"
"gorm.io/gorm/clause"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage
type Store struct {
db *gorm.DB
}
+1 -3
View File
@@ -9,6 +9,7 @@ import (
nbcontext "github.com/netbirdio/netbird/management/server/context"
"github.com/netbirdio/netbird/management/server/http/util"
"github.com/netbirdio/netbird/management/server/status"
log "github.com/sirupsen/logrus"
"github.com/netbirdio/management-refactor/internals/modules/users"
"github.com/netbirdio/management-refactor/internals/shared/activity"
@@ -16,11 +17,8 @@ import (
"github.com/netbirdio/management-refactor/internals/shared/permissions/modules"
"github.com/netbirdio/management-refactor/internals/shared/permissions/operations"
"github.com/netbirdio/management-refactor/internals/shared/permissions/roles"
"github.com/netbirdio/management-refactor/pkg/logging"
)
var log = logging.LoggerForThisPackage()
type Manager interface {
WithPermission(module modules.Module, operation operations.Operation, handlerFunc func(w http.ResponseWriter, r *http.Request, auth *nbcontext.UserAuth)) http.HandlerFunc
ValidateUserPermissions(ctx context.Context, accountID, userID string, module modules.Module, operation operations.Operation) (bool, error)
+15
View File
@@ -1,11 +1,26 @@
package main
import (
_ "embed"
"os"
"strings"
"github.com/netbirdio/management-refactor/cmd"
)
//go:embed go.mod
var GoMod string
func ModulePath() string {
lines := strings.Split(GoMod, "\n")
for _, line := range lines {
if strings.HasPrefix(line, "module ") {
return strings.TrimSpace(strings.TrimPrefix(line, "module "))
}
}
return ""
}
func main() {
if err := cmd.Execute(); err != nil {
os.Exit(1)

Some files were not shown because too many files have changed in this diff Show More