@@ -41,20 +41,13 @@ type Options struct {
4141// URL is an endpoint to direct telemetry towards!
4242URL * url.URL
4343
44- BuiltinPostgres bool
45- DeploymentID string
46- GitHubOAuth bool
47- OIDCAuth bool
48- OIDCIssuerURL string
49- Wildcard bool
50- DERPServerRelayURL string
51- GitAuth []GitAuth
52- Prometheus bool
53- STUN bool
54- SnapshotFrequency time.Duration
55- Tunnel bool
56- ParseLicenseJWT func (lic * License )error
57- Experiments []string
44+ DeploymentID string
45+ DeploymentConfig * codersdk.DeploymentValues
46+ BuiltinPostgres bool
47+ Tunnel bool
48+
49+ SnapshotFrequency time.Duration
50+ ParseLicenseJWT func (lic * License )error
5851}
5952
6053// New constructs a reporter for telemetry data.
@@ -242,31 +235,24 @@ func (r *remoteReporter) deployment() error {
242235}
243236
244237data ,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})
271257if err != nil {
272258return xerrors .Errorf ("marshal deployment: %w" ,err )
@@ -481,10 +467,6 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
481467}
482468return nil
483469})
484- eg .Go (func ()error {
485- snapshot .Experiments = ConvertExperiments (r .options .Experiments )
486- return nil
487- })
488470
489471err := eg .Wait ()
490472if err != nil {
@@ -745,16 +727,6 @@ func ConvertExternalProvisioner(id uuid.UUID, tags map[string]string, provisione
745727}
746728}
747729
748- func ConvertExperiments (experiments []string ) []Experiment {
749- var out []Experiment
750-
751- for _ ,exp := range experiments {
752- out = append (out ,Experiment {Name :exp })
753- }
754-
755- return out
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 {
777749WorkspaceResourceMetadata []WorkspaceResourceMetadata `json:"workspace_resource_metadata"`
778750WorkspaceResources []WorkspaceResource `json:"workspace_resources"`
779751Workspaces []Workspace `json:"workspaces"`
780- Experiments []Experiment `json:"experiments"`
781752}
782753
783754// Deployment contains information about the host running Coder.
784755type Deployment struct {
785- ID string `json:"id"`
786- Architecture string `json:"architecture"`
787- BuiltinPostgres bool `json:"builtin_postgres"`
788- Containerized bool `json:"containerized"`
789- Kubernetes bool `json:"kubernetes"`
790- Tunnel bool `json:"tunnel"`
791- Wildcard bool `json:"wildcard"`
792- DERPServerRelayURL string `json:"derp_server_relay_url"`
793- GitAuth []GitAuth `json:"git_auth"`
794- GitHubOAuth bool `json:"github_oauth"`
795- OIDCAuth bool `json:"oidc_auth"`
796- OIDCIssuerURL string `json:"oidc_issuer_url"`
797- Prometheus bool `json:"prometheus"`
798- InstallSource string `json:"install_source"`
799- STUN bool `json:"stun"`
800- OSType string `json:"os_type"`
801- OSFamily string `json:"os_family"`
802- OSPlatform string `json:"os_platform"`
803- OSName string `json:"os_name"`
804- OSVersion string `json:"os_version"`
805- CPUCores int `json:"cpu_cores"`
806- MemoryTotal uint64 `json:"memory_total"`
807- MachineID string `json:"machine_id"`
808- StartedAt time.Time `json:"started_at"`
809- ShutdownAt * time.Time `json:"shutdown_at"`
810- }
811-
812- type GitAuth struct {
813- Type string `json:"type"`
756+ ID string `json:"id"`
757+ Architecture string `json:"architecture"`
758+ BuiltinPostgres bool `json:"builtin_postgres"`
759+ Containerized bool `json:"containerized"`
760+ Kubernetes bool `json:"kubernetes"`
761+ Config * codersdk.DeploymentValues `json:"config"`
762+ Tunnel bool `json:"tunnel"`
763+ InstallSource string `json:"install_source"`
764+ OSType string `json:"os_type"`
765+ OSFamily string `json:"os_family"`
766+ OSPlatform string `json:"os_platform"`
767+ OSName string `json:"os_name"`
768+ OSVersion string `json:"os_version"`
769+ CPUCores int `json:"cpu_cores"`
770+ MemoryTotal uint64 `json:"memory_total"`
771+ MachineID string `json:"machine_id"`
772+ StartedAt time.Time `json:"started_at"`
773+ ShutdownAt * time.Time `json:"shutdown_at"`
814774}
815775
816776type APIKey struct {
@@ -985,10 +945,6 @@ type ExternalProvisioner struct {
985945ShutdownAt * time.Time `json:"shutdown_at"`
986946}
987947
988- type Experiment struct {
989- Name string `json:"name"`
990- }
991-
992948type noopReporter struct {}
993949
994950func (* noopReporter )Report (_ * Snapshot ) {}