From abaf841b8221649ada5772bb2f48b805e7d0bcdf Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Fri, 31 Aug 2018 12:31:07 -0700 Subject: [PATCH 1/8] add enable_tpu flag --- ...ta_source_google_container_cluster_test.go | 1 + google/resource_container_cluster.go | 12 ++++++ google/resource_container_cluster_test.go | 37 +++++++++++++++++++ 3 files changed, 50 insertions(+) diff --git a/google/data_source_google_container_cluster_test.go b/google/data_source_google_container_cluster_test.go index 88e35cb8c16..414735f2cac 100644 --- a/google/data_source_google_container_cluster_test.go +++ b/google/data_source_google_container_cluster_test.go @@ -66,6 +66,7 @@ func testAccDataSourceGoogleContainerClusterCheck(dataSourceName string, resourc "cluster_ipv4_cidr", "description", "enable_kubernetes_alpha", + "enable_tpu", "enable_legacy_abac", "endpoint", "enable_legacy_abac", diff --git a/google/resource_container_cluster.go b/google/resource_container_cluster.go index f841178da36..67fcf1b412d 100644 --- a/google/resource_container_cluster.go +++ b/google/resource_container_cluster.go @@ -209,6 +209,13 @@ func resourceContainerCluster() *schema.Resource { Default: false, }, + "enable_tpu": { + Type: schema.TypeBool, + Optional: true, + ForceNew: true, + Default: false, + }, + "enable_legacy_abac": { Type: schema.TypeBool, Optional: true, @@ -600,6 +607,10 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er cluster.EnableKubernetesAlpha = v.(bool) } + if v, ok := d.GetOk("enable_tpu"); ok { + cluster.EnableTpu = v.(bool) + } + nodePoolsCount := d.Get("node_pool.#").(int) if nodePoolsCount > 0 { nodePools := make([]*containerBeta.NodePool, 0, nodePoolsCount) @@ -756,6 +767,7 @@ func resourceContainerClusterRead(d *schema.ResourceData, meta interface{}) erro d.Set("cluster_ipv4_cidr", cluster.ClusterIpv4Cidr) d.Set("description", cluster.Description) d.Set("enable_kubernetes_alpha", cluster.EnableKubernetesAlpha) + d.Set("enable_tpu", cluster.EnableTpu) d.Set("enable_legacy_abac", cluster.LegacyAbac.Enabled) d.Set("logging_service", cluster.LoggingService) d.Set("monitoring_service", cluster.MonitoringService) diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 3566fb9f70f..1e1dc16c32f 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -460,6 +460,32 @@ func TestAccContainerCluster_withKubernetesAlpha(t *testing.T) { }) } +func TestAccContainerCluster_withTpu(t *testing.T) { + t.Parallel() + + clusterName := fmt.Sprintf("cluster-test-%s", acctest.RandString(10)) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckContainerClusterDestroy, + Steps: []resource.TestStep{ + { + Config: testAccContainerCluster_withKubernetesAlpha(clusterName), + Check: resource.ComposeTestCheckFunc( + resource.TestCheckResourceAttr("google_container_cluster.with_tpu", "enable_tpu", "true"), + ), + }, + { + ResourceName: "google_container_cluster.with_tpu", + ImportStateIdPrefix: "us-central1-b/", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} + func TestAccContainerCluster_withPrivateCluster(t *testing.T) { t.Parallel() @@ -1717,6 +1743,17 @@ resource "google_container_cluster" "with_kubernetes_alpha" { }`, clusterName) } +func testAccContainerCluster_withTpu(clusterName string) string { + return fmt.Sprintf(` +resource "google_container_cluster" "with_tpu" { + name = "cluster-test-%s" + zone = "us-central1-b" + initial_node_count = 1 + + enable_tpu = true +}`, clusterName) +} + func testAccContainerCluster_defaultLegacyAbac(clusterName string) string { return fmt.Sprintf(` resource "google_container_cluster" "default_legacy_abac" { From 5d44a21352d1caa98fc81a62fb4012d4cc4e49ae Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Fri, 31 Aug 2018 12:34:27 -0700 Subject: [PATCH 2/8] missed one --- google/resource_container_cluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 1e1dc16c32f..61c45e992f3 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -471,7 +471,7 @@ func TestAccContainerCluster_withTpu(t *testing.T) { CheckDestroy: testAccCheckContainerClusterDestroy, Steps: []resource.TestStep{ { - Config: testAccContainerCluster_withKubernetesAlpha(clusterName), + Config: testAccContainerCluster_withTpu(clusterName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("google_container_cluster.with_tpu", "enable_tpu", "true"), ), From 477dbff8a5c1963a90b4ba3420654b275c27b337 Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Fri, 31 Aug 2018 16:01:42 -0700 Subject: [PATCH 3/8] add docs --- website/docs/r/container_cluster.html.markdown | 3 +++ 1 file changed, 3 insertions(+) diff --git a/website/docs/r/container_cluster.html.markdown b/website/docs/r/container_cluster.html.markdown index e0c11093ede..552fb4c8914 100644 --- a/website/docs/r/container_cluster.html.markdown +++ b/website/docs/r/container_cluster.html.markdown @@ -99,6 +99,9 @@ output "cluster_ca_certificate" { this cluster. Note that when this option is enabled, the cluster cannot be upgraded and will be automatically deleted after 30 days. +* `enable_tpu` - (Optional) Whether to enable Cloud TPU resources in this cluster. + See the [official documentation](https://cloud.google.com/tpu/docs/kubernetes-engine-setup). + * `enable_legacy_abac` - (Optional) Whether the ABAC authorizer is enabled for this cluster. When enabled, identities in the system, including service accounts, nodes, and controllers, will have statically granted permissions beyond those provided by the RBAC configuration or IAM. From 7a4e9d30601a02fcfe8258982eec3500d388636d Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Fri, 31 Aug 2018 18:21:56 -0700 Subject: [PATCH 4/8] fix test --- google/resource_container_cluster_test.go | 62 ++++++++++++++++++++--- 1 file changed, 54 insertions(+), 8 deletions(-) diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 61c45e992f3..16bc76ca156 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -463,15 +463,24 @@ func TestAccContainerCluster_withKubernetesAlpha(t *testing.T) { func TestAccContainerCluster_withTpu(t *testing.T) { t.Parallel() - clusterName := fmt.Sprintf("cluster-test-%s", acctest.RandString(10)) - + cluster := fmt.Sprintf("cluster-test-%s", acctest.RandString(10)) resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckContainerClusterDestroy, Steps: []resource.TestStep{ { - Config: testAccContainerCluster_withTpu(clusterName), + Config: testAccContainerCluster_withTpu( + cluster, + map[string]string{ + "pods": "10.1.0.0/16", + "services": "10.2.0.0/20", + }, + map[string]string{ + "cluster_secondary_range_name": "pods", + "services_secondary_range_name": "services", + }, + ), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("google_container_cluster.with_tpu", "enable_tpu", "true"), ), @@ -1743,15 +1752,52 @@ resource "google_container_cluster" "with_kubernetes_alpha" { }`, clusterName) } -func testAccContainerCluster_withTpu(clusterName string) string { +func testAccContainerCluster_withTpu(cluster string, ranges, policy map[string]string) string { + + var secondaryRanges bytes.Buffer + for rangeName, cidr := range ranges { + secondaryRanges.WriteString(fmt.Sprintf(` + secondary_ip_range { + range_name = "%s" + ip_cidr_range = "%s" + }`, rangeName, cidr)) + } + + var ipAllocationPolicy bytes.Buffer + for key, value := range policy { + ipAllocationPolicy.WriteString(fmt.Sprintf(` + %s = "%s"`, key, value)) + } + return fmt.Sprintf(` +resource "google_compute_network" "container_network" { + name = "container-net-%s" + auto_create_subnetworks = false +} + +resource "google_compute_subnetwork" "container_subnetwork" { + name = "${google_compute_network.container_network.name}" + network = "${google_compute_network.container_network.name}" + ip_cidr_range = "10.0.0.0/24" + region = "us-central1" + + %s +} + resource "google_container_cluster" "with_tpu" { - name = "cluster-test-%s" + name = "%s" zone = "us-central1-b" - initial_node_count = 1 - enable_tpu = true -}`, clusterName) + network = "${google_compute_network.container_network.name}" + subnetwork = "${google_compute_subnetwork.container_subnetwork.name}" + + enable_tpu = true + + initial_node_count = 1 + ip_allocation_policy { + %s + } +}`, acctest.RandString(10), secondaryRanges.String(), cluster, ipAllocationPolicy.String()) } func testAccContainerCluster_defaultLegacyAbac(clusterName string) string { From 778e6a1413965c220d0d30205f1281ab6800193e Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Fri, 31 Aug 2018 18:29:51 -0700 Subject: [PATCH 5/8] tabs --- google/resource_container_cluster_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 16bc76ca156..abebfcb190f 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -1789,9 +1789,9 @@ resource "google_container_cluster" "with_tpu" { zone = "us-central1-b" network = "${google_compute_network.container_network.name}" - subnetwork = "${google_compute_subnetwork.container_subnetwork.name}" + subnetwork = "${google_compute_subnetwork.container_subnetwork.name}" - enable_tpu = true + enable_tpu = true initial_node_count = 1 ip_allocation_policy { From db261f822dbdb29aa300f7420376387fe795caca Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Wed, 26 Sep 2018 11:40:02 -0700 Subject: [PATCH 6/8] update tests to new format --- google/resource_container_cluster.go | 1 + google/resource_container_cluster_test.go | 67 +++++++++-------------- 2 files changed, 28 insertions(+), 40 deletions(-) diff --git a/google/resource_container_cluster.go b/google/resource_container_cluster.go index f683bc1ab9f..75b855c231a 100644 --- a/google/resource_container_cluster.go +++ b/google/resource_container_cluster.go @@ -560,6 +560,7 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er NetworkPolicy: expandNetworkPolicy(d.Get("network_policy")), AddonsConfig: expandClusterAddonsConfig(d.Get("addons_config")), EnableKubernetesAlpha: d.Get("enable_kubernetes_alpha").(bool), + EnableTpu: d.Get("enable_tpu").(bool), IpAllocationPolicy: expandIPAllocationPolicy(d.Get("ip_allocation_policy")), PodSecurityPolicyConfig: expandPodSecurityPolicyConfig(d.Get("pod_security_policy_config")), MasterIpv4CidrBlock: d.Get("master_ipv4_cidr_block").(string), diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 4176c35b188..854aea32f2d 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -463,24 +463,15 @@ func TestAccContainerCluster_withKubernetesAlpha(t *testing.T) { func TestAccContainerCluster_withTpu(t *testing.T) { t.Parallel() - cluster := fmt.Sprintf("cluster-test-%s", acctest.RandString(10)) + clusterName := fmt.Sprintf("cluster-test-%s", acctest.RandString(10)) + resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, Providers: testAccProviders, CheckDestroy: testAccCheckContainerClusterDestroy, Steps: []resource.TestStep{ { - Config: testAccContainerCluster_withTpu( - cluster, - map[string]string{ - "pods": "10.1.0.0/16", - "services": "10.2.0.0/20", - }, - map[string]string{ - "cluster_secondary_range_name": "pods", - "services_secondary_range_name": "services", - }, - ), + Config: testAccContainerCluster_withTpu(clusterName), Check: resource.ComposeTestCheckFunc( resource.TestCheckResourceAttr("google_container_cluster.with_tpu", "enable_tpu", "true"), ), @@ -495,6 +486,7 @@ func TestAccContainerCluster_withTpu(t *testing.T) { }) } + func TestAccContainerCluster_withPrivateCluster(t *testing.T) { t.Parallel() @@ -1778,23 +1770,7 @@ resource "google_container_cluster" "with_kubernetes_alpha" { }`, clusterName) } -func testAccContainerCluster_withTpu(cluster string, ranges, policy map[string]string) string { - - var secondaryRanges bytes.Buffer - for rangeName, cidr := range ranges { - secondaryRanges.WriteString(fmt.Sprintf(` - secondary_ip_range { - range_name = "%s" - ip_cidr_range = "%s" - }`, rangeName, cidr)) - } - - var ipAllocationPolicy bytes.Buffer - for key, value := range policy { - ipAllocationPolicy.WriteString(fmt.Sprintf(` - %s = "%s"`, key, value)) - } - +func testAccContainerCluster_withTpu(clusterName string) string { return fmt.Sprintf(` resource "google_compute_network" "container_network" { name = "container-net-%s" @@ -1802,28 +1778,39 @@ resource "google_compute_network" "container_network" { } resource "google_compute_subnetwork" "container_subnetwork" { - name = "${google_compute_network.container_network.name}" - network = "${google_compute_network.container_network.name}" - ip_cidr_range = "10.0.0.0/24" - region = "us-central1" + name = "${google_compute_network.container_network.name}" + network = "${google_compute_network.container_network.name}" + ip_cidr_range = "10.0.35.0/24" + region = "us-central1" - %s + secondary_ip_range { + range_name = "pod" + ip_cidr_range = "10.1.0.0/19" + } + + secondary_ip_range { + range_name = "svc" + ip_cidr_range = "10.2.0.0/22" + } } resource "google_container_cluster" "with_tpu" { - name = "%s" + name = "cluster-test-%s" zone = "us-central1-b" + initial_node_count = 1 + + enable_tpu = true network = "${google_compute_network.container_network.name}" subnetwork = "${google_compute_subnetwork.container_subnetwork.name}" - enable_tpu = true - - initial_node_count = 1 + master_ipv4_cidr_block = "10.42.0.0/28" + master_authorized_networks_config { cidr_blocks = [] } ip_allocation_policy { - %s + cluster_secondary_range_name = "${google_compute_subnetwork.container_subnetwork.secondary_ip_range.0.range_name}" + services_secondary_range_name = "${google_compute_subnetwork.container_subnetwork.secondary_ip_range.1.range_name}" } -}`, acctest.RandString(10), secondaryRanges.String(), cluster, ipAllocationPolicy.String()) +}`, clusterName, clusterName) } func testAccContainerCluster_defaultLegacyAbac(clusterName string) string { From d531b559fe3b8e7d22f3a6d5bbd40ba59e0682e5 Mon Sep 17 00:00:00 2001 From: Alex Barron Date: Wed, 26 Sep 2018 11:48:48 -0700 Subject: [PATCH 7/8] formatting --- google/resource_container_cluster.go | 2 +- google/resource_container_cluster_test.go | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/google/resource_container_cluster.go b/google/resource_container_cluster.go index 75b855c231a..373bfb51974 100644 --- a/google/resource_container_cluster.go +++ b/google/resource_container_cluster.go @@ -560,7 +560,7 @@ func resourceContainerClusterCreate(d *schema.ResourceData, meta interface{}) er NetworkPolicy: expandNetworkPolicy(d.Get("network_policy")), AddonsConfig: expandClusterAddonsConfig(d.Get("addons_config")), EnableKubernetesAlpha: d.Get("enable_kubernetes_alpha").(bool), - EnableTpu: d.Get("enable_tpu").(bool), + EnableTpu: d.Get("enable_tpu").(bool), IpAllocationPolicy: expandIPAllocationPolicy(d.Get("ip_allocation_policy")), PodSecurityPolicyConfig: expandPodSecurityPolicyConfig(d.Get("pod_security_policy_config")), MasterIpv4CidrBlock: d.Get("master_ipv4_cidr_block").(string), diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index 854aea32f2d..ab58db72069 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -486,7 +486,6 @@ func TestAccContainerCluster_withTpu(t *testing.T) { }) } - func TestAccContainerCluster_withPrivateCluster(t *testing.T) { t.Parallel() From f1ff9b0b9f889ff1c03fcd29f226b5ca3462a621 Mon Sep 17 00:00:00 2001 From: Dana Hoffman Date: Mon, 1 Oct 2018 09:11:41 -0700 Subject: [PATCH 8/8] formatting --- google/resource_container_cluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/google/resource_container_cluster_test.go b/google/resource_container_cluster_test.go index ab58db72069..8b7a2c769c1 100644 --- a/google/resource_container_cluster_test.go +++ b/google/resource_container_cluster_test.go @@ -1798,7 +1798,7 @@ resource "google_container_cluster" "with_tpu" { zone = "us-central1-b" initial_node_count = 1 - enable_tpu = true + enable_tpu = true network = "${google_compute_network.container_network.name}" subnetwork = "${google_compute_subnetwork.container_subnetwork.name}"