mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
feat!: patchTemplateMeta to use optional fields (#24984)
Closes https://github.com/coder/coder/issues/13112 **Breaking Change**: Removed status code `StatusNotModified` when no diffs occur in a patch. Now the patch is always applied and a template is always returned.
This commit is contained in:
+20
-11
@@ -8,6 +8,7 @@ import (
|
||||
"golang.org/x/xerrors"
|
||||
|
||||
"github.com/coder/coder/v2/cli/cliui"
|
||||
"github.com/coder/coder/v2/coderd/util/ptr"
|
||||
"github.com/coder/coder/v2/codersdk"
|
||||
"github.com/coder/pretty"
|
||||
"github.com/coder/serpent"
|
||||
@@ -88,6 +89,10 @@ func (r *RootCmd) templateEdit() *serpent.Command {
|
||||
}
|
||||
|
||||
// Default values
|
||||
if !userSetOption(inv, "name") {
|
||||
name = template.Name
|
||||
}
|
||||
|
||||
if !userSetOption(inv, "description") {
|
||||
description = template.Description
|
||||
}
|
||||
@@ -169,12 +174,12 @@ func (r *RootCmd) templateEdit() *serpent.Command {
|
||||
}
|
||||
|
||||
req := codersdk.UpdateTemplateMeta{
|
||||
Name: name,
|
||||
Name: &name,
|
||||
DisplayName: &displayName,
|
||||
Description: &description,
|
||||
Icon: &icon,
|
||||
DefaultTTLMillis: defaultTTL.Milliseconds(),
|
||||
ActivityBumpMillis: activityBump.Milliseconds(),
|
||||
DefaultTTLMillis: ptr.Ref(defaultTTL.Milliseconds()),
|
||||
ActivityBumpMillis: ptr.Ref(activityBump.Milliseconds()),
|
||||
AutostopRequirement: &codersdk.TemplateAutostopRequirement{
|
||||
DaysOfWeek: autostopRequirementDaysOfWeek,
|
||||
Weeks: autostopRequirementWeeks,
|
||||
@@ -182,15 +187,19 @@ func (r *RootCmd) templateEdit() *serpent.Command {
|
||||
AutostartRequirement: &codersdk.TemplateAutostartRequirement{
|
||||
DaysOfWeek: autostartRequirementDaysOfWeek,
|
||||
},
|
||||
FailureTTLMillis: failureTTL.Milliseconds(),
|
||||
TimeTilDormantMillis: dormancyThreshold.Milliseconds(),
|
||||
TimeTilDormantAutoDeleteMillis: dormancyAutoDeletion.Milliseconds(),
|
||||
AllowUserCancelWorkspaceJobs: allowUserCancelWorkspaceJobs,
|
||||
AllowUserAutostart: allowUserAutostart,
|
||||
AllowUserAutostop: allowUserAutostop,
|
||||
RequireActiveVersion: requireActiveVersion,
|
||||
FailureTTLMillis: ptr.Ref(failureTTL.Milliseconds()),
|
||||
TimeTilDormantMillis: ptr.Ref(dormancyThreshold.Milliseconds()),
|
||||
TimeTilDormantAutoDeleteMillis: ptr.Ref(dormancyAutoDeletion.Milliseconds()),
|
||||
AllowUserCancelWorkspaceJobs: &allowUserCancelWorkspaceJobs,
|
||||
AllowUserAutostart: &allowUserAutostart,
|
||||
AllowUserAutostop: &allowUserAutostop,
|
||||
RequireActiveVersion: &requireActiveVersion,
|
||||
DeprecationMessage: deprecated,
|
||||
DisableEveryoneGroupAccess: disableEveryoneGroup,
|
||||
DisableEveryoneGroupAccess: &disableEveryoneGroup,
|
||||
// TODO(Emyrk): now that the API accepts partial updates,
|
||||
// rewrite this CLI to only set pointers for flags the user
|
||||
// explicitly provided via userSetOption. The current
|
||||
// fetch-then-resend-everything dance is no longer required.
|
||||
}
|
||||
|
||||
_, err = client.UpdateTemplateMeta(inv.Context(), template.ID, req)
|
||||
|
||||
@@ -101,8 +101,7 @@ func TestTemplateEdit(t *testing.T) {
|
||||
|
||||
ctx := testutil.Context(t, testutil.WaitLong)
|
||||
err := inv.WithContext(ctx).Run()
|
||||
|
||||
require.ErrorContains(t, err, "not modified")
|
||||
require.NoError(t, err)
|
||||
|
||||
// Assert that the template metadata did not change.
|
||||
updated, err := client.Template(context.Background(), template.ID)
|
||||
@@ -751,8 +750,10 @@ func TestTemplateEdit(t *testing.T) {
|
||||
var req codersdk.UpdateTemplateMeta
|
||||
err = json.Unmarshal(body, &req)
|
||||
require.NoError(t, err)
|
||||
assert.False(t, req.AllowUserAutostart)
|
||||
assert.False(t, req.AllowUserAutostop)
|
||||
require.NotNil(t, req.AllowUserAutostart)
|
||||
assert.False(t, *req.AllowUserAutostart)
|
||||
require.NotNil(t, req.AllowUserAutostop)
|
||||
assert.False(t, *req.AllowUserAutostop)
|
||||
|
||||
r.Body = io.NopCloser(bytes.NewReader(body))
|
||||
updateTemplateCalled.Add(1)
|
||||
|
||||
Reference in New Issue
Block a user