Skip to content

Commit 8a2911f

Browse files
authored
kubernetes_cron_job should not force new (#1212)
* kubernetes_cron_job should not force new
1 parent b7421c2 commit 8a2911f

File tree

4 files changed

+26
-9
lines changed

4 files changed

+26
-9
lines changed

kubernetes/resource_kubernetes_cron_job_test.go

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313
)
1414

1515
func TestAccKubernetesCronJob_basic(t *testing.T) {
16-
var conf v1beta1.CronJob
16+
var conf1, conf2 v1beta1.CronJob
1717
name := fmt.Sprintf("tf-acc-test-%s", acctest.RandStringFromCharSet(10, acctest.CharSetAlphaNum))
1818
imageName := alpineImageVersion
1919

@@ -26,7 +26,7 @@ func TestAccKubernetesCronJob_basic(t *testing.T) {
2626
{
2727
Config: testAccKubernetesCronJobConfig_basic(name, imageName),
2828
Check: resource.ComposeAggregateTestCheckFunc(
29-
testAccCheckKubernetesCronJobExists("kubernetes_cron_job.test", &conf),
29+
testAccCheckKubernetesCronJobExists("kubernetes_cron_job.test", &conf1),
3030
resource.TestCheckResourceAttr("kubernetes_cron_job.test", "metadata.0.name", name),
3131
resource.TestCheckResourceAttrSet("kubernetes_cron_job.test", "metadata.0.generation"),
3232
resource.TestCheckResourceAttrSet("kubernetes_cron_job.test", "metadata.0.resource_version"),
@@ -46,9 +46,9 @@ func TestAccKubernetesCronJob_basic(t *testing.T) {
4646
),
4747
},
4848
{
49-
Config: testAccKubernetesCronJobConfig_modified(name, imageName),
49+
Config: testAccKubernetesCronJobConfig_modified(name, "test"),
5050
Check: resource.ComposeAggregateTestCheckFunc(
51-
testAccCheckKubernetesCronJobExists("kubernetes_cron_job.test", &conf),
51+
testAccCheckKubernetesCronJobExists("kubernetes_cron_job.test", &conf2),
5252
resource.TestCheckResourceAttr("kubernetes_cron_job.test", "metadata.0.name", name),
5353
resource.TestCheckResourceAttrSet("kubernetes_cron_job.test", "metadata.0.generation"),
5454
resource.TestCheckResourceAttrSet("kubernetes_cron_job.test", "metadata.0.resource_version"),
@@ -65,6 +65,7 @@ func TestAccKubernetesCronJob_basic(t *testing.T) {
6565
resource.TestCheckResourceAttr("kubernetes_cron_job.test", "spec.0.job_template.0.spec.0.template.0.spec.0.container.0.name", "hello"),
6666
resource.TestCheckResourceAttr("kubernetes_cron_job.test", "spec.0.job_template.0.spec.0.template.0.metadata.#", "1"),
6767
resource.TestCheckResourceAttr("kubernetes_cron_job.test", "spec.0.job_template.0.spec.0.template.0.metadata.0.labels.%", "1"),
68+
testAccCheckKubernetesCronJobForceNew(&conf1, &conf2, false),
6869
),
6970
},
7071
},
@@ -293,3 +294,18 @@ func testAccKubernetesCronJobConfig_extraModified(name, imageName string) string
293294
}
294295
}`, name, imageName)
295296
}
297+
298+
func testAccCheckKubernetesCronJobForceNew(old, new *v1beta1.CronJob, wantNew bool) resource.TestCheckFunc {
299+
return func(s *terraform.State) error {
300+
if wantNew {
301+
if old.ObjectMeta.UID != new.ObjectMeta.UID {
302+
return fmt.Errorf("Expecting forced replacement")
303+
}
304+
} else {
305+
if old.ObjectMeta.UID != new.ObjectMeta.UID {
306+
return fmt.Errorf("Unexpected forced replacement")
307+
}
308+
}
309+
return nil
310+
}
311+
}

kubernetes/resource_kubernetes_job.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func resourceKubernetesJobSchemaV1() map[string]*schema.Schema {
5454
MaxItems: 1,
5555
ForceNew: false,
5656
Elem: &schema.Resource{
57-
Schema: jobSpecFields(),
57+
Schema: jobSpecFields(false),
5858
},
5959
},
6060
"wait_for_completion": {

kubernetes/schema_cron_job_spec.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ func cronJobSpecFields() map[string]*schema.Schema {
3737
Required: true,
3838
MaxItems: 1,
3939
Elem: &schema.Resource{
40-
Schema: jobSpecFields(),
40+
Schema: jobSpecFields(true),
4141
},
4242
},
4343
},

kubernetes/schema_job_spec.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,9 @@ package kubernetes
22

33
import (
44
"fmt"
5-
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
65
"strconv"
6+
7+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
78
)
89

910
func jobMetadataSchema() *schema.Schema {
@@ -13,7 +14,7 @@ func jobMetadataSchema() *schema.Schema {
1314
return m
1415
}
1516

16-
func jobSpecFields() map[string]*schema.Schema {
17+
func jobSpecFields(specUpdatable bool) map[string]*schema.Schema {
1718
podTemplateFields := map[string]*schema.Schema{
1819
"metadata": metadataSchema("job", true),
1920
"spec": {
@@ -23,7 +24,7 @@ func jobSpecFields() map[string]*schema.Schema {
2324
ForceNew: true,
2425
MaxItems: 1,
2526
Elem: &schema.Resource{
26-
Schema: podSpecFields(false, false),
27+
Schema: podSpecFields(specUpdatable, false),
2728
},
2829
},
2930
}

0 commit comments

Comments
 (0)