Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit3a1fa04

Browse files
authored
fix: write server config to telemetry (#13590)
* fix: add external auth configs to telemetry* Refactor telemetry to send the entire config* gen* Fix linting
1 parentd0b2f61 commit3a1fa04

File tree

10 files changed

+54
-142
lines changed

10 files changed

+54
-142
lines changed

‎cli/server.go

Lines changed: 10 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -796,31 +796,18 @@ func (r *RootCmd) Server(newAPI func(context.Context, *coderd.Options) (*coderd.
796796
cliui.Infof(inv.Stdout,"\n==> Logs will stream in below (press ctrl+c to gracefully exit):")
797797

798798
ifvals.Telemetry.Enable {
799-
gitAuth:=make([]telemetry.GitAuth,0)
800-
// TODO:
801-
gitAuthConfigs:=make([]codersdk.ExternalAuthConfig,0)
802-
for_,cfg:=rangegitAuthConfigs {
803-
gitAuth=append(gitAuth, telemetry.GitAuth{
804-
Type:cfg.Type,
805-
})
799+
vals,err:=vals.WithoutSecrets()
800+
iferr!=nil {
801+
returnxerrors.Errorf("remove secrets from deployment values: %w",err)
806802
}
807-
808803
options.Telemetry,err=telemetry.New(telemetry.Options{
809-
BuiltinPostgres:builtinPostgres,
810-
DeploymentID:deploymentID,
811-
Database:options.Database,
812-
Logger:logger.Named("telemetry"),
813-
URL:vals.Telemetry.URL.Value(),
814-
Wildcard:vals.WildcardAccessURL.String()!="",
815-
DERPServerRelayURL:vals.DERP.Server.RelayURL.String(),
816-
GitAuth:gitAuth,
817-
GitHubOAuth:vals.OAuth2.Github.ClientID!="",
818-
OIDCAuth:vals.OIDC.ClientID!="",
819-
OIDCIssuerURL:vals.OIDC.IssuerURL.String(),
820-
Prometheus:vals.Prometheus.Enable.Value(),
821-
STUN:len(vals.DERP.Server.STUNAddresses)!=0,
822-
Tunnel:tunnel!=nil,
823-
Experiments:vals.Experiments.Value(),
804+
BuiltinPostgres:builtinPostgres,
805+
DeploymentID:deploymentID,
806+
Database:options.Database,
807+
Logger:logger.Named("telemetry"),
808+
URL:vals.Telemetry.URL.Value(),
809+
Tunnel:tunnel!=nil,
810+
DeploymentConfig:vals,
824811
ParseLicenseJWT:func(lic*telemetry.License)error {
825812
// This will be nil when running in AGPL-only mode.
826813
ifoptions.ParseLicenseClaims==nil {

‎coderd/apidoc/docs.go

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/apidoc/swagger.json

Lines changed: 0 additions & 6 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎coderd/telemetry/telemetry.go

Lines changed: 43 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -41,20 +41,13 @@ type Options struct {
4141
// URL is an endpoint to direct telemetry towards!
4242
URL*url.URL
4343

44-
BuiltinPostgresbool
45-
DeploymentIDstring
46-
GitHubOAuthbool
47-
OIDCAuthbool
48-
OIDCIssuerURLstring
49-
Wildcardbool
50-
DERPServerRelayURLstring
51-
GitAuth []GitAuth
52-
Prometheusbool
53-
STUNbool
54-
SnapshotFrequency time.Duration
55-
Tunnelbool
56-
ParseLicenseJWTfunc(lic*License)error
57-
Experiments []string
44+
DeploymentIDstring
45+
DeploymentConfig*codersdk.DeploymentValues
46+
BuiltinPostgresbool
47+
Tunnelbool
48+
49+
SnapshotFrequency time.Duration
50+
ParseLicenseJWTfunc(lic*License)error
5851
}
5952

6053
// New constructs a reporter for telemetry data.
@@ -242,31 +235,24 @@ func (r *remoteReporter) deployment() error {
242235
}
243236

244237
data,err:=json.Marshal(&Deployment{
245-
ID:r.options.DeploymentID,
246-
Architecture:sysInfo.Architecture,
247-
BuiltinPostgres:r.options.BuiltinPostgres,
248-
Containerized:containerized,
249-
Wildcard:r.options.Wildcard,
250-
DERPServerRelayURL:r.options.DERPServerRelayURL,
251-
GitAuth:r.options.GitAuth,
252-
Kubernetes:os.Getenv("KUBERNETES_SERVICE_HOST")!="",
253-
GitHubOAuth:r.options.GitHubOAuth,
254-
OIDCAuth:r.options.OIDCAuth,
255-
OIDCIssuerURL:r.options.OIDCIssuerURL,
256-
Prometheus:r.options.Prometheus,
257-
InstallSource:installSource,
258-
STUN:r.options.STUN,
259-
Tunnel:r.options.Tunnel,
260-
OSType:sysInfo.OS.Type,
261-
OSFamily:sysInfo.OS.Family,
262-
OSPlatform:sysInfo.OS.Platform,
263-
OSName:sysInfo.OS.Name,
264-
OSVersion:sysInfo.OS.Version,
265-
CPUCores:runtime.NumCPU(),
266-
MemoryTotal:mem.Total,
267-
MachineID:sysInfo.UniqueID,
268-
StartedAt:r.startedAt,
269-
ShutdownAt:r.shutdownAt,
238+
ID:r.options.DeploymentID,
239+
Architecture:sysInfo.Architecture,
240+
BuiltinPostgres:r.options.BuiltinPostgres,
241+
Containerized:containerized,
242+
Config:r.options.DeploymentConfig,
243+
Kubernetes:os.Getenv("KUBERNETES_SERVICE_HOST")!="",
244+
InstallSource:installSource,
245+
Tunnel:r.options.Tunnel,
246+
OSType:sysInfo.OS.Type,
247+
OSFamily:sysInfo.OS.Family,
248+
OSPlatform:sysInfo.OS.Platform,
249+
OSName:sysInfo.OS.Name,
250+
OSVersion:sysInfo.OS.Version,
251+
CPUCores:runtime.NumCPU(),
252+
MemoryTotal:mem.Total,
253+
MachineID:sysInfo.UniqueID,
254+
StartedAt:r.startedAt,
255+
ShutdownAt:r.shutdownAt,
270256
})
271257
iferr!=nil {
272258
returnxerrors.Errorf("marshal deployment: %w",err)
@@ -481,10 +467,6 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
481467
}
482468
returnnil
483469
})
484-
eg.Go(func()error {
485-
snapshot.Experiments=ConvertExperiments(r.options.Experiments)
486-
returnnil
487-
})
488470

489471
err:=eg.Wait()
490472
iferr!=nil {
@@ -745,16 +727,6 @@ func ConvertExternalProvisioner(id uuid.UUID, tags map[string]string, provisione
745727
}
746728
}
747729

748-
funcConvertExperiments(experiments []string) []Experiment {
749-
varout []Experiment
750-
751-
for_,exp:=rangeexperiments {
752-
out=append(out,Experiment{Name:exp})
753-
}
754-
755-
returnout
756-
}
757-
758730
// Snapshot represents a point-in-time anonymized database dump.
759731
// Data is aggregated by latest on the server-side, so partial data
760732
// can be sent without issue.
@@ -777,40 +749,28 @@ type Snapshot struct {
777749
WorkspaceResourceMetadata []WorkspaceResourceMetadata`json:"workspace_resource_metadata"`
778750
WorkspaceResources []WorkspaceResource`json:"workspace_resources"`
779751
Workspaces []Workspace`json:"workspaces"`
780-
Experiments []Experiment`json:"experiments"`
781752
}
782753

783754
// Deployment contains information about the host running Coder.
784755
typeDeploymentstruct {
785-
IDstring`json:"id"`
786-
Architecturestring`json:"architecture"`
787-
BuiltinPostgresbool`json:"builtin_postgres"`
788-
Containerizedbool`json:"containerized"`
789-
Kubernetesbool`json:"kubernetes"`
790-
Tunnelbool`json:"tunnel"`
791-
Wildcardbool`json:"wildcard"`
792-
DERPServerRelayURLstring`json:"derp_server_relay_url"`
793-
GitAuth []GitAuth`json:"git_auth"`
794-
GitHubOAuthbool`json:"github_oauth"`
795-
OIDCAuthbool`json:"oidc_auth"`
796-
OIDCIssuerURLstring`json:"oidc_issuer_url"`
797-
Prometheusbool`json:"prometheus"`
798-
InstallSourcestring`json:"install_source"`
799-
STUNbool`json:"stun"`
800-
OSTypestring`json:"os_type"`
801-
OSFamilystring`json:"os_family"`
802-
OSPlatformstring`json:"os_platform"`
803-
OSNamestring`json:"os_name"`
804-
OSVersionstring`json:"os_version"`
805-
CPUCoresint`json:"cpu_cores"`
806-
MemoryTotaluint64`json:"memory_total"`
807-
MachineIDstring`json:"machine_id"`
808-
StartedAt time.Time`json:"started_at"`
809-
ShutdownAt*time.Time`json:"shutdown_at"`
810-
}
811-
812-
typeGitAuthstruct {
813-
Typestring`json:"type"`
756+
IDstring`json:"id"`
757+
Architecturestring`json:"architecture"`
758+
BuiltinPostgresbool`json:"builtin_postgres"`
759+
Containerizedbool`json:"containerized"`
760+
Kubernetesbool`json:"kubernetes"`
761+
Config*codersdk.DeploymentValues`json:"config"`
762+
Tunnelbool`json:"tunnel"`
763+
InstallSourcestring`json:"install_source"`
764+
OSTypestring`json:"os_type"`
765+
OSFamilystring`json:"os_family"`
766+
OSPlatformstring`json:"os_platform"`
767+
OSNamestring`json:"os_name"`
768+
OSVersionstring`json:"os_version"`
769+
CPUCoresint`json:"cpu_cores"`
770+
MemoryTotaluint64`json:"memory_total"`
771+
MachineIDstring`json:"machine_id"`
772+
StartedAt time.Time`json:"started_at"`
773+
ShutdownAt*time.Time`json:"shutdown_at"`
814774
}
815775

816776
typeAPIKeystruct {
@@ -985,10 +945,6 @@ type ExternalProvisioner struct {
985945
ShutdownAt*time.Time`json:"shutdown_at"`
986946
}
987947

988-
typeExperimentstruct {
989-
Namestring`json:"name"`
990-
}
991-
992948
typenoopReporterstruct{}
993949

994950
func (*noopReporter)Report(_*Snapshot) {}

‎coderd/telemetry/telemetry_test.go

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -114,17 +114,6 @@ func TestTelemetry(t *testing.T) {
114114
require.Len(t,snapshot.Users,1)
115115
require.Equal(t,snapshot.Users[0].EmailHashed,"bb44bf07cf9a2db0554bba63a03d822c927deae77df101874496df5a6a3e896d@coder.com")
116116
})
117-
t.Run("Experiments",func(t*testing.T) {
118-
t.Parallel()
119-
120-
constexpName="my-experiment"
121-
exps:= []string{expName}
122-
_,snapshot:=collectSnapshot(t,dbmem.New(),func(opts telemetry.Options) telemetry.Options {
123-
opts.Experiments=exps
124-
returnopts
125-
})
126-
require.Equal(t, []telemetry.Experiment{{Name:expName}},snapshot.Experiments)
127-
})
128117
}
129118

130119
// nolint:paralleltest

‎codersdk/deployment.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,7 @@ type ExternalAuthConfig struct {
393393
AppInstallationsURLstring`json:"app_installations_url" yaml:"app_installations_url"`
394394
NoRefreshbool`json:"no_refresh" yaml:"no_refresh"`
395395
Scopes []string`json:"scopes" yaml:"scopes"`
396-
ExtraTokenKeys []string`json:"extra_token_keys" yaml:"extra_token_keys"`
396+
ExtraTokenKeys []string`json:"-" yaml:"extra_token_keys"`
397397
DeviceFlowbool`json:"device_flow" yaml:"device_flow"`
398398
DeviceCodeURLstring`json:"device_code_url" yaml:"device_code_url"`
399399
// Regex allows API requesters to match an auth config by

‎docs/api/general.md

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎docs/api/schemas.md

Lines changed: 0 additions & 5 deletions
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎site/src/api/typesGenerated.ts

Lines changed: 0 additions & 1 deletion
Some generated files are not rendered by default. Learn more aboutcustomizing how changed files appear on GitHub.

‎site/src/pages/DeploySettingsPage/ExternalAuthSettingsPage/ExternalAuthSettingsPageView.stories.tsx

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,6 @@ const meta: Meta<typeof ExternalAuthSettingsPageView> = {
1919
app_installations_url:"",
2020
no_refresh:false,
2121
scopes:[],
22-
extra_token_keys:[],
2322
device_flow:true,
2423
device_code_url:"",
2524
display_icon:"",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp