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

Function getScaletestPrebuildWorkspaces

cli/exp_scaletest.go:549–583  ·  view source on GitHub ↗

getScaletestPrebuildWorkspaces returns all prebuild workspaces that belong to scaletest templates. It uses getScaletestPrebuildsTemplates to scope the query so that legitimate (non-scaletest) prebuilds on the deployment are not caught in the cleanup. If template is non-empty only workspaces for that

(ctx context.Context, client *codersdk.Client, template string)

Source from the content-addressed store, hash-verified

547// caught in the cleanup. If template is non-empty only workspaces for that
548// template are returned.
549func getScaletestPrebuildWorkspaces(ctx context.Context, client *codersdk.Client, template string) ([]codersdk.Workspace, error) {
550 const pageSize = 100
551
552 templates, err := getScaletestPrebuildsTemplates(ctx, client, template)
553 if err != nil {
554 return nil, xerrors.Errorf("list scaletest prebuild templates: %w", err)
555 }
556
557 seen := make(map[uuid.UUID]struct{})
558 var result []codersdk.Workspace
559
560 for _, tmpl := range templates {
561 for page := 0; ; page++ {
562 resp, err := client.Workspaces(ctx, codersdk.WorkspaceFilter{
563 Template: tmpl.Name,
564 Offset: page * pageSize,
565 Limit: pageSize,
566 })
567 if err != nil {
568 return nil, xerrors.Errorf("list workspaces for template %q (page %d): %w", tmpl.Name, page, err)
569 }
570 for _, ws := range resp.Workspaces {
571 if _, ok := seen[ws.ID]; !ok {
572 seen[ws.ID] = struct{}{}
573 result = append(result, ws)
574 }
575 }
576 if len(resp.Workspaces) < pageSize {
577 break
578 }
579 }
580 }
581
582 return result, nil
583}
584
585// getScaletestPrebuildsTemplates returns all templates created by the scaletest
586// prebuilds runner (identified by prebuilds.TemplatePrefix). If template is

Callers 1

scaletestCleanupMethod · 0.85

Calls 3

WorkspacesMethod · 0.80
ErrorfMethod · 0.45

Tested by

no test coverage detected