@@ -624,6 +624,28 @@ func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
624
624
}
625
625
return nil
626
626
})
627
+ eg .Go (func () error {
628
+ memoryMonitors , err := r .options .Database .FetchMemoryResourceMonitorsUpdatedAfter (ctx , createdAfter )
629
+ if err != nil {
630
+ return xerrors .Errorf ("get memory resource monitors: %w" , err )
631
+ }
632
+ snapshot .WorkspaceAgentMemoryResourceMonitors = make ([]WorkspaceAgentMemoryResourceMonitor , 0 , len (memoryMonitors ))
633
+ for _ , monitor := range memoryMonitors {
634
+ snapshot .WorkspaceAgentMemoryResourceMonitors = append (snapshot .WorkspaceAgentMemoryResourceMonitors , ConvertWorkspaceAgentMemoryResourceMonitor (monitor ))
635
+ }
636
+ return nil
637
+ })
638
+ eg .Go (func () error {
639
+ volumeMonitors , err := r .options .Database .FetchVolumesResourceMonitorsUpdatedAfter (ctx , createdAfter )
640
+ if err != nil {
641
+ return xerrors .Errorf ("get volume resource monitors: %w" , err )
642
+ }
643
+ snapshot .WorkspaceAgentVolumeResourceMonitors = make ([]WorkspaceAgentVolumeResourceMonitor , 0 , len (volumeMonitors ))
644
+ for _ , monitor := range volumeMonitors {
645
+ snapshot .WorkspaceAgentVolumeResourceMonitors = append (snapshot .WorkspaceAgentVolumeResourceMonitors , ConvertWorkspaceAgentVolumeResourceMonitor (monitor ))
646
+ }
647
+ return nil
648
+ })
627
649
eg .Go (func () error {
628
650
proxies , err := r .options .Database .GetWorkspaceProxies (ctx )
629
651
if err != nil {
@@ -765,6 +787,26 @@ func ConvertWorkspaceAgent(agent database.WorkspaceAgent) WorkspaceAgent {
765
787
return snapAgent
766
788
}
767
789
790
+ func ConvertWorkspaceAgentMemoryResourceMonitor (monitor database.WorkspaceAgentMemoryResourceMonitor ) WorkspaceAgentMemoryResourceMonitor {
791
+ return WorkspaceAgentMemoryResourceMonitor {
792
+ AgentID : monitor .AgentID ,
793
+ Enabled : monitor .Enabled ,
794
+ Threshold : monitor .Threshold ,
795
+ CreatedAt : monitor .CreatedAt ,
796
+ UpdatedAt : monitor .UpdatedAt ,
797
+ }
798
+ }
799
+
800
+ func ConvertWorkspaceAgentVolumeResourceMonitor (monitor database.WorkspaceAgentVolumeResourceMonitor ) WorkspaceAgentVolumeResourceMonitor {
801
+ return WorkspaceAgentVolumeResourceMonitor {
802
+ AgentID : monitor .AgentID ,
803
+ Enabled : monitor .Enabled ,
804
+ Threshold : monitor .Threshold ,
805
+ CreatedAt : monitor .CreatedAt ,
806
+ UpdatedAt : monitor .UpdatedAt ,
807
+ }
808
+ }
809
+
768
810
// ConvertWorkspaceAgentStat anonymizes a workspace agent stat.
769
811
func ConvertWorkspaceAgentStat (stat database.GetWorkspaceAgentStatsRow ) WorkspaceAgentStat {
770
812
return WorkspaceAgentStat {
@@ -1083,28 +1125,30 @@ func ConvertTelemetryItem(item database.TelemetryItem) TelemetryItem {
1083
1125
type Snapshot struct {
1084
1126
DeploymentID string `json:"deployment_id"`
1085
1127
1086
- APIKeys []APIKey `json:"api_keys"`
1087
- CLIInvocations []clitelemetry.Invocation `json:"cli_invocations"`
1088
- ExternalProvisioners []ExternalProvisioner `json:"external_provisioners"`
1089
- Licenses []License `json:"licenses"`
1090
- ProvisionerJobs []ProvisionerJob `json:"provisioner_jobs"`
1091
- TemplateVersions []TemplateVersion `json:"template_versions"`
1092
- Templates []Template `json:"templates"`
1093
- Users []User `json:"users"`
1094
- Groups []Group `json:"groups"`
1095
- GroupMembers []GroupMember `json:"group_members"`
1096
- WorkspaceAgentStats []WorkspaceAgentStat `json:"workspace_agent_stats"`
1097
- WorkspaceAgents []WorkspaceAgent `json:"workspace_agents"`
1098
- WorkspaceApps []WorkspaceApp `json:"workspace_apps"`
1099
- WorkspaceBuilds []WorkspaceBuild `json:"workspace_build"`
1100
- WorkspaceProxies []WorkspaceProxy `json:"workspace_proxies"`
1101
- WorkspaceResourceMetadata []WorkspaceResourceMetadata `json:"workspace_resource_metadata"`
1102
- WorkspaceResources []WorkspaceResource `json:"workspace_resources"`
1103
- WorkspaceModules []WorkspaceModule `json:"workspace_modules"`
1104
- Workspaces []Workspace `json:"workspaces"`
1105
- NetworkEvents []NetworkEvent `json:"network_events"`
1106
- Organizations []Organization `json:"organizations"`
1107
- TelemetryItems []TelemetryItem `json:"telemetry_items"`
1128
+ APIKeys []APIKey `json:"api_keys"`
1129
+ CLIInvocations []clitelemetry.Invocation `json:"cli_invocations"`
1130
+ ExternalProvisioners []ExternalProvisioner `json:"external_provisioners"`
1131
+ Licenses []License `json:"licenses"`
1132
+ ProvisionerJobs []ProvisionerJob `json:"provisioner_jobs"`
1133
+ TemplateVersions []TemplateVersion `json:"template_versions"`
1134
+ Templates []Template `json:"templates"`
1135
+ Users []User `json:"users"`
1136
+ Groups []Group `json:"groups"`
1137
+ GroupMembers []GroupMember `json:"group_members"`
1138
+ WorkspaceAgentStats []WorkspaceAgentStat `json:"workspace_agent_stats"`
1139
+ WorkspaceAgents []WorkspaceAgent `json:"workspace_agents"`
1140
+ WorkspaceApps []WorkspaceApp `json:"workspace_apps"`
1141
+ WorkspaceBuilds []WorkspaceBuild `json:"workspace_build"`
1142
+ WorkspaceProxies []WorkspaceProxy `json:"workspace_proxies"`
1143
+ WorkspaceResourceMetadata []WorkspaceResourceMetadata `json:"workspace_resource_metadata"`
1144
+ WorkspaceResources []WorkspaceResource `json:"workspace_resources"`
1145
+ WorkspaceAgentMemoryResourceMonitors []WorkspaceAgentMemoryResourceMonitor `json:"workspace_agent_memory_resource_monitors"`
1146
+ WorkspaceAgentVolumeResourceMonitors []WorkspaceAgentVolumeResourceMonitor `json:"workspace_agent_volume_resource_monitors"`
1147
+ WorkspaceModules []WorkspaceModule `json:"workspace_modules"`
1148
+ Workspaces []Workspace `json:"workspaces"`
1149
+ NetworkEvents []NetworkEvent `json:"network_events"`
1150
+ Organizations []Organization `json:"organizations"`
1151
+ TelemetryItems []TelemetryItem `json:"telemetry_items"`
1108
1152
}
1109
1153
1110
1154
// Deployment contains information about the host running Coder.
@@ -1232,6 +1276,22 @@ type WorkspaceAgentStat struct {
1232
1276
SessionCountSSH int64 `json:"session_count_ssh"`
1233
1277
}
1234
1278
1279
+ type WorkspaceAgentMemoryResourceMonitor struct {
1280
+ AgentID uuid.UUID `json:"agent_id"`
1281
+ Enabled bool `json:"enabled"`
1282
+ Threshold int32 `json:"threshold"`
1283
+ CreatedAt time.Time `json:"created_at"`
1284
+ UpdatedAt time.Time `json:"updated_at"`
1285
+ }
1286
+
1287
+ type WorkspaceAgentVolumeResourceMonitor struct {
1288
+ AgentID uuid.UUID `json:"agent_id"`
1289
+ Enabled bool `json:"enabled"`
1290
+ Threshold int32 `json:"threshold"`
1291
+ CreatedAt time.Time `json:"created_at"`
1292
+ UpdatedAt time.Time `json:"updated_at"`
1293
+ }
1294
+
1235
1295
type WorkspaceApp struct {
1236
1296
ID uuid.UUID `json:"id"`
1237
1297
CreatedAt time.Time `json:"created_at"`
0 commit comments