github.com/IBM-Cloud/terraform@v0.6.4-0.20170726051544-8872b87621df/builtin/providers/kubernetes/resource_kubernetes_limit_range_test.go (about)

     1  package kubernetes
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/hashicorp/terraform/helper/acctest"
     8  	"github.com/hashicorp/terraform/helper/resource"
     9  	"github.com/hashicorp/terraform/terraform"
    10  	api "k8s.io/kubernetes/pkg/api/v1"
    11  	kubernetes "k8s.io/kubernetes/pkg/client/clientset_generated/release_1_5"
    12  )
    13  
    14  func TestAccKubernetesLimitRange_basic(t *testing.T) {
    15  	var conf api.LimitRange
    16  	name := fmt.Sprintf("tf-acc-test-%s", acctest.RandString(10))
    17  
    18  	resource.Test(t, resource.TestCase{
    19  		PreCheck:      func() { testAccPreCheck(t) },
    20  		IDRefreshName: "kubernetes_limit_range.test",
    21  		Providers:     testAccProviders,
    22  		CheckDestroy:  testAccCheckKubernetesLimitRangeDestroy,
    23  		Steps: []resource.TestStep{
    24  			{
    25  				Config: testAccKubernetesLimitRangeConfig_basic(name),
    26  				Check: resource.ComposeAggregateTestCheckFunc(
    27  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
    28  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "1"),
    29  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.TestAnnotationOne", "one"),
    30  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{"TestAnnotationOne": "one"}),
    31  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "3"),
    32  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.TestLabelOne", "one"),
    33  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.TestLabelThree", "three"),
    34  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.TestLabelFour", "four"),
    35  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{"TestLabelOne": "one", "TestLabelThree": "three", "TestLabelFour": "four"}),
    36  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.name", name),
    37  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
    38  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
    39  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
    40  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
    41  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "1"),
    42  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.%", "2"),
    43  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.cpu", "200m"),
    44  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.memory", "512M"),
    45  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.%", "2"),
    46  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.cpu", "100m"),
    47  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.memory", "256M"),
    48  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Container"),
    49  				),
    50  			},
    51  			{
    52  				Config: testAccKubernetesLimitRangeConfig_metaModified(name),
    53  				Check: resource.ComposeAggregateTestCheckFunc(
    54  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
    55  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "2"),
    56  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.TestAnnotationOne", "one"),
    57  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.TestAnnotationTwo", "two"),
    58  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{"TestAnnotationOne": "one", "TestAnnotationTwo": "two"}),
    59  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "3"),
    60  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.TestLabelOne", "one"),
    61  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.TestLabelTwo", "two"),
    62  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.TestLabelThree", "three"),
    63  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{"TestLabelOne": "one", "TestLabelTwo": "two", "TestLabelThree": "three"}),
    64  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.name", name),
    65  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
    66  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
    67  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
    68  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
    69  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "1"),
    70  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.%", "2"),
    71  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.cpu", "200m"),
    72  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.memory", "512M"),
    73  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.%", "2"),
    74  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.cpu", "100m"),
    75  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.memory", "256M"),
    76  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Container"),
    77  				),
    78  			},
    79  			{
    80  				Config: testAccKubernetesLimitRangeConfig_specModified(name),
    81  				Check: resource.ComposeAggregateTestCheckFunc(
    82  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
    83  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "0"),
    84  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{}),
    85  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "0"),
    86  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{}),
    87  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.name", name),
    88  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
    89  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
    90  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
    91  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
    92  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "1"),
    93  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.%", "2"),
    94  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.cpu", "200m"),
    95  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.memory", "1024M"),
    96  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.%", "2"),
    97  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.cpu", "100m"),
    98  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default_request.memory", "256M"),
    99  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.max.%", "1"),
   100  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.max.cpu", "500m"),
   101  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.min.%", "2"),
   102  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.min.cpu", "10m"),
   103  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.min.memory", "10M"),
   104  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Container"),
   105  				),
   106  			},
   107  		},
   108  	})
   109  }
   110  
   111  func TestAccKubernetesLimitRange_generatedName(t *testing.T) {
   112  	var conf api.LimitRange
   113  	prefix := "tf-acc-test-"
   114  
   115  	resource.Test(t, resource.TestCase{
   116  		PreCheck:      func() { testAccPreCheck(t) },
   117  		IDRefreshName: "kubernetes_limit_range.test",
   118  		Providers:     testAccProviders,
   119  		CheckDestroy:  testAccCheckKubernetesLimitRangeDestroy,
   120  		Steps: []resource.TestStep{
   121  			{
   122  				Config: testAccKubernetesLimitRangeConfig_generatedName(prefix),
   123  				Check: resource.ComposeAggregateTestCheckFunc(
   124  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
   125  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "0"),
   126  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{}),
   127  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "0"),
   128  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{}),
   129  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.generate_name", prefix),
   130  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
   131  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
   132  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
   133  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
   134  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "1"),
   135  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Pod"),
   136  				),
   137  			},
   138  		},
   139  	})
   140  }
   141  
   142  func TestAccKubernetesLimitRange_typeChange(t *testing.T) {
   143  	var conf api.LimitRange
   144  	name := fmt.Sprintf("tf-acc-test-%s", acctest.RandString(10))
   145  
   146  	resource.Test(t, resource.TestCase{
   147  		PreCheck:      func() { testAccPreCheck(t) },
   148  		IDRefreshName: "kubernetes_limit_range.test",
   149  		Providers:     testAccProviders,
   150  		CheckDestroy:  testAccCheckKubernetesLimitRangeDestroy,
   151  		Steps: []resource.TestStep{
   152  			{
   153  				Config: testAccKubernetesLimitRangeConfig_typeChange(name),
   154  				Check: resource.ComposeAggregateTestCheckFunc(
   155  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
   156  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "0"),
   157  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{}),
   158  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "0"),
   159  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{}),
   160  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.name", name),
   161  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
   162  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
   163  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
   164  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
   165  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "1"),
   166  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.%", "2"),
   167  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.cpu", "200m"),
   168  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.default.memory", "1024M"),
   169  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Container"),
   170  				),
   171  			},
   172  			{
   173  				Config: testAccKubernetesLimitRangeConfig_typeChangeModified(name),
   174  				Check: resource.ComposeAggregateTestCheckFunc(
   175  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
   176  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "0"),
   177  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{}),
   178  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "0"),
   179  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{}),
   180  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.name", name),
   181  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
   182  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
   183  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
   184  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
   185  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "1"),
   186  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.min.%", "2"),
   187  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.min.cpu", "200m"),
   188  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.min.memory", "1024M"),
   189  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Pod"),
   190  				),
   191  			},
   192  		},
   193  	})
   194  }
   195  
   196  func TestAccKubernetesLimitRange_multipleLimits(t *testing.T) {
   197  	var conf api.LimitRange
   198  	name := fmt.Sprintf("tf-acc-test-%s", acctest.RandString(10))
   199  
   200  	resource.Test(t, resource.TestCase{
   201  		PreCheck:      func() { testAccPreCheck(t) },
   202  		IDRefreshName: "kubernetes_limit_range.test",
   203  		Providers:     testAccProviders,
   204  		CheckDestroy:  testAccCheckKubernetesLimitRangeDestroy,
   205  		Steps: []resource.TestStep{
   206  			{
   207  				Config: testAccKubernetesLimitRangeConfig_multipleLimits(name),
   208  				Check: resource.ComposeAggregateTestCheckFunc(
   209  					testAccCheckKubernetesLimitRangeExists("kubernetes_limit_range.test", &conf),
   210  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.annotations.%", "0"),
   211  					testAccCheckMetaAnnotations(&conf.ObjectMeta, map[string]string{}),
   212  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.labels.%", "0"),
   213  					testAccCheckMetaLabels(&conf.ObjectMeta, map[string]string{}),
   214  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "metadata.0.name", name),
   215  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.generation"),
   216  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.resource_version"),
   217  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.self_link"),
   218  					resource.TestCheckResourceAttrSet("kubernetes_limit_range.test", "metadata.0.uid"),
   219  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.#", "3"),
   220  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.max.%", "2"),
   221  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.max.cpu", "200m"),
   222  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.max.memory", "1024M"),
   223  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.0.type", "Pod"),
   224  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.1.min.%", "1"),
   225  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.1.min.storage", "24M"),
   226  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.1.type", "PersistentVolumeClaim"),
   227  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.2.default.%", "2"),
   228  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.2.default.cpu", "50m"),
   229  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.2.default.memory", "24M"),
   230  					resource.TestCheckResourceAttr("kubernetes_limit_range.test", "spec.0.limit.2.type", "Container"),
   231  				),
   232  			},
   233  		},
   234  	})
   235  }
   236  
   237  func TestAccKubernetesLimitRange_importBasic(t *testing.T) {
   238  	resourceName := "kubernetes_limit_range.test"
   239  	name := fmt.Sprintf("tf-acc-test-%s", acctest.RandString(10))
   240  
   241  	resource.Test(t, resource.TestCase{
   242  		PreCheck:     func() { testAccPreCheck(t) },
   243  		Providers:    testAccProviders,
   244  		CheckDestroy: testAccCheckKubernetesLimitRangeDestroy,
   245  		Steps: []resource.TestStep{
   246  			{
   247  				Config: testAccKubernetesLimitRangeConfig_basic(name),
   248  			},
   249  			{
   250  				ResourceName:      resourceName,
   251  				ImportState:       true,
   252  				ImportStateVerify: true,
   253  			},
   254  		},
   255  	})
   256  }
   257  
   258  func testAccCheckKubernetesLimitRangeDestroy(s *terraform.State) error {
   259  	conn := testAccProvider.Meta().(*kubernetes.Clientset)
   260  
   261  	for _, rs := range s.RootModule().Resources {
   262  		if rs.Type != "kubernetes_limit_range" {
   263  			continue
   264  		}
   265  		namespace, name := idParts(rs.Primary.ID)
   266  		resp, err := conn.CoreV1().LimitRanges(namespace).Get(name)
   267  		if err == nil {
   268  			if resp.Namespace == namespace && resp.Name == name {
   269  				return fmt.Errorf("Limit Range still exists: %s", rs.Primary.ID)
   270  			}
   271  		}
   272  	}
   273  
   274  	return nil
   275  }
   276  
   277  func testAccCheckKubernetesLimitRangeExists(n string, obj *api.LimitRange) resource.TestCheckFunc {
   278  	return func(s *terraform.State) error {
   279  		rs, ok := s.RootModule().Resources[n]
   280  		if !ok {
   281  			return fmt.Errorf("Not found: %s", n)
   282  		}
   283  
   284  		conn := testAccProvider.Meta().(*kubernetes.Clientset)
   285  		namespace, name := idParts(rs.Primary.ID)
   286  		out, err := conn.CoreV1().LimitRanges(namespace).Get(name)
   287  		if err != nil {
   288  			return err
   289  		}
   290  
   291  		*obj = *out
   292  		return nil
   293  	}
   294  }
   295  
   296  func testAccKubernetesLimitRangeConfig_basic(name string) string {
   297  	return fmt.Sprintf(`
   298  resource "kubernetes_limit_range" "test" {
   299  	metadata {
   300  		annotations {
   301  			TestAnnotationOne = "one"
   302  		}
   303  		labels {
   304  			TestLabelOne = "one"
   305  			TestLabelThree = "three"
   306  			TestLabelFour = "four"
   307  		}
   308  		name = "%s"
   309  	}
   310  	spec {
   311  		limit {
   312  			type = "Container"
   313  
   314  			default {
   315  				cpu = "200m"
   316  				memory = "512M"
   317  			}
   318  
   319  			default_request {
   320  				cpu = "100m"
   321  				memory = "256M"
   322  			}
   323  		}
   324  	}
   325  }
   326  `, name)
   327  }
   328  
   329  func testAccKubernetesLimitRangeConfig_metaModified(name string) string {
   330  	return fmt.Sprintf(`
   331  resource "kubernetes_limit_range" "test" {
   332  	metadata {
   333  		annotations {
   334  			TestAnnotationOne = "one"
   335  			TestAnnotationTwo = "two"
   336  		}
   337  		labels {
   338  			TestLabelOne = "one"
   339  			TestLabelTwo = "two"
   340  			TestLabelThree = "three"
   341  		}
   342  		name = "%s"
   343  	}
   344  	spec {
   345  		limit {
   346  			type = "Container"
   347  
   348  			default {
   349  				cpu = "200m"
   350  				memory = "512M"
   351  			}
   352  
   353  			default_request {
   354  				cpu = "100m"
   355  				memory = "256M"
   356  			}
   357  		}
   358  	}
   359  }
   360  `, name)
   361  }
   362  
   363  func testAccKubernetesLimitRangeConfig_specModified(name string) string {
   364  	return fmt.Sprintf(`
   365  resource "kubernetes_limit_range" "test" {
   366  	metadata {
   367  		name = "%s"
   368  	}
   369  	spec {
   370  		limit {
   371  			type = "Container"
   372  
   373  			default {
   374  				cpu = "200m"
   375  				memory = "1024M"
   376  			}
   377  
   378  			max {
   379  				cpu = "500m"
   380  			}
   381  
   382  			min {
   383  				cpu = "10m"
   384  				memory = "10M"
   385  			}
   386  		}
   387  	}
   388  }
   389  `, name)
   390  }
   391  
   392  func testAccKubernetesLimitRangeConfig_generatedName(prefix string) string {
   393  	return fmt.Sprintf(`
   394  resource "kubernetes_limit_range" "test" {
   395  	metadata {
   396  		generate_name = "%s"
   397  	}
   398  	spec {
   399  		limit {
   400  			type = "Pod"
   401  		}
   402  	}
   403  }
   404  `, prefix)
   405  }
   406  
   407  func testAccKubernetesLimitRangeConfig_typeChange(name string) string {
   408  	return fmt.Sprintf(`
   409  resource "kubernetes_limit_range" "test" {
   410  	metadata {
   411  		name = "%s"
   412  	}
   413  	spec {
   414  		limit {
   415  			type = "Container"
   416  			default {
   417  				cpu = "200m"
   418  				memory = "1024M"
   419  			}
   420  		}
   421  	}
   422  }
   423  `, name)
   424  }
   425  
   426  func testAccKubernetesLimitRangeConfig_typeChangeModified(name string) string {
   427  	return fmt.Sprintf(`
   428  resource "kubernetes_limit_range" "test" {
   429  	metadata {
   430  		name = "%s"
   431  	}
   432  	spec {
   433  		limit {
   434  			type = "Pod"
   435  			min {
   436  				cpu = "200m"
   437  				memory = "1024M"
   438  			}
   439  		}
   440  	}
   441  }
   442  `, name)
   443  }
   444  
   445  func testAccKubernetesLimitRangeConfig_multipleLimits(name string) string {
   446  	return fmt.Sprintf(`
   447  resource "kubernetes_limit_range" "test" {
   448  	metadata {
   449  		name = "%s"
   450  	}
   451  	spec {
   452  		limit {
   453  			type = "Pod"
   454  			max {
   455  				cpu = "200m"
   456  				memory = "1024M"
   457  			}
   458  		}
   459  		limit {
   460  			type = "PersistentVolumeClaim"
   461  			min {
   462  				storage = "24M"
   463  			}
   464  		}
   465  		limit {
   466  			type = "Container"
   467  			default {
   468  				cpu = "50m"
   469  				memory = "24M"
   470  			}
   471  		}
   472  	}
   473  }
   474  `, name)
   475  }