mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
chore: wire up usage tracking for managed agents (#19096)
Wires up the usage collector and publisher to coderd. Relates to coder/internal#814
This commit is contained in:
@@ -23,6 +23,7 @@ import (
|
||||
"github.com/coder/coder/v2/coderd/oauth2provider"
|
||||
"github.com/coder/coder/v2/coderd/pproflabel"
|
||||
"github.com/coder/coder/v2/coderd/prebuilds"
|
||||
"github.com/coder/coder/v2/coderd/usage"
|
||||
"github.com/coder/coder/v2/coderd/wsbuilder"
|
||||
|
||||
"github.com/andybalholm/brotli"
|
||||
@@ -200,6 +201,7 @@ type Options struct {
|
||||
TemplateScheduleStore *atomic.Pointer[schedule.TemplateScheduleStore]
|
||||
UserQuietHoursScheduleStore *atomic.Pointer[schedule.UserQuietHoursScheduleStore]
|
||||
AccessControlStore *atomic.Pointer[dbauthz.AccessControlStore]
|
||||
UsageInserter *atomic.Pointer[usage.Inserter]
|
||||
// CoordinatorResumeTokenProvider is used to provide and validate resume
|
||||
// tokens issued by and passed to the coordinator DRPC API.
|
||||
CoordinatorResumeTokenProvider tailnet.ResumeTokenProvider
|
||||
@@ -428,6 +430,13 @@ func New(options *Options) *API {
|
||||
v := schedule.NewAGPLUserQuietHoursScheduleStore()
|
||||
options.UserQuietHoursScheduleStore.Store(&v)
|
||||
}
|
||||
if options.UsageInserter == nil {
|
||||
options.UsageInserter = &atomic.Pointer[usage.Inserter]{}
|
||||
}
|
||||
if options.UsageInserter.Load() == nil {
|
||||
inserter := usage.NewAGPLInserter()
|
||||
options.UsageInserter.Store(&inserter)
|
||||
}
|
||||
if options.OneTimePasscodeValidityPeriod == 0 {
|
||||
options.OneTimePasscodeValidityPeriod = 20 * time.Minute
|
||||
}
|
||||
@@ -590,6 +599,7 @@ func New(options *Options) *API {
|
||||
UserQuietHoursScheduleStore: options.UserQuietHoursScheduleStore,
|
||||
AccessControlStore: options.AccessControlStore,
|
||||
BuildUsageChecker: &buildUsageChecker,
|
||||
UsageInserter: options.UsageInserter,
|
||||
FileCache: files.New(options.PrometheusRegistry, options.Authorizer),
|
||||
Experiments: experiments,
|
||||
WebpushDispatcher: options.WebPushDispatcher,
|
||||
@@ -1690,6 +1700,9 @@ type API struct {
|
||||
// BuildUsageChecker is a pointer as it's passed around to multiple
|
||||
// components.
|
||||
BuildUsageChecker *atomic.Pointer[wsbuilder.UsageChecker]
|
||||
// UsageInserter is a pointer to an atomic pointer because it is passed to
|
||||
// multiple components.
|
||||
UsageInserter *atomic.Pointer[usage.Inserter]
|
||||
|
||||
UpdatesProvider tailnet.WorkspaceUpdatesProvider
|
||||
|
||||
@@ -1905,6 +1918,7 @@ func (api *API) CreateInMemoryTaggedProvisionerDaemon(dialCtx context.Context, n
|
||||
&api.Auditor,
|
||||
api.TemplateScheduleStore,
|
||||
api.UserQuietHoursScheduleStore,
|
||||
api.UsageInserter,
|
||||
api.DeploymentValues,
|
||||
provisionerdserver.Options{
|
||||
OIDCConfig: api.OIDCConfig,
|
||||
|
||||
Reference in New Issue
Block a user