Skip to content

Commit fa38b8f

Browse files
committed
add error for unknown transition
1 parent d103f69 commit fa38b8f

File tree

1 file changed

+38
-29
lines changed

1 file changed

+38
-29
lines changed

coderd/autobuild/executor/lifecycle_executor.go

Lines changed: 38 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -209,45 +209,54 @@ func build(ctx context.Context, store database.Store, workspace database.Workspa
209209
}
210210
provisionerJobID := uuid.New()
211211
now := database.Now()
212-
newProvisionerJob, err := store.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
213-
ID: provisionerJobID,
214-
CreatedAt: now,
215-
UpdatedAt: now,
216-
InitiatorID: workspace.OwnerID,
217-
OrganizationID: template.OrganizationID,
218-
Provisioner: template.Provisioner,
219-
Type: database.ProvisionerJobTypeWorkspaceBuild,
220-
StorageMethod: priorJob.StorageMethod,
221-
StorageSource: priorJob.StorageSource,
222-
Input: input,
223-
})
224-
if err != nil {
225-
return xerrors.Errorf("insert provisioner job: %w", err)
226-
}
227212

228213
var buildReason database.BuildReason
229214
switch trans {
230215
case database.WorkspaceTransitionStart:
231216
buildReason = database.BuildReasonAutostart
232217
case database.WorkspaceTransitionStop:
233218
buildReason = database.BuildReasonAutostop
219+
default:
220+
return xerrors.Errorf("Unsupported transition: %q", trans)
234221
}
235-
_, err = store.InsertWorkspaceBuild(ctx, database.InsertWorkspaceBuildParams{
236-
ID: workspaceBuildID,
237-
CreatedAt: now,
238-
UpdatedAt: now,
239-
WorkspaceID: workspace.ID,
240-
TemplateVersionID: priorHistory.TemplateVersionID,
241-
BuildNumber: priorBuildNumber + 1,
242-
Name: namesgenerator.GetRandomName(1),
243-
ProvisionerState: priorHistory.ProvisionerState,
244-
InitiatorID: workspace.OwnerID,
245-
Transition: trans,
246-
JobID: newProvisionerJob.ID,
247-
Reason: buildReason,
222+
223+
err = store.InTx(func(store database.Store) error {
224+
newProvisionerJob, err := store.InsertProvisionerJob(ctx, database.InsertProvisionerJobParams{
225+
ID: provisionerJobID,
226+
CreatedAt: now,
227+
UpdatedAt: now,
228+
InitiatorID: workspace.OwnerID,
229+
OrganizationID: template.OrganizationID,
230+
Provisioner: template.Provisioner,
231+
Type: database.ProvisionerJobTypeWorkspaceBuild,
232+
StorageMethod: priorJob.StorageMethod,
233+
StorageSource: priorJob.StorageSource,
234+
Input: input,
235+
})
236+
if err != nil {
237+
return xerrors.Errorf("insert provisioner job: %w", err)
238+
}
239+
_, err = store.InsertWorkspaceBuild(ctx, database.InsertWorkspaceBuildParams{
240+
ID: workspaceBuildID,
241+
CreatedAt: now,
242+
UpdatedAt: now,
243+
WorkspaceID: workspace.ID,
244+
TemplateVersionID: priorHistory.TemplateVersionID,
245+
BuildNumber: priorBuildNumber + 1,
246+
Name: namesgenerator.GetRandomName(1),
247+
ProvisionerState: priorHistory.ProvisionerState,
248+
InitiatorID: workspace.OwnerID,
249+
Transition: trans,
250+
JobID: newProvisionerJob.ID,
251+
Reason: buildReason,
252+
})
253+
if err != nil {
254+
return xerrors.Errorf("insert workspace build: %w", err)
255+
}
256+
return nil
248257
})
249258
if err != nil {
250-
return xerrors.Errorf("insert workspace build: %w", err)
259+
return err
251260
}
252261
return nil
253262
}

0 commit comments

Comments
 (0)