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

Commit442ff2a

Browse files
authored
chore: add minimum TTL value for expiration.policy.ttl (#406)
* chore: add minimum TTL value for expiration.policy.ttl* chore: support 0 as a valid ttl value in expiration_policy to disable expiration
1 parentd0457a7 commit442ff2a

File tree

2 files changed

+58
-4
lines changed

2 files changed

+58
-4
lines changed

‎provider/workspace_preset.go

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package provider
22

33
import (
44
"context"
5+
"fmt"
56

67
"github.com/hashicorp/terraform-plugin-sdk/v2/diag"
78
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
@@ -103,8 +104,17 @@ func workspacePresetDataSource() *schema.Resource {
103104
Description:"Time in seconds after which an unclaimed prebuild is considered expired and eligible for cleanup.",
104105
Required:true,
105106
ForceNew:true,
106-
// Ensure TTL is between 0 and 31536000 seconds (1 year) to prevent stale prebuilds
107-
ValidateFunc:validation.IntBetween(0,31536000),
107+
// Ensure TTL is either 0 (to disable expiration) or between 3600 seconds (1 hour) and 31536000 seconds (1 year)
108+
ValidateFunc:func(valinterface{},keystring) ([]string, []error) {
109+
v:=val.(int)
110+
ifv==0 {
111+
returnnil,nil
112+
}
113+
ifv<3600||v>31536000 {
114+
returnnil, []error{fmt.Errorf("%q must be 0 or between 3600 and 31536000, got %d",key,v)}
115+
}
116+
returnnil,nil
117+
},
108118
},
109119
},
110120
},

‎provider/workspace_preset_test.go

Lines changed: 46 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ func TestWorkspacePreset(t *testing.T) {
157157
expiration_policy {}
158158
}
159159
}`,
160-
ExpectError:regexp.MustCompile("The argument\"ttl\" is required, but no definition was found."),
160+
ExpectError:regexp.MustCompile(`The argument "ttl" is required, but no definition was found.`),
161161
},
162162
{
163163
Name:"Prebuilds is set with a expiration_policy field with its required fields",
@@ -186,6 +186,50 @@ func TestWorkspacePreset(t *testing.T) {
186186
returnnil
187187
},
188188
},
189+
{
190+
Name:"Prebuilds block with expiration_policy.ttl set to 0 seconds (disables expiration)",
191+
Config:`
192+
data "coder_workspace_preset" "preset_1" {
193+
name = "preset_1"
194+
parameters = {
195+
"region" = "us-east1-a"
196+
}
197+
prebuilds {
198+
instances = 1
199+
expiration_policy {
200+
ttl = 0
201+
}
202+
}
203+
}`,
204+
ExpectError:nil,
205+
Check:func(state*terraform.State)error {
206+
require.Len(t,state.Modules,1)
207+
require.Len(t,state.Modules[0].Resources,1)
208+
resource:=state.Modules[0].Resources["data.coder_workspace_preset.preset_1"]
209+
require.NotNil(t,resource)
210+
attrs:=resource.Primary.Attributes
211+
require.Equal(t,attrs["name"],"preset_1")
212+
require.Equal(t,attrs["prebuilds.0.expiration_policy.0.ttl"],"0")
213+
returnnil
214+
},
215+
},
216+
{
217+
Name:"Prebuilds block with expiration_policy.ttl set to 30 minutes (below 1 hour limit)",
218+
Config:`
219+
data "coder_workspace_preset" "preset_1" {
220+
name = "preset_1"
221+
parameters = {
222+
"region" = "us-east1-a"
223+
}
224+
prebuilds {
225+
instances = 1
226+
expiration_policy {
227+
ttl = 1800
228+
}
229+
}
230+
}`,
231+
ExpectError:regexp.MustCompile(`"prebuilds.0.expiration_policy.0.ttl" must be 0 or between 3600 and 31536000, got 1800`),
232+
},
189233
{
190234
Name:"Prebuilds block with expiration_policy.ttl set to 2 years (exceeds 1 year limit)",
191235
Config:`
@@ -201,7 +245,7 @@ func TestWorkspacePreset(t *testing.T) {
201245
}
202246
}
203247
}`,
204-
ExpectError:regexp.MustCompile(`expectedprebuilds.0.expiration_policy.0.ttl to bein the range \(0 - 31536000\), got 63072000`),
248+
ExpectError:regexp.MustCompile(`"prebuilds.0.expiration_policy.0.ttl" must be0 or between 3600 and 31536000, got 63072000`),
205249
},
206250
{
207251
Name:"Prebuilds is set with a expiration_policy field with its required fields and an unexpected argument",

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp