MCPcopy Index your code
hub / github.com/coder/coder / createSnapshot

Method createSnapshot

coderd/telemetry/telemetry.go:416–843  ·  view source on GitHub ↗

createSnapshot collects a full snapshot from the database.

()

Source from the content-addressed store, hash-verified

414
415// createSnapshot collects a full snapshot from the database.
416func (r *remoteReporter) createSnapshot() (*Snapshot, error) {
417 var (
418 ctx = r.ctx
419 now = r.options.Clock.Now()
420 // For resources that grow in size very quickly (like workspace builds),
421 // we only report events that occurred within the past hour.
422 createdAfter = dbtime.Time(now.Add(-1 * time.Hour)).UTC()
423 eg errgroup.Group
424 snapshot = &Snapshot{
425 DeploymentID: r.options.DeploymentID,
426 }
427 )
428
429 eg.Go(func() error {
430 apiKeys, err := r.options.Database.GetAPIKeysLastUsedAfter(ctx, createdAfter)
431 if err != nil {
432 return xerrors.Errorf("get api keys last used: %w", err)
433 }
434 snapshot.APIKeys = make([]APIKey, 0, len(apiKeys))
435 for _, apiKey := range apiKeys {
436 snapshot.APIKeys = append(snapshot.APIKeys, ConvertAPIKey(apiKey))
437 }
438 return nil
439 })
440 eg.Go(func() error {
441 jobs, err := r.options.Database.GetProvisionerJobsCreatedAfter(ctx, createdAfter)
442 if err != nil {
443 return xerrors.Errorf("get provisioner jobs: %w", err)
444 }
445 snapshot.ProvisionerJobs = make([]ProvisionerJob, 0, len(jobs))
446 for _, job := range jobs {
447 snapshot.ProvisionerJobs = append(snapshot.ProvisionerJobs, ConvertProvisionerJob(job))
448 }
449 return nil
450 })
451 eg.Go(func() error {
452 templates, err := r.options.Database.GetTemplates(ctx)
453 if err != nil {
454 return xerrors.Errorf("get templates: %w", err)
455 }
456 snapshot.Templates = make([]Template, 0, len(templates))
457 for _, dbTemplate := range templates {
458 snapshot.Templates = append(snapshot.Templates, ConvertTemplate(dbTemplate))
459 }
460 return nil
461 })
462 eg.Go(func() error {
463 templateVersions, err := r.options.Database.GetTemplateVersionsCreatedAfter(ctx, createdAfter)
464 if err != nil {
465 return xerrors.Errorf("get template versions: %w", err)
466 }
467 snapshot.TemplateVersions = make([]TemplateVersion, 0, len(templateVersions))
468 for _, version := range templateVersions {
469 snapshot.TemplateVersions = append(snapshot.TemplateVersions, ConvertTemplateVersion(version))
470 }
471 return nil
472 })
473 eg.Go(func() error {

Callers 1

reportWithDeploymentMethod · 0.95

Calls 15

TimeFunction · 0.92
ConvertUserRowsFunction · 0.92
ConvertWorkspaceRowsFunction · 0.92
NowFunction · 0.92
ConvertAPIKeyFunction · 0.85
ConvertProvisionerJobFunction · 0.85
ConvertTemplateFunction · 0.85
ConvertTemplateVersionFunction · 0.85

Tested by

no test coverage detected