Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit2ad7fcc

Browse files
authored
fix: show template autostop setting when it overrides the workspace setting (#12910)
1 parent22785a3 commit2ad7fcc

File tree

4 files changed

+48
-4
lines changed

4 files changed

+48
-4
lines changed

‎coderd/workspaces.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1649,6 +1649,11 @@ func convertWorkspace(
16491649
}
16501650

16511651
ttlMillis:=convertWorkspaceTTLMillis(workspace.Ttl)
1652+
// If the template doesn't allow a workspace-configured value, then report the
1653+
// template value instead.
1654+
if!template.AllowUserAutostop {
1655+
ttlMillis=convertWorkspaceTTLMillis(sql.NullInt64{Valid:true,Int64:template.DefaultTTL})
1656+
}
16521657

16531658
// Only show favorite status if you own the workspace.
16541659
requesterFavorite:=workspace.OwnerID==requesterID&&workspace.Favorite

‎coderd/workspaces_test.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -761,8 +761,8 @@ func TestPostWorkspacesByOrganization(t *testing.T) {
761761
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
762762

763763
// TTL should be set by the template
764-
require.Equal(t,template.DefaultTTLMillis,templateTTL)
765-
require.Equal(t,template.DefaultTTLMillis,*workspace.TTLMillis)
764+
require.Equal(t,templateTTL,template.DefaultTTLMillis)
765+
require.Equal(t,templateTTL,*workspace.TTLMillis)
766766
})
767767

768768
t.Run("InvalidTTL",func(t*testing.T) {
@@ -789,7 +789,7 @@ func TestPostWorkspacesByOrganization(t *testing.T) {
789789
require.ErrorAs(t,err,&apiErr)
790790
require.Equal(t,http.StatusBadRequest,apiErr.StatusCode())
791791
require.Len(t,apiErr.Validations,1)
792-
require.Equal(t,apiErr.Validations[0].Field,"ttl_ms")
792+
require.Equal(t,"ttl_ms",apiErr.Validations[0].Field)
793793
require.Equal(t,"time until shutdown must be at least one minute",apiErr.Validations[0].Detail)
794794
})
795795
})

‎enterprise/coderd/workspaces_test.go

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -913,6 +913,44 @@ func TestWorkspaceAutobuild(t *testing.T) {
913913
ws=coderdtest.MustWorkspace(t,client,ws.ID)
914914
require.Equal(t,version2.ID,ws.LatestBuild.TemplateVersionID)
915915
})
916+
917+
t.Run("TemplateDoesNotAllowUserAutostop",func(t*testing.T) {
918+
t.Parallel()
919+
client:=coderdtest.New(t,&coderdtest.Options{
920+
IncludeProvisionerDaemon:true,
921+
TemplateScheduleStore:schedule.NewEnterpriseTemplateScheduleStore(agplUserQuietHoursScheduleStore()),
922+
})
923+
user:=coderdtest.CreateFirstUser(t,client)
924+
version:=coderdtest.CreateTemplateVersion(t,client,user.OrganizationID,nil)
925+
templateTTL:=24*time.Hour.Milliseconds()
926+
template:=coderdtest.CreateTemplate(t,client,user.OrganizationID,version.ID,func(ctr*codersdk.CreateTemplateRequest) {
927+
ctr.DefaultTTLMillis=ptr.Ref(templateTTL)
928+
ctr.AllowUserAutostop=ptr.Ref(false)
929+
})
930+
coderdtest.AwaitTemplateVersionJobCompleted(t,client,version.ID)
931+
workspace:=coderdtest.CreateWorkspace(t,client,user.OrganizationID,template.ID,func(cwr*codersdk.CreateWorkspaceRequest) {
932+
cwr.TTLMillis=nil// ensure that no default TTL is set
933+
})
934+
coderdtest.AwaitWorkspaceBuildJobCompleted(t,client,workspace.LatestBuild.ID)
935+
936+
// TTL should be set by the template
937+
require.Equal(t,false,template.AllowUserAutostop)
938+
require.Equal(t,templateTTL,template.DefaultTTLMillis)
939+
require.Equal(t,templateTTL,*workspace.TTLMillis)
940+
941+
// Change the template's default TTL and refetch the workspace
942+
templateTTL=72*time.Hour.Milliseconds()
943+
ctx:=testutil.Context(t,testutil.WaitShort)
944+
template=coderdtest.UpdateTemplateMeta(t,client,template.ID, codersdk.UpdateTemplateMeta{
945+
DefaultTTLMillis:templateTTL,
946+
})
947+
workspace,err:=client.Workspace(ctx,workspace.ID)
948+
require.NoError(t,err)
949+
950+
// Ensure that the new value is reflected in the template and workspace
951+
require.Equal(t,templateTTL,template.DefaultTTLMillis)
952+
require.Equal(t,templateTTL,*workspace.TTLMillis)
953+
})
916954
}
917955

918956
// Blocked by autostart requirements

‎site/src/pages/WorkspaceSettingsPage/WorkspaceSettingsPage.tsx

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
importtype{FC}from"react";
12
import{Helmet}from"react-helmet-async";
23
import{useMutation}from"react-query";
34
import{useNavigate,useParams}from"react-router-dom";
@@ -8,7 +9,7 @@ import type { WorkspaceSettingsFormValues } from "./WorkspaceSettingsForm";
89
import{useWorkspaceSettings}from"./WorkspaceSettingsLayout";
910
import{WorkspaceSettingsPageView}from"./WorkspaceSettingsPageView";
1011

11-
constWorkspaceSettingsPage=()=>{
12+
constWorkspaceSettingsPage:FC=()=>{
1213
constparams=useParams()as{
1314
workspace:string;
1415
username:string;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp