@@ -263,6 +263,81 @@ func TestAccKubernetesDaemonSet_with_tolerations_unset_toleration_seconds(t *tes
263263 })
264264}
265265
266+ func TestAccKubernetesDaemonSet_regression (t * testing.T ) {
267+ var conf1 , conf2 appsv1.DaemonSet
268+ name := fmt .Sprintf ("tf-acc-test-%s" , acctest .RandStringFromCharSet (10 , acctest .CharSetAlphaNum ))
269+
270+ resource .Test (t , resource.TestCase {
271+ PreCheck : func () { testAccPreCheck (t ) },
272+ IDRefreshName : "kubernetes_daemonset.test" ,
273+ IDRefreshIgnore : []string {"metadata.0.resource_version" },
274+ ExternalProviders : testAccExternalProviders ,
275+ CheckDestroy : testAccCheckKubernetesDaemonSetDestroy ,
276+ Steps : []resource.TestStep {
277+ {
278+ Config : requiredProviders () + testAccKubernetesDaemonSetConfig_regression ("kubernetes-released" , name ),
279+ Check : resource .ComposeAggregateTestCheckFunc (
280+ testAccCheckKubernetesDaemonSetExists ("kubernetes_daemonset.test" , & conf1 ),
281+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.annotations.%" , "2" ),
282+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.annotations.TestAnnotationOne" , "one" ),
283+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.annotations.TestAnnotationTwo" , "two" ),
284+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.%" , "3" ),
285+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.TestLabelOne" , "one" ),
286+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.TestLabelTwo" , "two" ),
287+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.TestLabelThree" , "three" ),
288+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.name" , name ),
289+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.generation" ),
290+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.resource_version" ),
291+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.self_link" ),
292+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.uid" ),
293+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.template.0.spec.0.container.0.image" , "nginx:1.7.8" ),
294+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.template.0.spec.0.container.0.name" , "tf-acc-test" ),
295+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.strategy.0.type" , "RollingUpdate" ),
296+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.strategy.0.rolling_update.0.max_unavailable" , "1" ),
297+ ),
298+ },
299+ {
300+ Config : requiredProviders () + testAccKubernetesDaemonSetConfig_regression ("kubernetes-local" , name ),
301+ Check : resource .ComposeAggregateTestCheckFunc (
302+ testAccCheckKubernetesDaemonSetExists ("kubernetes_daemonset.test" , & conf2 ),
303+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.annotations.%" , "2" ),
304+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.annotations.TestAnnotationOne" , "one" ),
305+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.annotations.TestAnnotationTwo" , "two" ),
306+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.%" , "3" ),
307+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.TestLabelOne" , "one" ),
308+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.TestLabelTwo" , "two" ),
309+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.labels.TestLabelThree" , "three" ),
310+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "metadata.0.name" , name ),
311+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.generation" ),
312+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.resource_version" ),
313+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.self_link" ),
314+ resource .TestCheckResourceAttrSet ("kubernetes_daemonset.test" , "metadata.0.uid" ),
315+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.template.0.spec.0.container.0.image" , "nginx:1.7.8" ),
316+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.template.0.spec.0.container.0.name" , "tf-acc-test" ),
317+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.strategy.0.type" , "RollingUpdate" ),
318+ resource .TestCheckResourceAttr ("kubernetes_daemonset.test" , "spec.0.strategy.0.rolling_update.0.max_unavailable" , "1" ),
319+ testAccCheckKubernetesDaemonsetForceNew (& conf1 , & conf2 , false ),
320+ ),
321+ },
322+ },
323+ })
324+ }
325+
326+ func testAccCheckKubernetesDaemonsetForceNew (old , new * appsv1.DaemonSet , wantNew bool ) resource.TestCheckFunc {
327+ return func (s * terraform.State ) error {
328+ if wantNew {
329+ if old .ObjectMeta .UID == new .ObjectMeta .UID {
330+ return fmt .Errorf ("Expecting new resource for daemonset %s" , old .ObjectMeta .UID )
331+ }
332+ } else {
333+ if old .ObjectMeta .UID != new .ObjectMeta .UID {
334+ return fmt .Errorf ("Expecting daemonset UIDs to be the same: expected %s got %s" , old .ObjectMeta .UID , new .ObjectMeta .UID )
335+ }
336+ }
337+ return nil
338+ }
339+ }
340+
266341func testAccCheckKubernetesDaemonSetDestroy (s * terraform.State ) error {
267342 conn , err := testAccProvider .Meta ().(KubeClientsets ).MainClientset ()
268343
@@ -672,3 +747,51 @@ func testAccKubernetesDaemonSetConfigWithTolerations(rcName, imageName string, t
672747}
673748` , rcName , operator , valueString , tolerationDuration , imageName )
674749}
750+
751+ func testAccKubernetesDaemonSetConfig_regression (provider , name string ) string {
752+ return fmt .Sprintf (`resource "kubernetes_daemonset" "test" {
753+ provider = %s
754+ metadata {
755+ annotations = {
756+ TestAnnotationOne = "one"
757+ TestAnnotationTwo = "two"
758+ }
759+
760+ labels = {
761+ TestLabelOne = "one"
762+ TestLabelTwo = "two"
763+ TestLabelThree = "three"
764+ }
765+
766+ name = "%s"
767+ }
768+
769+ spec {
770+ selector {
771+ match_labels = {
772+ TestLabelOne = "one"
773+ TestLabelTwo = "two"
774+ TestLabelThree = "three"
775+ }
776+ }
777+
778+ template {
779+ metadata {
780+ labels = {
781+ TestLabelOne = "one"
782+ TestLabelTwo = "two"
783+ TestLabelThree = "three"
784+ }
785+ }
786+
787+ spec {
788+ container {
789+ image = "nginx:1.7.8"
790+ name = "tf-acc-test"
791+ }
792+ }
793+ }
794+ }
795+ }
796+ ` , provider , name )
797+ }
0 commit comments