Skip to content

Commit bc9ff3d

Browse files
committed
chore: unify prebuilt workspace build stages into enum
Signed-off-by: Danny Kopping <dannykopping@gmail.com>
1 parent 232fc7c commit bc9ff3d

File tree

11 files changed

+424
-357
lines changed

11 files changed

+424
-357
lines changed

coderd/provisionerdserver/provisionerdserver.go

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -645,8 +645,7 @@ func (s *server) acquireProtoJob(ctx context.Context, job database.ProvisionerJo
645645
WorkspaceBuildId: workspaceBuild.ID.String(),
646646
WorkspaceOwnerLoginType: string(owner.LoginType),
647647
WorkspaceOwnerRbacRoles: ownerRbacRoles,
648-
IsPrebuild: input.IsPrebuild,
649-
IsPrebuiltWorkspaceClaim: input.IsPrebuiltWorkspaceClaim,
648+
PrebuiltWorkspaceBuildStage: input.PrebuiltWorkspaceBuildStage,
650649
},
651650
LogLevel: input.LogLevel,
652651
},
@@ -2472,11 +2471,10 @@ type TemplateVersionImportJob struct {
24722471

24732472
// WorkspaceProvisionJob is the payload for the "workspace_provision" job type.
24742473
type WorkspaceProvisionJob struct {
2475-
WorkspaceBuildID uuid.UUID `json:"workspace_build_id"`
2476-
DryRun bool `json:"dry_run"`
2477-
IsPrebuild bool `json:"is_prebuild,omitempty"`
2478-
IsPrebuiltWorkspaceClaim bool `json:"is_prebuilt_workspace_claim,omitempty"`
2479-
LogLevel string `json:"log_level,omitempty"`
2474+
WorkspaceBuildID uuid.UUID `json:"workspace_build_id"`
2475+
DryRun bool `json:"dry_run"`
2476+
LogLevel string `json:"log_level,omitempty"`
2477+
PrebuiltWorkspaceBuildStage sdkproto.PrebuiltWorkspaceBuildStage `json:"prebuilt_workspace_stage,omitempty"`
24802478
}
24812479

24822480
// TemplateVersionDryRunJob is the payload for the "template_version_dry_run" job type.

coderd/provisionerdserver/provisionerdserver_test.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,11 @@ import (
2323
"storj.io/drpc"
2424

2525
"cdr.dev/slog/sloggers/slogtest"
26-
"github.com/coder/coder/v2/coderd/rbac"
2726
"github.com/coder/quartz"
2827
"github.com/coder/serpent"
2928

29+
"github.com/coder/coder/v2/coderd/rbac"
30+
3031
"github.com/coder/coder/v2/buildinfo"
3132
"github.com/coder/coder/v2/coderd/audit"
3233
"github.com/coder/coder/v2/coderd/database"
@@ -299,6 +300,10 @@ func TestAcquireJob(t *testing.T) {
299300
Transition: database.WorkspaceTransitionStart,
300301
Reason: database.BuildReasonInitiator,
301302
})
303+
var buildState sdkproto.PrebuiltWorkspaceBuildStage
304+
if prebuiltWorkspace {
305+
buildState = sdkproto.PrebuiltWorkspaceBuildStage_CREATE
306+
}
302307
_ = dbgen.ProvisionerJob(t, db, ps, database.ProvisionerJob{
303308
ID: build.ID,
304309
OrganizationID: pd.OrganizationID,
@@ -308,8 +313,8 @@ func TestAcquireJob(t *testing.T) {
308313
FileID: file.ID,
309314
Type: database.ProvisionerJobTypeWorkspaceBuild,
310315
Input: must(json.Marshal(provisionerdserver.WorkspaceProvisionJob{
311-
WorkspaceBuildID: build.ID,
312-
IsPrebuild: prebuiltWorkspace,
316+
WorkspaceBuildID: build.ID,
317+
PrebuiltWorkspaceBuildStage: buildState,
313318
})),
314319
})
315320

@@ -380,7 +385,7 @@ func TestAcquireJob(t *testing.T) {
380385
WorkspaceOwnerRbacRoles: []*sdkproto.Role{{Name: rbac.RoleOrgMember(), OrgId: pd.OrganizationID.String()}, {Name: "member", OrgId: ""}, {Name: rbac.RoleOrgAuditor(), OrgId: pd.OrganizationID.String()}},
381386
}
382387
if prebuiltWorkspace {
383-
wantedMetadata.IsPrebuild = true
388+
wantedMetadata.PrebuiltWorkspaceBuildStage = sdkproto.PrebuiltWorkspaceBuildStage_CREATE
384389
}
385390

386391
slices.SortFunc(wantedMetadata.WorkspaceOwnerRbacRoles, func(a, b *sdkproto.Role) int {

coderd/wsbuilder/wsbuilder.go

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import (
1616
"github.com/coder/coder/v2/coderd/rbac/policy"
1717
"github.com/coder/coder/v2/provisioner/terraform/tfparse"
1818
"github.com/coder/coder/v2/provisionersdk"
19+
sdkproto "github.com/coder/coder/v2/provisionersdk/proto"
1920

2021
"github.com/google/uuid"
2122
"github.com/sqlc-dev/pqtype"
@@ -76,7 +77,7 @@ type Builder struct {
7677
parameterValues *[]string
7778
templateVersionPresetParameterValues []database.TemplateVersionPresetParameter
7879

79-
prebuild, prebuiltWorkspaceClaim bool
80+
prebuiltWorkspaceBuildStage sdkproto.PrebuiltWorkspaceBuildStage
8081

8182
verifyNoLegacyParametersOnce bool
8283
}
@@ -176,14 +177,14 @@ func (b Builder) RichParameterValues(p []codersdk.WorkspaceBuildParameter) Build
176177
// MarkPrebuild indicates that a prebuilt workspace is being built.
177178
func (b Builder) MarkPrebuild() Builder {
178179
// nolint: revive
179-
b.prebuild = true
180+
b.prebuiltWorkspaceBuildStage = sdkproto.PrebuiltWorkspaceBuildStage_CREATE
180181
return b
181182
}
182183

183184
// MarkPrebuiltWorkspaceClaim indicates that a prebuilt workspace is being claimed.
184185
func (b Builder) MarkPrebuiltWorkspaceClaim() Builder {
185186
// nolint: revive
186-
b.prebuiltWorkspaceClaim = true
187+
b.prebuiltWorkspaceBuildStage = sdkproto.PrebuiltWorkspaceBuildStage_CLAIM
187188
return b
188189
}
189190

@@ -323,10 +324,9 @@ func (b *Builder) buildTx(authFunc func(action policy.Action, object rbac.Object
323324

324325
workspaceBuildID := uuid.New()
325326
input, err := json.Marshal(provisionerdserver.WorkspaceProvisionJob{
326-
WorkspaceBuildID: workspaceBuildID,
327-
LogLevel: b.logLevel,
328-
IsPrebuild: b.prebuild,
329-
IsPrebuiltWorkspaceClaim: b.prebuiltWorkspaceClaim,
327+
WorkspaceBuildID: workspaceBuildID,
328+
LogLevel: b.logLevel,
329+
PrebuiltWorkspaceBuildStage: b.prebuiltWorkspaceBuildStage,
330330
})
331331
if err != nil {
332332
return nil, nil, nil, BuildError{

provisioner/terraform/provision.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,10 +270,10 @@ func provisionEnv(
270270
"CODER_WORKSPACE_TEMPLATE_VERSION="+metadata.GetTemplateVersion(),
271271
"CODER_WORKSPACE_BUILD_ID="+metadata.GetWorkspaceBuildId(),
272272
)
273-
if metadata.GetIsPrebuild() {
273+
if metadata.GetPrebuiltWorkspaceBuildStage().IsPrebuild() {
274274
env = append(env, provider.IsPrebuildEnvironmentVariable()+"=true")
275275
}
276-
if metadata.GetIsPrebuiltWorkspaceClaim() {
276+
if metadata.GetPrebuiltWorkspaceBuildStage().IsPrebuiltWorkspaceClaim() {
277277
env = append(env, provider.IsPrebuildClaimEnvironmentVariable()+"=true")
278278
}
279279

provisioner/terraform/provision_test.go

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ import (
2020
"testing"
2121
"time"
2222

23-
"github.com/stretchr/testify/assert"
24-
"github.com/stretchr/testify/require"
25-
2623
"cdr.dev/slog"
2724
"cdr.dev/slog/sloggers/slogtest"
25+
"github.com/stretchr/testify/assert"
26+
"github.com/stretchr/testify/require"
2827

2928
"github.com/coder/coder/v2/codersdk/drpc"
3029
"github.com/coder/coder/v2/provisioner/terraform"
@@ -995,8 +994,7 @@ func TestProvision(t *testing.T) {
995994
},
996995
Request: &proto.PlanRequest{
997996
Metadata: &proto.Metadata{
998-
IsPrebuild: true,
999-
IsPrebuiltWorkspaceClaim: false,
997+
PrebuiltWorkspaceBuildStage: proto.PrebuiltWorkspaceBuildStage_CREATE,
1000998
},
1001999
},
10021000
Response: &proto.PlanComplete{
@@ -1034,8 +1032,7 @@ func TestProvision(t *testing.T) {
10341032
},
10351033
Request: &proto.PlanRequest{
10361034
Metadata: &proto.Metadata{
1037-
IsPrebuild: false,
1038-
IsPrebuiltWorkspaceClaim: true,
1035+
PrebuiltWorkspaceBuildStage: proto.PrebuiltWorkspaceBuildStage_CLAIM,
10391036
},
10401037
},
10411038
Response: &proto.PlanComplete{

provisionerd/proto/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import "github.com/coder/coder/v2/apiversion"
1414
// - Add new field named `devcontainers` in the Agent.
1515
//
1616
// API v1.5:
17-
// - Add new field named `is_prebuild_claim` in the Metadata message.
17+
// - Add new field named `prebuilt_workspace_build_stage` enum in the Metadata message.
1818
const (
1919
CurrentMajor = 1
2020
CurrentMinor = 5

provisionerd/provisionerd.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -378,7 +378,7 @@ func (p *Server) acquireAndRunOne(client proto.DRPCProvisionerDaemonClient) erro
378378
slog.F("workspace_build_id", build.WorkspaceBuildId),
379379
slog.F("workspace_id", build.Metadata.WorkspaceId),
380380
slog.F("workspace_name", build.WorkspaceName),
381-
slog.F("is_prebuild", build.Metadata.IsPrebuild),
381+
slog.F("prebuilt_workspace_build_stage", build.Metadata.GetPrebuiltWorkspaceBuildStage().String()),
382382
)
383383

384384
span.SetAttributes(
@@ -388,7 +388,7 @@ func (p *Server) acquireAndRunOne(client proto.DRPCProvisionerDaemonClient) erro
388388
attribute.String("workspace_owner_id", build.Metadata.WorkspaceOwnerId),
389389
attribute.String("workspace_owner", build.Metadata.WorkspaceOwner),
390390
attribute.String("workspace_transition", build.Metadata.WorkspaceTransition.String()),
391-
attribute.Bool("is_prebuild", build.Metadata.IsPrebuild),
391+
attribute.String("prebuilt_workspace_build_stage", build.Metadata.GetPrebuiltWorkspaceBuildStage().String()),
392392
)
393393
}
394394

provisionersdk/proto/prebuilt_workspace.go

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

0 commit comments

Comments
 (0)