@@ -28,8 +28,8 @@ func TestAccKubernetesStatefulSet_basic(t *testing.T) {
2828 Config : testAccKubernetesStatefulSetConfigBasic (name ),
2929 Check : resource .ComposeAggregateTestCheckFunc (
3030 testAccCheckKubernetesStatefulSetExists ("kubernetes_stateful_set.test" , & conf ),
31- testAccCheckKubernetesStatefulSetRollingOut ("kubernetes_stateful_set.test" ),
32- resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "wait_for_rollout" , "false " ),
31+ testAccCheckKubernetesStatefulSetRolledOut ("kubernetes_stateful_set.test" ),
32+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "wait_for_rollout" , "true " ),
3333 resource .TestCheckResourceAttrSet ("kubernetes_stateful_set.test" , "metadata.0.generation" ),
3434 resource .TestCheckResourceAttrSet ("kubernetes_stateful_set.test" , "metadata.0.resource_version" ),
3535 resource .TestCheckResourceAttrSet ("kubernetes_stateful_set.test" , "metadata.0.self_link" ),
@@ -51,10 +51,10 @@ func TestAccKubernetesStatefulSet_basic(t *testing.T) {
5151 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.metadata.0.labels.%" , "1" ),
5252 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.metadata.0.labels.app" , "ss-test" ),
5353 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.name" , "ss-test" ),
54- resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.image" , "k8s.gcr.io/pause:latest " ),
54+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.image" , "nginx:1.19 " ),
5555 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.port.0.container_port" , "80" ),
5656 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.port.0.name" , "web" ),
57- resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.name" , "workdir " ),
57+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.name" , "ss-test " ),
5858 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.mount_path" , "/work-dir" ),
5959 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.update_strategy.0.type" , "RollingUpdate" ),
6060 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.update_strategy.0.rolling_update.#" , "1" ),
@@ -110,6 +110,7 @@ func TestAccKubernetesStatefulSet_Update(t *testing.T) {
110110 resource .Test (t , resource.TestCase {
111111 PreCheck : func () { testAccPreCheck (t ) },
112112 IDRefreshName : "kubernetes_stateful_set.test" ,
113+ IDRefreshIgnore : []string {"metadata.0.resource_version" },
113114 ProviderFactories : testAccProviderFactories ,
114115 CheckDestroy : testAccCheckKubernetesStatefulSetDestroy ,
115116 Steps : []resource.TestStep {
@@ -139,15 +140,24 @@ func TestAccKubernetesStatefulSet_Update(t *testing.T) {
139140 ),
140141 },
141142 {
142- Config : testAccKubernetesStatefulSetConfigUpdateReplicas (name , 5 ),
143+ Config : testAccKubernetesStatefulSetConfigUpdateReplicas (name , "5" ),
144+ Check : resource .ComposeAggregateTestCheckFunc (
145+ testAccCheckKubernetesStatefulSetExists ("kubernetes_stateful_set.test" , & conf ),
146+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "metadata.0.name" , name ),
147+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.replicas" , "5" ),
148+ ),
149+ },
150+ {
151+ Config : testAccKubernetesStatefulSetConfigUpdateReplicas (name , "" ),
143152 Check : resource .ComposeAggregateTestCheckFunc (
144153 testAccCheckKubernetesStatefulSetExists ("kubernetes_stateful_set.test" , & conf ),
145154 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "metadata.0.name" , name ),
155+ // NOTE setting to empty should preserve the current replica count
146156 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.replicas" , "5" ),
147157 ),
148158 },
149159 {
150- Config : testAccKubernetesStatefulSetConfigUpdateReplicas (name , 0 ),
160+ Config : testAccKubernetesStatefulSetConfigUpdateReplicas (name , "0" ),
151161 Check : resource .ComposeAggregateTestCheckFunc (
152162 testAccCheckKubernetesStatefulSetExists ("kubernetes_stateful_set.test" , & conf ),
153163 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "metadata.0.name" , name ),
@@ -213,7 +223,7 @@ func TestAccKubernetesStatefulSet_Update(t *testing.T) {
213223 })
214224}
215225
216- func TestAccKubernetesStatefulSet_waitForRollout (t * testing.T ) {
226+ func TestAccKubernetesStatefulSet_waitForRollout_true (t * testing.T ) {
217227 var conf api.StatefulSet
218228 name := fmt .Sprintf ("tf-acc-test-%s" , acctest .RandStringFromCharSet (10 , acctest .CharSetAlphaNum ))
219229 resource .Test (t , resource.TestCase {
@@ -223,7 +233,7 @@ func TestAccKubernetesStatefulSet_waitForRollout(t *testing.T) {
223233 CheckDestroy : testAccCheckKubernetesStatefulSetDestroy ,
224234 Steps : []resource.TestStep {
225235 {
226- Config : testAccKubernetesStatefulSetConfigWaitForRollout (name ),
236+ Config : testAccKubernetesStatefulSetConfigWaitForRollout (name , true ),
227237 Check : resource .ComposeAggregateTestCheckFunc (
228238 testAccCheckKubernetesStatefulSetExists ("kubernetes_stateful_set.test" , & conf ),
229239 testAccCheckKubernetesStatefulSetRolledOut ("kubernetes_stateful_set.test" ),
@@ -233,6 +243,26 @@ func TestAccKubernetesStatefulSet_waitForRollout(t *testing.T) {
233243 })
234244}
235245
246+ func TestAccKubernetesStatefulSet_waitForRollout_false (t * testing.T ) {
247+ var conf api.StatefulSet
248+ name := fmt .Sprintf ("tf-acc-test-%s" , acctest .RandStringFromCharSet (10 , acctest .CharSetAlphaNum ))
249+ resource .Test (t , resource.TestCase {
250+ PreCheck : func () { testAccPreCheck (t ) },
251+ IDRefreshName : "kubernetes_stateful_set.test" ,
252+ ProviderFactories : testAccProviderFactories ,
253+ CheckDestroy : testAccCheckKubernetesStatefulSetDestroy ,
254+ Steps : []resource.TestStep {
255+ {
256+ Config : testAccKubernetesStatefulSetConfigWaitForRollout (name , false ),
257+ Check : resource .ComposeAggregateTestCheckFunc (
258+ testAccCheckKubernetesStatefulSetExists ("kubernetes_stateful_set.test" , & conf ),
259+ testAccCheckKubernetesStatefulSetRollingOut ("kubernetes_stateful_set.test" ),
260+ ),
261+ },
262+ },
263+ })
264+ }
265+
236266func TestAccKubernetesStatefulSet_regression (t * testing.T ) {
237267 var conf1 , conf2 api.StatefulSet
238268 name := fmt .Sprintf ("tf-acc-test-%s" , acctest .RandStringFromCharSet (10 , acctest .CharSetAlphaNum ))
@@ -272,7 +302,7 @@ func TestAccKubernetesStatefulSet_regression(t *testing.T) {
272302 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.image" , "k8s.gcr.io/pause:latest" ),
273303 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.port.0.container_port" , "80" ),
274304 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.port.0.name" , "web" ),
275- resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.name" , "workdir " ),
305+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.name" , "ss-test " ),
276306 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.mount_path" , "/work-dir" ),
277307 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.update_strategy.0.type" , "RollingUpdate" ),
278308 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.update_strategy.0.rolling_update.#" , "1" ),
@@ -315,7 +345,7 @@ func TestAccKubernetesStatefulSet_regression(t *testing.T) {
315345 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.image" , "k8s.gcr.io/pause:latest" ),
316346 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.port.0.container_port" , "80" ),
317347 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.port.0.name" , "web" ),
318- resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.name" , "workdir " ),
348+ resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.name" , "ss-test " ),
319349 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.template.0.spec.0.container.0.volume_mount.0.mount_path" , "/work-dir" ),
320350 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.update_strategy.0.type" , "RollingUpdate" ),
321351 resource .TestCheckResourceAttr ("kubernetes_stateful_set.test" , "spec.0.update_strategy.0.rolling_update.#" , "1" ),
@@ -421,7 +451,7 @@ func testAccCheckKubernetesStatefulSetRollingOut(n string) resource.TestCheckFun
421451 return err
422452 }
423453
424- if d .Status .Replicas == * d .Spec .Replicas {
454+ if d .Status .ReadyReplicas == * d .Spec .Replicas {
425455 return fmt .Errorf ("StatefulSet has already rolled out" )
426456 }
427457
@@ -436,7 +466,7 @@ func testAccCheckKubernetesStatefulSetRolledOut(n string) resource.TestCheckFunc
436466 return err
437467 }
438468
439- if d .Status .Replicas != * d .Spec .Replicas {
469+ if d .Status .ReadyReplicas != * d .Spec .Replicas {
440470 return fmt .Errorf ("StatefulSet is still rolling out" )
441471 }
442472
@@ -483,16 +513,24 @@ func testAccKubernetesStatefulSetConfigBasic(name string) string {
483513
484514 spec {
485515 container {
486- name = "ss-test"
487- image = "k8s.gcr.io/pause:latest "
516+ name = "ss-test"
517+ image = "nginx:1.19 "
488518
489519 port {
490- container_port = "80"
491520 name = "web"
521+ container_port = 80
522+ }
523+
524+ readiness_probe {
525+ initial_delay_seconds = 5
526+ http_get {
527+ path = "/"
528+ port = 80
529+ }
492530 }
493531
494532 volume_mount {
495- name = "workdir "
533+ name = "ss-test "
496534 mount_path = "/work-dir"
497535 }
498536 }
@@ -575,7 +613,7 @@ func testAccKubernetesStatefulSetConfigUpdateImage(name string) string {
575613 }
576614
577615 volume_mount {
578- name = "workdir "
616+ name = "ss-test "
579617 mount_path = "/work-dir"
580618 }
581619 }
@@ -660,7 +698,7 @@ func testAccKubernetesStatefulSetConfigUpdatedSelectorLabels(name string) string
660698 }
661699
662700 volume_mount {
663- name = "workdir "
701+ name = "ss-test "
664702 mount_path = "/work-dir"
665703 }
666704 }
@@ -695,7 +733,7 @@ func testAccKubernetesStatefulSetConfigUpdatedSelectorLabels(name string) string
695733` , name )
696734}
697735
698- func testAccKubernetesStatefulSetConfigUpdateReplicas (name string , replicas int ) string {
736+ func testAccKubernetesStatefulSetConfigUpdateReplicas (name string , replicas string ) string {
699737 return fmt .Sprintf (`resource "kubernetes_stateful_set" "test" {
700738 metadata {
701739 annotations = {
@@ -714,7 +752,7 @@ func testAccKubernetesStatefulSetConfigUpdateReplicas(name string, replicas int)
714752
715753 spec {
716754 pod_management_policy = "OrderedReady"
717- replicas = %d
755+ replicas = %q
718756 revision_history_limit = 11
719757
720758 selector {
@@ -743,7 +781,7 @@ func testAccKubernetesStatefulSetConfigUpdateReplicas(name string, replicas int)
743781 }
744782
745783 volume_mount {
746- name = "workdir "
784+ name = "ss-test "
747785 mount_path = "/work-dir"
748786 }
749787 }
@@ -831,7 +869,7 @@ func testAccKubernetesStatefulSetConfigUpdateTemplate(name string) string {
831869 }
832870
833871 volume_mount {
834- name = "workdir "
872+ name = "ss-test "
835873 mount_path = "/work-dir"
836874 }
837875 }
@@ -930,7 +968,7 @@ func testAccKubernetesStatefulSetConfigRollingUpdatePartition(name string) strin
930968 }
931969
932970 volume_mount {
933- name = "workdir "
971+ name = "ss-test "
934972 mount_path = "/work-dir"
935973 }
936974 }
@@ -1013,7 +1051,7 @@ func testAccKubernetesStatefulSetConfigUpdateStrategyOnDelete(name string) strin
10131051 }
10141052
10151053 volume_mount {
1016- name = "workdir "
1054+ name = "ss-test "
10171055 mount_path = "/work-dir"
10181056 }
10191057 }
@@ -1040,11 +1078,13 @@ func testAccKubernetesStatefulSetConfigUpdateStrategyOnDelete(name string) strin
10401078 }
10411079 }
10421080 }
1081+
1082+ wait_for_rollout = false
10431083}
10441084` , name )
10451085}
10461086
1047- func testAccKubernetesStatefulSetConfigWaitForRollout (name string ) string {
1087+ func testAccKubernetesStatefulSetConfigWaitForRollout (name string , v bool ) string {
10481088 return fmt .Sprintf (`resource "kubernetes_service" "test" {
10491089 metadata {
10501090 name = "ss-test"
@@ -1111,9 +1151,9 @@ resource "kubernetes_stateful_set" "test" {
11111151 }
11121152 }
11131153
1114- wait_for_rollout = true
1154+ wait_for_rollout = %t
11151155}
1116- ` , name )
1156+ ` , name , v )
11171157}
11181158
11191159func testAccKubernetesStatefulSet_regression (provider , name string ) string {
@@ -1165,7 +1205,7 @@ func testAccKubernetesStatefulSet_regression(provider, name string) string {
11651205 }
11661206
11671207 volume_mount {
1168- name = "workdir "
1208+ name = "ss-test "
11691209 mount_path = "/work-dir"
11701210 }
11711211 }
0 commit comments