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