Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions cmd/fleet/serve.go
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import (
"database/sql/driver"
"errors"
"fmt"
"log/slog"
"math/rand"
"net/http"
"net/url"
Expand Down Expand Up @@ -1010,7 +1011,7 @@ the way that the Fleet server works.
level.Info(logger).Log("instanceID", instanceID)

// Bootstrap activity bounded context (needed for cron schedules and HTTP routes)
activitySvc, activityRoutes := createActivityBoundedContext(svc, dbConns, logger)
activitySvc, activityRoutes := createActivityBoundedContext(svc, dbConns, logger.SlogLogger())

// Perform a cleanup of cron_stats outside of the cronSchedules because the
// schedule package uses cron_stats entries to decide whether a schedule will
Expand Down Expand Up @@ -1757,7 +1758,7 @@ the way that the Fleet server works.
return serveCmd
}

func createActivityBoundedContext(svc fleet.Service, dbConns *common_mysql.DBConnections, logger kitlog.Logger) (activity_api.Service, endpointer.HandlerRoutesFunc) {
func createActivityBoundedContext(svc fleet.Service, dbConns *common_mysql.DBConnections, logger *slog.Logger) (activity_api.Service, endpointer.HandlerRoutesFunc) {
legacyAuthorizer, err := authz.NewAuthorizer()
if err != nil {
initFatal(err, "initializing activity authorizer")
Expand Down
1 change: 1 addition & 0 deletions server/activity/arch_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@ func TestActivityPackageDependencies(t *testing.T) {
m + "/server/activity/internal/types",
m + "/server/activity/internal/testutils",
m + "/server/platform/http",
m + "/server/platform/logging",
m + "/server/platform/mysql",
m + "/server/platform/mysql/testing_utils",
m + "/server/contexts/ctxerr",
Expand Down
5 changes: 3 additions & 2 deletions server/activity/bootstrap/bootstrap.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
package bootstrap

import (
"log/slog"

"github.com/fleetdm/fleet/v4/server/activity"
"github.com/fleetdm/fleet/v4/server/activity/api"
"github.com/fleetdm/fleet/v4/server/activity/internal/mysql"
Expand All @@ -11,15 +13,14 @@ import (
eu "github.com/fleetdm/fleet/v4/server/platform/endpointer"
platform_mysql "github.com/fleetdm/fleet/v4/server/platform/mysql"
"github.com/go-kit/kit/endpoint"
kitlog "github.com/go-kit/log"
)

// New creates a new activity bounded context and returns its service and route handler.
func New(
dbConns *platform_mysql.DBConnections,
authorizer platform_authz.Authorizer,
providers activity.DataProviders,
logger kitlog.Logger,
logger *slog.Logger,
) (api.Service, func(authMiddleware endpoint.Middleware) eu.HandlerRoutesFunc) {
ds := mysql.NewDatastore(dbConns, logger)
svc := service.NewService(authorizer, ds, providers, logger)
Expand Down
9 changes: 4 additions & 5 deletions server/activity/internal/mysql/activity.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,13 @@ import (
"database/sql"
"encoding/json"
"errors"
"log/slog"
"time"

"github.com/fleetdm/fleet/v4/server/activity/api"
"github.com/fleetdm/fleet/v4/server/activity/internal/types"
"github.com/fleetdm/fleet/v4/server/contexts/ctxerr"
platform_mysql "github.com/fleetdm/fleet/v4/server/platform/mysql"
kitlog "github.com/go-kit/log"
"github.com/go-kit/log/level"
"github.com/jmoiron/sqlx"
"go.opentelemetry.io/otel"
)
Expand All @@ -25,11 +24,11 @@ var tracer = otel.Tracer("github.com/fleetdm/fleet/v4/server/activity/internal/m
type Datastore struct {
primary *sqlx.DB
replica *sqlx.DB
logger kitlog.Logger
logger *slog.Logger
}

// NewDatastore creates a new MySQL datastore for activities.
func NewDatastore(conns *platform_mysql.DBConnections, logger kitlog.Logger) *Datastore {
func NewDatastore(conns *platform_mysql.DBConnections, logger *slog.Logger) *Datastore {
return &Datastore{primary: conns.Primary, replica: conns.Replica, logger: logger}
}

Expand Down Expand Up @@ -228,7 +227,7 @@ func (ds *Datastore) fetchActivityDetails(ctx context.Context, activities []*api
for _, a := range activities {
det, ok := detailsLookup[a.ID]
if !ok {
level.Warn(ds.logger).Log("msg", "Activity details not found", "activity_id", a.ID)
ds.logger.WarnContext(ctx, "Activity details not found", "activity_id", a.ID)
continue
}
a.Details = det
Expand Down
8 changes: 4 additions & 4 deletions server/activity/internal/service/service.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ package service
import (
"context"
"encoding/json"
"log/slog"
"maps"
"slices"
"strconv"
Expand All @@ -14,7 +15,6 @@ import (
"github.com/fleetdm/fleet/v4/server/contexts/ctxerr"
platform_authz "github.com/fleetdm/fleet/v4/server/platform/authz"
"github.com/fleetdm/fleet/v4/server/ptr"
kitlog "github.com/go-kit/log"
"github.com/hashicorp/go-multierror"
)

Expand Down Expand Up @@ -46,11 +46,11 @@ type Service struct {
authz platform_authz.Authorizer
store types.Datastore
providers activity.DataProviders
logger kitlog.Logger
logger *slog.Logger
}

// NewService creates a new activity service.
func NewService(authz platform_authz.Authorizer, store types.Datastore, providers activity.DataProviders, logger kitlog.Logger) *Service {
func NewService(authz platform_authz.Authorizer, store types.Datastore, providers activity.DataProviders, logger *slog.Logger) *Service {
return &Service{
authz: authz,
store: store,
Expand Down Expand Up @@ -226,7 +226,7 @@ func (s *Service) StreamActivities(systemCtx context.Context, auditLogger api.JS
afterID = act.ID
}

s.logger.Log("streamed-events", len(streamedIDs))
s.logger.InfoContext(systemCtx, "streamed events", "count", len(streamedIDs))

// (3) Mark the streamed activities as streamed.
if err := s.store.MarkActivitiesAsStreamed(systemCtx, streamedIDs); err != nil {
Expand Down
7 changes: 4 additions & 3 deletions server/activity/internal/service/service_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,16 @@ import (
"context"
"encoding/json"
"errors"
"log/slog"
"strconv"
"testing"

"github.com/fleetdm/fleet/v4/server/activity"
"github.com/fleetdm/fleet/v4/server/activity/api"
"github.com/fleetdm/fleet/v4/server/activity/internal/types"
platform_authz "github.com/fleetdm/fleet/v4/server/platform/authz"
platformlogging "github.com/fleetdm/fleet/v4/server/platform/logging"
"github.com/fleetdm/fleet/v4/server/ptr"
"github.com/go-kit/log"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -114,7 +115,7 @@ func setupTest(opts ...func(*testSetup)) *testSetup {
for _, opt := range opts {
opt(ts)
}
ts.svc = NewService(ts.authz, ts.ds, ts.providers, log.NewNopLogger())
ts.svc = NewService(ts.authz, ts.ds, ts.providers, slog.New(platformlogging.DiscardHandler{}))
return ts
}

Expand Down Expand Up @@ -482,7 +483,7 @@ func TestStreamActivities(t *testing.T) {
t.Parallel()

newStreamingService := func(ds *mockStreamingDatastore) *Service {
return NewService(&mockAuthorizer{}, ds, &mockDataProviders{mockUserProvider: &mockUserProvider{}, mockHostProvider: &mockHostProvider{}}, log.NewNopLogger())
return NewService(&mockAuthorizer{}, ds, &mockDataProviders{mockUserProvider: &mockUserProvider{}, mockHostProvider: &mockHostProvider{}}, slog.New(platformlogging.DiscardHandler{}))
}

t.Run("basic streaming", func(t *testing.T) {
Expand Down
10 changes: 6 additions & 4 deletions server/activity/internal/testutils/testutils.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,22 @@ package testutils

import (
"encoding/json"
"log/slog"
"testing"
"time"

"github.com/fleetdm/fleet/v4/server/platform/logging"
common_mysql "github.com/fleetdm/fleet/v4/server/platform/mysql"
mysql_testing_utils "github.com/fleetdm/fleet/v4/server/platform/mysql/testing_utils"
"github.com/go-kit/log"
kitlog "github.com/go-kit/log"
"github.com/jmoiron/sqlx"
"github.com/stretchr/testify/require"
)

// TestDB holds the database connection for tests.
type TestDB struct {
DB *sqlx.DB
Logger log.Logger
Logger *slog.Logger
}

// SetupTestDB creates a test database with the Fleet schema loaded.
Expand All @@ -36,7 +38,7 @@ func SetupTestDB(t *testing.T, testNamePrefix string) *TestDB {

return &TestDB{
DB: db,
Logger: log.NewNopLogger(),
Logger: slog.New(logging.DiscardHandler{}),
}
}

Expand All @@ -48,7 +50,7 @@ func (tdb *TestDB) Conns() *common_mysql.DBConnections {
// TruncateTables clears the tables used by activity bounded context.
func (tdb *TestDB) TruncateTables(t *testing.T) {
t.Helper()
mysql_testing_utils.TruncateTables(t, tdb.DB, tdb.Logger, nil, "host_activities", "activities", "hosts", "users")
mysql_testing_utils.TruncateTables(t, tdb.DB, kitlog.NewNopLogger(), nil, "host_activities", "activities", "hosts", "users")

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why are we still sending kitlog here?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We need to rip it out of server/platform/mysql/testing_utils which we haven't done yet.

Since that's outside the activity bounded context, I didn't want to do it in this PR.

}

// InsertUser creates a user in the database and returns the user ID.
Expand Down
4 changes: 3 additions & 1 deletion server/datastore/mysql/testing_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import (
"errors"
"fmt"
"io"
"log/slog"
"os"
"os/exec"
"regexp"
Expand All @@ -34,6 +35,7 @@ import (
nanodep_client "github.com/fleetdm/fleet/v4/server/mdm/nanodep/client"
mdmtesting "github.com/fleetdm/fleet/v4/server/mdm/testing_utils"
platform_authz "github.com/fleetdm/fleet/v4/server/platform/authz"
platformlogging "github.com/fleetdm/fleet/v4/server/platform/logging"
common_mysql "github.com/fleetdm/fleet/v4/server/platform/mysql"
"github.com/fleetdm/fleet/v4/server/platform/mysql/testing_utils"
"github.com/go-kit/log"
Expand Down Expand Up @@ -1018,7 +1020,7 @@ func NewTestActivityService(t testing.TB, ds *Datastore) activity_api.Service {
providers := activityacl.NewFleetServiceAdapter(lookupSvc)

// Create service via bootstrap (the public API for creating the bounded context)
svc, _ := activity_bootstrap.New(dbConns, &testingAuthorizer{}, providers, log.NewNopLogger())
svc, _ := activity_bootstrap.New(dbConns, &testingAuthorizer{}, providers, slog.New(platformlogging.DiscardHandler{}))
return svc
}

Expand Down
2 changes: 1 addition & 1 deletion server/service/testing_utils.go
Original file line number Diff line number Diff line change
Expand Up @@ -468,7 +468,7 @@ func RunServerForTestsWithServiceWithDS(t *testing.T, ctx context.Context, ds fl
opts[0].DBConns,
activityAuthorizer,
activityACLAdapter,
logger,
logger.SlogLogger(),
)
activityAuthMiddleware := func(next endpoint.Endpoint) endpoint.Endpoint {
return auth.AuthenticatedUser(svc, next)
Expand Down
Loading