@@ -237,6 +237,82 @@ func TestAccKubernetesJobV1_ttl_seconds_after_finished(t *testing.T) {
237237 })
238238}
239239
240+ func TestAccKubernetesJobV1_customizeDiff_ttlZero (t * testing.T ) {
241+ var conf batchv1.Job
242+ name := fmt .Sprintf ("tf-acc-test-%s" , acctest .RandString (10 ))
243+ imageName := busyboxImage
244+ resourceName := "kubernetes_job_v1.test"
245+
246+ resource .ParallelTest (t , resource.TestCase {
247+ PreCheck : func () {
248+ testAccPreCheck (t )
249+ skipIfClusterVersionLessThan (t , "1.21.0" )
250+ },
251+ ProviderFactories : testAccProviderFactories ,
252+ Steps : []resource.TestStep {
253+ // Step 1: Create the Job
254+ {
255+ Config : testAccKubernetesJobV1Config_Diff (name , imageName , 0 ),
256+ Check : resource .ComposeAggregateTestCheckFunc (
257+ testAccCheckKubernetesJobV1Exists (resourceName , & conf ),
258+ resource .TestCheckResourceAttr (resourceName , "spec.0.ttl_seconds_after_finished" , "0" ),
259+ ),
260+ },
261+ // Step 2: Wait for the Job to complete and be deleted
262+ {
263+ PreConfig : func () {
264+ time .Sleep (30 * time .Second )
265+ },
266+ Config : testAccKubernetesJobV1Config_Diff (name , imageName , 0 ),
267+ PlanOnly : true ,
268+ ExpectNonEmptyPlan : false ,
269+ },
270+ },
271+ })
272+ }
273+
274+ func TestAccKubernetesJobV1_updateTTLFromZero (t * testing.T ) {
275+ var conf batchv1.Job
276+ name := fmt .Sprintf ("tf-acc-test-%s" , acctest .RandString (10 ))
277+ imageName := busyboxImage
278+ resourceName := "kubernetes_job_v1.test"
279+
280+ resource .ParallelTest (t , resource.TestCase {
281+ PreCheck : func () {
282+ testAccPreCheck (t )
283+ skipIfClusterVersionLessThan (t , "1.21.0" )
284+ },
285+ ProviderFactories : testAccProviderFactories ,
286+ Steps : []resource.TestStep {
287+ // Step 1: Create the Job with ttl_seconds_after_finished = 0
288+ {
289+ Config : testAccKubernetesJobV1Config_Diff (name , imageName , 0 ),
290+ Check : resource .ComposeAggregateTestCheckFunc (
291+ testAccCheckKubernetesJobV1Exists (resourceName , & conf ),
292+ resource .TestCheckResourceAttr (resourceName , "spec.0.ttl_seconds_after_finished" , "0" ),
293+ ),
294+ },
295+ // Step 2: Wait for the Job to complete and be deleted
296+ {
297+ PreConfig : func () {
298+ time .Sleep (30 * time .Second )
299+ },
300+ Config : testAccKubernetesJobV1Config_Diff (name , imageName , 0 ),
301+ PlanOnly : true ,
302+ ExpectNonEmptyPlan : false ,
303+ },
304+ // Step 3: Update the Job to ttl_seconds_after_finished = 5
305+ {
306+ Config : testAccKubernetesJobV1Config_Diff (name , imageName , 5 ),
307+ Check : resource .ComposeAggregateTestCheckFunc (
308+ testAccCheckKubernetesJobV1Exists (resourceName , & conf ),
309+ resource .TestCheckResourceAttr (resourceName , "spec.0.ttl_seconds_after_finished" , "5" ),
310+ ),
311+ },
312+ },
313+ })
314+ }
315+
240316func testAccCheckJobV1Waited (minDuration time.Duration ) func (* terraform.State ) error {
241317 // NOTE this works because this function is called when setting up the test
242318 // and the function it returns is called after the resource has been created
@@ -516,3 +592,28 @@ func testAccKubernetesJobV1Config_modified(name, imageName string) string {
516592 wait_for_completion = false
517593}` , name , imageName )
518594}
595+
596+ func testAccKubernetesJobV1Config_Diff (name , imageName string , ttl int ) string {
597+ return fmt .Sprintf (`
598+ resource "kubernetes_job_v1" "test" {
599+ metadata {
600+ name = "%s"
601+ }
602+ spec {
603+ ttl_seconds_after_finished = %d
604+ template {
605+ metadata {}
606+ spec {
607+ container {
608+ name = "wait-test"
609+ image = "%s"
610+ command = ["sleep", "20"]
611+ }
612+ restart_policy = "Never"
613+ }
614+ }
615+ }
616+ wait_for_completion = false
617+ }
618+ ` , name , ttl , imageName )
619+ }
0 commit comments