mirror of
https://github.com/coder/coder.git
synced 2025-07-13 21:36:50 +00:00
fix: fix for prebuilds claiming and deletion (#17624)
PR contains: - fix for claiming & deleting prebuilds with immutable params - unit test for claiming scenario - unit test for deletion scenario The parameter resolver was failing when deleting/claiming prebuilds because a value for a previously-used parameter was provided to the resolver, but since the value was unchanged (it's coming from the preset) it failed in the resolver. The resolver was missing a check to see if the old value != new value; if the values match then there's no mutation of an immutable parameter. --------- Signed-off-by: Danny Kopping <dannykopping@gmail.com>
This commit is contained in:
committed by
GitHub
parent
c7fc7b91ec
commit
98e5611e16
@ -329,9 +329,8 @@ func TestClaimPrebuild(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
|
||||
stopBuild, err := userClient.CreateWorkspaceBuild(ctx, workspace.ID, codersdk.CreateWorkspaceBuildRequest{
|
||||
TemplateVersionID: version.ID,
|
||||
Transition: codersdk.WorkspaceTransitionStop,
|
||||
RichParameterValues: wp,
|
||||
TemplateVersionID: version.ID,
|
||||
Transition: codersdk.WorkspaceTransitionStop,
|
||||
})
|
||||
require.NoError(t, err)
|
||||
coderdtest.AwaitWorkspaceBuildJobCompleted(t, userClient, stopBuild.ID)
|
||||
@ -369,6 +368,17 @@ func templateWithAgentAndPresetsWithPrebuilds(desiredInstances int32) *echo.Resp
|
||||
},
|
||||
},
|
||||
},
|
||||
// Make sure immutable params don't break claiming logic
|
||||
Parameters: []*proto.RichParameter{
|
||||
{
|
||||
Name: "k1",
|
||||
Description: "immutable param",
|
||||
Type: "string",
|
||||
DefaultValue: "",
|
||||
Required: false,
|
||||
Mutable: false,
|
||||
},
|
||||
},
|
||||
Presets: []*proto.Preset{
|
||||
{
|
||||
Name: "preset-a",
|
||||
|
@ -901,6 +901,16 @@ func setupTestDBTemplateVersion(
|
||||
ID: templateID,
|
||||
ActiveVersionID: templateVersion.ID,
|
||||
}))
|
||||
// Make sure immutable params don't break prebuilt workspace deletion logic
|
||||
dbgen.TemplateVersionParameter(t, db, database.TemplateVersionParameter{
|
||||
TemplateVersionID: templateVersion.ID,
|
||||
Name: "test",
|
||||
Description: "required & immutable param",
|
||||
Type: "string",
|
||||
DefaultValue: "",
|
||||
Required: true,
|
||||
Mutable: false,
|
||||
})
|
||||
return templateVersion.ID
|
||||
}
|
||||
|
||||
@ -999,7 +1009,7 @@ func setupTestDBWorkspace(
|
||||
OrganizationID: orgID,
|
||||
Error: buildError,
|
||||
})
|
||||
dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{
|
||||
workspaceBuild := dbgen.WorkspaceBuild(t, db, database.WorkspaceBuild{
|
||||
WorkspaceID: workspace.ID,
|
||||
InitiatorID: initiatorID,
|
||||
TemplateVersionID: templateVersionID,
|
||||
@ -1008,6 +1018,13 @@ func setupTestDBWorkspace(
|
||||
Transition: transition,
|
||||
CreatedAt: clock.Now(),
|
||||
})
|
||||
dbgen.WorkspaceBuildParameters(t, db, []database.WorkspaceBuildParameter{
|
||||
{
|
||||
WorkspaceBuildID: workspaceBuild.ID,
|
||||
Name: "test",
|
||||
Value: "test",
|
||||
},
|
||||
})
|
||||
|
||||
return workspace
|
||||
}
|
||||
|
Reference in New Issue
Block a user