mirror of https://github.com/coder/coder.git
refactor(coderd/telemetry): move CLI telemetry to cli/telemetry (#9517)
This change removes an indirect import of `coderd/database` from the slim binary. No size change (yet). Ref: #9380
This commit is contained in:
parent
b240799f47
commit
adba421524
|
@ -36,7 +36,7 @@ import (
|
||||||
"github.com/coder/coder/v2/cli/cliui"
|
"github.com/coder/coder/v2/cli/cliui"
|
||||||
"github.com/coder/coder/v2/cli/config"
|
"github.com/coder/coder/v2/cli/config"
|
||||||
"github.com/coder/coder/v2/cli/gitauth"
|
"github.com/coder/coder/v2/cli/gitauth"
|
||||||
"github.com/coder/coder/v2/coderd/telemetry"
|
"github.com/coder/coder/v2/cli/telemetry"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
"github.com/coder/coder/v2/codersdk/agentsdk"
|
"github.com/coder/coder/v2/codersdk/agentsdk"
|
||||||
)
|
)
|
||||||
|
@ -467,17 +467,17 @@ func addTelemetryHeader(client *codersdk.Client, inv *clibase.Invocation) {
|
||||||
client.HTTPClient.Transport = transport
|
client.HTTPClient.Transport = transport
|
||||||
}
|
}
|
||||||
|
|
||||||
var topts []telemetry.CLIOption
|
var topts []telemetry.Option
|
||||||
for _, opt := range inv.Command.FullOptions() {
|
for _, opt := range inv.Command.FullOptions() {
|
||||||
if opt.ValueSource == clibase.ValueSourceNone || opt.ValueSource == clibase.ValueSourceDefault {
|
if opt.ValueSource == clibase.ValueSourceNone || opt.ValueSource == clibase.ValueSourceDefault {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
topts = append(topts, telemetry.CLIOption{
|
topts = append(topts, telemetry.Option{
|
||||||
Name: opt.Name,
|
Name: opt.Name,
|
||||||
ValueSource: string(opt.ValueSource),
|
ValueSource: string(opt.ValueSource),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
ti := telemetry.CLIInvocation{
|
ti := telemetry.Invocation{
|
||||||
Command: inv.Command.FullName(),
|
Command: inv.Command.FullName(),
|
||||||
Options: topts,
|
Options: topts,
|
||||||
InvokedAt: time.Now(),
|
InvokedAt: time.Now(),
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
package telemetry
|
||||||
|
|
||||||
|
import "time"
|
||||||
|
|
||||||
|
type Option struct {
|
||||||
|
Name string `json:"name"`
|
||||||
|
ValueSource string `json:"value_source"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type Invocation struct {
|
||||||
|
Command string `json:"command"`
|
||||||
|
Options []Option `json:"options"`
|
||||||
|
// InvokedAt is provided for deduplication purposes.
|
||||||
|
InvokedAt time.Time `json:"invoked_at"`
|
||||||
|
}
|
|
@ -11,6 +11,7 @@ import (
|
||||||
"tailscale.com/tstime/rate"
|
"tailscale.com/tstime/rate"
|
||||||
|
|
||||||
"cdr.dev/slog"
|
"cdr.dev/slog"
|
||||||
|
clitelemetry "github.com/coder/coder/v2/cli/telemetry"
|
||||||
"github.com/coder/coder/v2/coderd/telemetry"
|
"github.com/coder/coder/v2/coderd/telemetry"
|
||||||
"github.com/coder/coder/v2/codersdk"
|
"github.com/coder/coder/v2/codersdk"
|
||||||
)
|
)
|
||||||
|
@ -30,7 +31,7 @@ func ReportCLITelemetry(log slog.Logger, rep telemetry.Reporter) func(http.Handl
|
||||||
//
|
//
|
||||||
// This approach just helps us reduce storage and ingest fees, and doesn't
|
// This approach just helps us reduce storage and ingest fees, and doesn't
|
||||||
// change the correctness.
|
// change the correctness.
|
||||||
queue = make(map[string]telemetry.CLIInvocation)
|
queue = make(map[string]clitelemetry.Invocation)
|
||||||
)
|
)
|
||||||
|
|
||||||
log = log.Named("cli-telemetry")
|
log = log.Named("cli-telemetry")
|
||||||
|
@ -55,7 +56,7 @@ func ReportCLITelemetry(log slog.Logger, rep telemetry.Reporter) func(http.Handl
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var inv telemetry.CLIInvocation
|
var inv clitelemetry.Invocation
|
||||||
err = json.Unmarshal(byt, &inv)
|
err = json.Unmarshal(byt, &inv)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(
|
log.Error(
|
||||||
|
|
|
@ -23,6 +23,7 @@ import (
|
||||||
|
|
||||||
"cdr.dev/slog"
|
"cdr.dev/slog"
|
||||||
"github.com/coder/coder/v2/buildinfo"
|
"github.com/coder/coder/v2/buildinfo"
|
||||||
|
clitelemetry "github.com/coder/coder/v2/cli/telemetry"
|
||||||
"github.com/coder/coder/v2/coderd/database"
|
"github.com/coder/coder/v2/coderd/database"
|
||||||
"github.com/coder/coder/v2/coderd/database/dbtime"
|
"github.com/coder/coder/v2/coderd/database/dbtime"
|
||||||
)
|
)
|
||||||
|
@ -714,7 +715,7 @@ type Snapshot struct {
|
||||||
WorkspaceResources []WorkspaceResource `json:"workspace_resources"`
|
WorkspaceResources []WorkspaceResource `json:"workspace_resources"`
|
||||||
WorkspaceResourceMetadata []WorkspaceResourceMetadata `json:"workspace_resource_metadata"`
|
WorkspaceResourceMetadata []WorkspaceResourceMetadata `json:"workspace_resource_metadata"`
|
||||||
WorkspaceProxies []WorkspaceProxy `json:"workspace_proxies"`
|
WorkspaceProxies []WorkspaceProxy `json:"workspace_proxies"`
|
||||||
CLIInvocations []CLIInvocation `json:"cli_invocations"`
|
CLIInvocations []clitelemetry.Invocation `json:"cli_invocations"`
|
||||||
}
|
}
|
||||||
|
|
||||||
// Deployment contains information about the host running Coder.
|
// Deployment contains information about the host running Coder.
|
||||||
|
@ -890,18 +891,6 @@ type License struct {
|
||||||
UUID uuid.UUID `json:"uuid"`
|
UUID uuid.UUID `json:"uuid"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CLIOption struct {
|
|
||||||
Name string `json:"name"`
|
|
||||||
ValueSource string `json:"value_source"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type CLIInvocation struct {
|
|
||||||
Command string `json:"command"`
|
|
||||||
Options []CLIOption `json:"options"`
|
|
||||||
// InvokedAt is provided for deduplication purposes.
|
|
||||||
InvokedAt time.Time `json:"invoked_at"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type WorkspaceProxy struct {
|
type WorkspaceProxy struct {
|
||||||
ID uuid.UUID `json:"id"`
|
ID uuid.UUID `json:"id"`
|
||||||
Name string `json:"name"`
|
Name string `json:"name"`
|
||||||
|
|
Loading…
Reference in New Issue