From 0542c723e14c811d2b07ba88a057f41dd3cb762e Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Thu, 2 Aug 2018 18:57:28 -0700 Subject: [PATCH 01/10] Remove validation logic for kubenet network plugin. --- azurerm/resource_arm_kubernetes_cluster.go | 24 ------------------- .../resource_arm_kubernetes_cluster_test.go | 10 ++------ .../docs/r/kubernetes_cluster.html.markdown | 14 ++++------- 3 files changed, 7 insertions(+), 41 deletions(-) diff --git a/azurerm/resource_arm_kubernetes_cluster.go b/azurerm/resource_arm_kubernetes_cluster.go index dd24e53abdad..39542ec42482 100644 --- a/azurerm/resource_arm_kubernetes_cluster.go +++ b/azurerm/resource_arm_kubernetes_cluster.go @@ -23,30 +23,6 @@ func resourceArmKubernetesCluster() *schema.Resource { Importer: &schema.ResourceImporter{ State: schema.ImportStatePassthrough, }, - CustomizeDiff: func(diff *schema.ResourceDiff, v interface{}) error { - if v, exists := diff.GetOk("network_profile"); exists { - rawProfiles := v.([]interface{}) - if len(rawProfiles) == 0 { - return nil - } - - // then ensure the conditionally-required fields are set - profile := rawProfiles[0].(map[string]interface{}) - networkPlugin := profile["network_plugin"].(string) - - if networkPlugin == "kubenet" { - dockerBridgeCidr := profile["docker_bridge_cidr"].(string) - dnsServiceIP := profile["dns_service_ip"].(string) - serviceCidr := profile["service_cidr"].(string) - - if dockerBridgeCidr == "" || dnsServiceIP == "" || serviceCidr == "" { - return fmt.Errorf("If the `network_plugin` is set to `kubenet` then the fields `docker_bridge_cidr`, `dns_service_ip` and `service_cidr` must not be empty.") - } - } - } - - return nil - }, Schema: map[string]*schema.Schema{ "name": { diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 1ea7c68a0d2a..5db8493dc55c 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -461,12 +461,9 @@ resource "azurerm_kubernetes_cluster" "test" { client_id = "%s" client_secret = "%s" } - + network_profile { network_plugin = "kubenet" - dns_service_ip = "10.10.0.10" - docker_bridge_cidr = "172.18.0.1/16" - service_cidr = "10.10.0.0/16" } } `, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret) @@ -526,9 +523,6 @@ resource "azurerm_kubernetes_cluster" "test" { network_profile { network_plugin = "kubenet" - dns_service_ip = "10.10.0.10" - docker_bridge_cidr = "172.18.0.1/16" - service_cidr = "10.10.0.0/16" } } `, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret) @@ -585,7 +579,7 @@ resource "azurerm_kubernetes_cluster" "test" { client_id = "%s" client_secret = "%s" } - + network_profile { network_plugin = "azure" } diff --git a/website/docs/r/kubernetes_cluster.html.markdown b/website/docs/r/kubernetes_cluster.html.markdown index 83b9a86d8265..274df5aa0de2 100644 --- a/website/docs/r/kubernetes_cluster.html.markdown +++ b/website/docs/r/kubernetes_cluster.html.markdown @@ -217,19 +217,19 @@ The following arguments are supported: `network_profile` supports the following: -* `network_plugin` - (Required) Network plugin to use for networking. Currently supported values are 'azure' and 'kubenet'. Changing this forces a new resource to be created. +* `network_plugin` - (Required) Network plugin to use for networking. Currently supported values are `azure` and `kubenet`. Changing this forces a new resource to be created. -> **NOTE:** When `network_plugin` is set to `azure` - the `vnet_subnet_id` field in the `agent_pool_profile` block must be set. -* `service_cidr` - (Optional) The Network Range used by the Kubernetes service. This is required when `network_plugin` is set to `kubenet`. Changing this forces a new resource to be created. +* `service_cidr` - (Optional) The Network Range used by the Kubernetes service. Changing this forces a new resource to be created. ~> **NOTE:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. -* `dns_service_ip` - (Optional) IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). This is required when `network_plugin` is set to `kubenet`. Changing this forces a new resource to be created. +* `dns_service_ip` - (Optional) IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created. -* `docker_bridge_cidr` - (Optional) IP address (in CIDR notation) used as the Docker bridge IP address on nodes. This is required when `network_plugin` is set to `kubenet`. Changing this forces a new resource to be created. +* `docker_bridge_cidr` - (Optional) IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created. -* `pod_cidr` - (Optional) The CIDR to use for pod IP addresses. Changing this forces a new resource to be created. +* `pod_cidr` - (Optional) The CIDR to use for pod IP addresses. This field can only be set when `network_plugin` is set to `kubenet`. Changing this forces a new resource to be created. Here's an example of configuring the `kubenet` Networking Profile: @@ -248,10 +248,6 @@ resource "azurerm_kubernetes_cluster" "test" { network_profile { network_plugin = "kubenet" - pod_cidr = "10.244.0.0/24" - dns_service_ip = "10.10.0.10" - docker_bridge_cidr = "172.17.0.1/16" - service_cidr = "10.10.0.0/16" } } ``` From 639765818d3e07c917fa59488b7dd0ff41677264 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Fri, 3 Aug 2018 16:10:47 -0700 Subject: [PATCH 02/10] :bug: (Azure Kubernete resource.) Update the validation logic of network_profile setting. The docker_bridge_cidr, dns_service_ip, service_cidr should be either all empty or all non-empty. Closes #1648 --- azurerm/resource_arm_kubernetes_cluster.go | 26 +++ .../resource_arm_kubernetes_cluster_test.go | 166 +++++------------- .../docs/r/kubernetes_cluster.html.markdown | 6 +- 3 files changed, 71 insertions(+), 127 deletions(-) diff --git a/azurerm/resource_arm_kubernetes_cluster.go b/azurerm/resource_arm_kubernetes_cluster.go index 39542ec42482..d30058f6f249 100644 --- a/azurerm/resource_arm_kubernetes_cluster.go +++ b/azurerm/resource_arm_kubernetes_cluster.go @@ -24,6 +24,32 @@ func resourceArmKubernetesCluster() *schema.Resource { State: schema.ImportStatePassthrough, }, + CustomizeDiff: func(diff *schema.ResourceDiff, v interface{}) error { + if v, exists := diff.GetOk("network_profile"); exists { + rawProfiles := v.([]interface{}) + if len(rawProfiles) == 0 { + return nil + } + + // then ensure the conditionally-required fields are set + profile := rawProfiles[0].(map[string]interface{}) + networkPlugin := profile["network_plugin"].(string) + + if networkPlugin == "kubenet" || networkPlugin == "azure" { + dockerBridgeCidr := profile["docker_bridge_cidr"].(string) + dnsServiceIP := profile["dns_service_ip"].(string) + serviceCidr := profile["service_cidr"].(string) + + if !((dockerBridgeCidr == "" && dnsServiceIP == "" && serviceCidr == "") || + (dockerBridgeCidr != "" && dnsServiceIP != "" && serviceCidr != "")) { + return fmt.Errorf("`docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or neither should be empty.") + } + } + } + + return nil + }, + Schema: map[string]*schema.Schema{ "name": { Type: schema.TypeString, diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 5db8493dc55c..940cac2ed4bb 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -183,7 +183,9 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenet(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingKubenet(ri, clientId, clientSecret, testLocation()) + config := testAccAzureRMKubernetesCluster_advancedNetworking( + ri, clientId, clientSecret, testLocation(), + "kubenet", "", "", "") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -206,7 +208,9 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(t *testin ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(ri, clientId, clientSecret, testLocation()) + config := testAccAzureRMKubernetesCluster_advancedNetworking( + ri, clientId, clientSecret, testLocation(), + "kubenet", "10.10.0.10", "172.18.0.1/16", "10.10.0.0/16") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -229,7 +233,34 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingAzure(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingAzure(ri, clientId, clientSecret, testLocation()) + config := testAccAzureRMKubernetesCluster_advancedNetworking( + ri, clientId, clientSecret, testLocation(), + "azure", "", "", "") + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMKubernetesClusterDestroy, + Steps: []resource.TestStep{ + { + Config: config, + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMKubernetesClusterExists(resourceName), + resource.TestCheckResourceAttr(resourceName, "network_profile.0.network_plugin", "azure"), + ), + }, + }, + }) +} + +func TestAccAzureRMKubernetesCluster_advancedNetworkingAzureComplete(t *testing.T) { + resourceName := "azurerm_kubernetes_cluster.test" + ri := acctest.RandInt() + clientId := os.Getenv("ARM_CLIENT_ID") + clientSecret := os.Getenv("ARM_CLIENT_SECRET") + config := testAccAzureRMKubernetesCluster_advancedNetworking( + ri, clientId, clientSecret, testLocation(), + "azure", "10.10.0.10", "172.18.0.1/16", "10.10.0.0/16") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -410,7 +441,9 @@ resource "azurerm_kubernetes_cluster" "test" { `, rInt, location, rInt, rInt, rInt, clientId, clientSecret) } -func testAccAzureRMKubernetesCluster_advancedNetworkingKubenet(rInt int, clientId string, clientSecret string, location string) string { +func testAccAzureRMKubernetesCluster_advancedNetworking(rInt int, clientId string, clientSecret string, location string, + networkProfile string, dnsServiceIp string, dockerBridgeCidr string, + serviceCidr string) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { name = "acctestRG-%d" @@ -463,128 +496,13 @@ resource "azurerm_kubernetes_cluster" "test" { } network_profile { - network_plugin = "kubenet" - } -} -`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret) -} - -func testAccAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(rInt int, clientId string, clientSecret string, location string) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_virtual_network" "test" { - name = "acctestvirtnet%d" - address_space = ["10.1.0.0/16"] - location = "${azurerm_resource_group.test.location}" - resource_group_name = "${azurerm_resource_group.test.name}" - - tags { - environment = "Testing" + network_plugin = "%s" + dns_service_ip = "%s" + docker_bridge_cidr = "%s" + service_cidr = "%s" } } - -resource "azurerm_subnet" "test" { - name = "acctestsubnet%d" - resource_group_name = "${azurerm_resource_group.test.name}" - virtual_network_name = "${azurerm_virtual_network.test.name}" - address_prefix = "10.1.0.0/24" -} - -resource "azurerm_kubernetes_cluster" "test" { - name = "acctestaks%d" - location = "${azurerm_resource_group.test.location}" - resource_group_name = "${azurerm_resource_group.test.name}" - dns_prefix = "acctestaks%d" - kubernetes_version = "1.7.7" - - linux_profile { - admin_username = "acctestuser%d" - - ssh_key { - key_data = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqaZoyiz1qbdOQ8xEf6uEu1cCwYowo5FHtsBhqLoDnnp7KUTEBN+L2NxRIfQ781rxV6Iq5jSav6b2Q8z5KiseOlvKA/RF2wqU0UPYqQviQhLmW6THTpmrv/YkUCuzxDpsH7DUDhZcwySLKVVe0Qm3+5N2Ta6UYH3lsDf9R9wTP2K/+vAnflKebuypNlmocIvakFWoZda18FOmsOoIVXQ8HWFNCuw9ZCunMSN62QGamCe3dL5cXlkgHYv7ekJE15IA9aOJcM7e90oeTqo+7HTcWfdu0qQqPWY5ujyMw/llas8tsXY85LFqRnr3gJ02bAscjc477+X+j/gkpFoN1QEmt terraform@demo.tld" - } - } - - agent_pool_profile { - name = "default" - count = "2" - vm_size = "Standard_DS2_v2" - vnet_subnet_id = "${azurerm_subnet.test.id}" - } - - service_principal { - client_id = "%s" - client_secret = "%s" - } - - network_profile { - network_plugin = "kubenet" - } -} -`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret) -} - -func testAccAzureRMKubernetesCluster_advancedNetworkingAzure(rInt int, clientId string, clientSecret string, location string) string { - return fmt.Sprintf(` -resource "azurerm_resource_group" "test" { - name = "acctestRG-%d" - location = "%s" -} - -resource "azurerm_virtual_network" "test" { - name = "acctestvirtnet%d" - address_space = ["10.1.0.0/16"] - location = "${azurerm_resource_group.test.location}" - resource_group_name = "${azurerm_resource_group.test.name}" - - tags { - environment = "Testing" - } -} - -resource "azurerm_subnet" "test" { - name = "acctestsubnet%d" - resource_group_name = "${azurerm_resource_group.test.name}" - virtual_network_name = "${azurerm_virtual_network.test.name}" - address_prefix = "10.1.0.0/24" -} - -resource "azurerm_kubernetes_cluster" "test" { - name = "acctestaks%d" - location = "${azurerm_resource_group.test.location}" - resource_group_name = "${azurerm_resource_group.test.name}" - dns_prefix = "acctestaks%d" - kubernetes_version = "1.7.7" - - linux_profile { - admin_username = "acctestuser%d" - - ssh_key { - key_data = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqaZoyiz1qbdOQ8xEf6uEu1cCwYowo5FHtsBhqLoDnnp7KUTEBN+L2NxRIfQ781rxV6Iq5jSav6b2Q8z5KiseOlvKA/RF2wqU0UPYqQviQhLmW6THTpmrv/YkUCuzxDpsH7DUDhZcwySLKVVe0Qm3+5N2Ta6UYH3lsDf9R9wTP2K/+vAnflKebuypNlmocIvakFWoZda18FOmsOoIVXQ8HWFNCuw9ZCunMSN62QGamCe3dL5cXlkgHYv7ekJE15IA9aOJcM7e90oeTqo+7HTcWfdu0qQqPWY5ujyMw/llas8tsXY85LFqRnr3gJ02bAscjc477+X+j/gkpFoN1QEmt terraform@demo.tld" - } - } - - agent_pool_profile { - name = "default" - count = "2" - vm_size = "Standard_DS2_v2" - vnet_subnet_id = "${azurerm_subnet.test.id}" - } - - service_principal { - client_id = "%s" - client_secret = "%s" - } - - network_profile { - network_plugin = "azure" - } -} -`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret) +`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret, networkProfile, dnsServiceIp, dockerBridgeCidr, serviceCidr) } func testCheckAzureRMKubernetesClusterExists(name string) resource.TestCheckFunc { diff --git a/website/docs/r/kubernetes_cluster.html.markdown b/website/docs/r/kubernetes_cluster.html.markdown index 274df5aa0de2..43b2f6ec5c33 100644 --- a/website/docs/r/kubernetes_cluster.html.markdown +++ b/website/docs/r/kubernetes_cluster.html.markdown @@ -221,13 +221,13 @@ The following arguments are supported: -> **NOTE:** When `network_plugin` is set to `azure` - the `vnet_subnet_id` field in the `agent_pool_profile` block must be set. -* `service_cidr` - (Optional) The Network Range used by the Kubernetes service. Changing this forces a new resource to be created. +* `service_cidr` - (Optional) The Network Range used by the Kubernetes service. This field can only be set together with `dns_service_ip` and `docker_bridge_cidr`. Changing this forces a new resource to be created. ~> **NOTE:** This range should not be used by any network element on or connected to this VNet. Service address CIDR must be smaller than /12. -* `dns_service_ip` - (Optional) IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). Changing this forces a new resource to be created. +* `dns_service_ip` - (Optional) IP address within the Kubernetes service address range that will be used by cluster service discovery (kube-dns). This field can only be set together with `service_cidr` and `docker_bridge_cidr`. Changing this forces a new resource to be created. -* `docker_bridge_cidr` - (Optional) IP address (in CIDR notation) used as the Docker bridge IP address on nodes. Changing this forces a new resource to be created. +* `docker_bridge_cidr` - (Optional) IP address (in CIDR notation) used as the Docker bridge IP address on nodes. This field can only be set together with `service_cidr` and `dns_service_ip`. Changing this forces a new resource to be created. * `pod_cidr` - (Optional) The CIDR to use for pod IP addresses. This field can only be set when `network_plugin` is set to `kubenet`. Changing this forces a new resource to be created. From 073706dac14fd933e1bc91e8d42433a4a71c4c21 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Fri, 3 Aug 2018 16:29:24 -0700 Subject: [PATCH 03/10] :bug: (data source of AKS.) Fix the compiling error of tests of data source for AKS. Updated the test confiuration code for data source of AKS to use new refactored functions. --- azurerm/data_source_kubernetes_cluster_test.go | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/azurerm/data_source_kubernetes_cluster_test.go b/azurerm/data_source_kubernetes_cluster_test.go index 530a35263fb1..5f3c953d93d6 100644 --- a/azurerm/data_source_kubernetes_cluster_test.go +++ b/azurerm/data_source_kubernetes_cluster_test.go @@ -145,7 +145,9 @@ data "azurerm_kubernetes_cluster" "test" { } func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzure(rInt int, clientId string, clientSecret string, location string) string { - resource := testAccAzureRMKubernetesCluster_advancedNetworkingAzure(rInt, clientId, clientSecret, location) + resource := testAccAzureRMKubernetesCluster_advancedNetworking( + rInt, clientId, clientSecret, location, + "azure", "", "", "") return fmt.Sprintf(` %s @@ -157,7 +159,9 @@ data "azurerm_kubernetes_cluster" "test" { } func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenet(rInt int, clientId string, clientSecret string, location string) string { - resource := testAccAzureRMKubernetesCluster_advancedNetworkingKubenet(rInt, clientId, clientSecret, location) + resource := testAccAzureRMKubernetesCluster_advancedNetworking( + rInt, clientId, clientSecret, location, + "kubenet", "", "", "") return fmt.Sprintf(` %s From 104a9f01e19eff7a01836fe6e8b4a81dfbd04548 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Fri, 3 Aug 2018 16:54:03 -0700 Subject: [PATCH 04/10] :bug: (AKS resource.) Format error. Fix the formatting error while running gofmt on AKS resource related files. --- azurerm/resource_arm_kubernetes_cluster.go | 2 +- azurerm/resource_arm_kubernetes_cluster_test.go | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/azurerm/resource_arm_kubernetes_cluster.go b/azurerm/resource_arm_kubernetes_cluster.go index d30058f6f249..2e268abfbed4 100644 --- a/azurerm/resource_arm_kubernetes_cluster.go +++ b/azurerm/resource_arm_kubernetes_cluster.go @@ -41,7 +41,7 @@ func resourceArmKubernetesCluster() *schema.Resource { serviceCidr := profile["service_cidr"].(string) if !((dockerBridgeCidr == "" && dnsServiceIP == "" && serviceCidr == "") || - (dockerBridgeCidr != "" && dnsServiceIP != "" && serviceCidr != "")) { + (dockerBridgeCidr != "" && dnsServiceIP != "" && serviceCidr != "")) { return fmt.Errorf("`docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or neither should be empty.") } } diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 940cac2ed4bb..0b889cf7c39f 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -442,8 +442,8 @@ resource "azurerm_kubernetes_cluster" "test" { } func testAccAzureRMKubernetesCluster_advancedNetworking(rInt int, clientId string, clientSecret string, location string, - networkProfile string, dnsServiceIp string, dockerBridgeCidr string, - serviceCidr string) string { + networkProfile string, dnsServiceIp string, dockerBridgeCidr string, + serviceCidr string) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { name = "acctestRG-%d" From cf1401db90b070ec3b585468e3e7ecf407320b89 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Fri, 3 Aug 2018 17:38:10 -0700 Subject: [PATCH 05/10] :memo: (AKS resource documentation.) Fix the error messsage for network profile setting. Change the description of error message to be more readable. --- azurerm/resource_arm_kubernetes_cluster.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azurerm/resource_arm_kubernetes_cluster.go b/azurerm/resource_arm_kubernetes_cluster.go index 2e268abfbed4..948a03913ccd 100644 --- a/azurerm/resource_arm_kubernetes_cluster.go +++ b/azurerm/resource_arm_kubernetes_cluster.go @@ -42,7 +42,7 @@ func resourceArmKubernetesCluster() *schema.Resource { if !((dockerBridgeCidr == "" && dnsServiceIP == "" && serviceCidr == "") || (dockerBridgeCidr != "" && dnsServiceIP != "" && serviceCidr != "")) { - return fmt.Errorf("`docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or neither should be empty.") + return fmt.Errorf("`docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.") } } } From 386080d0977bec6c5fa9c73b11444cfa14d72ee9 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Mon, 6 Aug 2018 22:39:59 -0700 Subject: [PATCH 06/10] :recycle: (AKS resource.) Refactor the validation logic throuhg removing deep nested code. Use early return to remove deeply nested if-else block. --- azurerm/resource_arm_kubernetes_cluster.go | 27 ++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/azurerm/resource_arm_kubernetes_cluster.go b/azurerm/resource_arm_kubernetes_cluster.go index 948a03913ccd..d3ded86a0b3d 100644 --- a/azurerm/resource_arm_kubernetes_cluster.go +++ b/azurerm/resource_arm_kubernetes_cluster.go @@ -35,16 +35,25 @@ func resourceArmKubernetesCluster() *schema.Resource { profile := rawProfiles[0].(map[string]interface{}) networkPlugin := profile["network_plugin"].(string) - if networkPlugin == "kubenet" || networkPlugin == "azure" { - dockerBridgeCidr := profile["docker_bridge_cidr"].(string) - dnsServiceIP := profile["dns_service_ip"].(string) - serviceCidr := profile["service_cidr"].(string) - - if !((dockerBridgeCidr == "" && dnsServiceIP == "" && serviceCidr == "") || - (dockerBridgeCidr != "" && dnsServiceIP != "" && serviceCidr != "")) { - return fmt.Errorf("`docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.") - } + if networkPlugin != "kubenet" && networkPlugin != "azure" { + return nil + } + + dockerBridgeCidr := profile["docker_bridge_cidr"].(string) + dnsServiceIP := profile["dns_service_ip"].(string) + serviceCidr := profile["service_cidr"].(string) + + // All empty values. + if dockerBridgeCidr == "" && dnsServiceIP == "" && serviceCidr == "" { + return nil } + + // All set values. + if dockerBridgeCidr != "" && dnsServiceIP != "" && serviceCidr != "" { + return nil + } + + return fmt.Errorf("`docker_bridge_cidr`, `dns_service_ip` and `service_cidr` should all be empty or all should be set.") } return nil From 8cd7bbcb1be7b1ce6164e82a18d5aa206bd77b8f Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Tue, 7 Aug 2018 15:35:22 -0700 Subject: [PATCH 07/10] :recycle: (Test code of AKS resource.) Rename test case name. TestAzureRMKubernetesCluster_agentPoolName was a unit test, which should not have Acc in the naming. --- azurerm/resource_arm_kubernetes_cluster_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 0b889cf7c39f..0f808e959238 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -11,7 +11,7 @@ import ( "github.com/hashicorp/terraform/terraform" ) -func TestAccAzureRMKubernetesCluster_agentPoolName(t *testing.T) { +func TestAzureRMKubernetesCluster_agentPoolName(t *testing.T) { cases := []struct { Input string ExpectError bool From 1b8e35afbc624a2df324ce96a9701d5dcd061882 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Wed, 8 Aug 2018 16:15:18 -0700 Subject: [PATCH 08/10] :recycle: (AKS resource testing.) Refactor the test case configuration functions. Ignore the setting of empty string values. --- .../resource_arm_kubernetes_cluster_test.go | 44 ++++++++++--------- 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 0f808e959238..277719aea6ee 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -183,9 +183,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenet(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworking( - ri, clientId, clientSecret, testLocation(), - "kubenet", "", "", "") + config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(),"kubenet") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -208,9 +206,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(t *testin ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworking( - ri, clientId, clientSecret, testLocation(), - "kubenet", "10.10.0.10", "172.18.0.1/16", "10.10.0.0/16") + config := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(ri, clientId, clientSecret, testLocation(),"kubenet") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -233,9 +229,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingAzure(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworking( - ri, clientId, clientSecret, testLocation(), - "azure", "", "", "") + config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(),"azure") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -258,9 +252,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingAzureComplete(t *testing. ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworking( - ri, clientId, clientSecret, testLocation(), - "azure", "10.10.0.10", "172.18.0.1/16", "10.10.0.0/16") + config := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(ri, clientId, clientSecret, testLocation(),"azure") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -441,9 +433,7 @@ resource "azurerm_kubernetes_cluster" "test" { `, rInt, location, rInt, rInt, rInt, clientId, clientSecret) } -func testAccAzureRMKubernetesCluster_advancedNetworking(rInt int, clientId string, clientSecret string, location string, - networkProfile string, dnsServiceIp string, dockerBridgeCidr string, - serviceCidr string) string { +func testAccAzureRMKubernetesCluster_advancedNetworking(rInt int, clientId string, clientSecret string, location string, networkProfile string) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { name = "acctestRG-%d" @@ -495,14 +485,28 @@ resource "azurerm_kubernetes_cluster" "test" { client_secret = "%s" } + %s +} +`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret, networkProfile) +} + +func testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { + return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` network_profile { - network_plugin = "%s" - dns_service_ip = "%s" - docker_bridge_cidr = "%s" - service_cidr = "%s" + network_plugin = "%s" } +`), networkPlugin) } -`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret, networkProfile, dnsServiceIp, dockerBridgeCidr, serviceCidr) + +func testAccAzureRMKubernetesCluster_advancedNetworkingComplete(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { + return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` + network_profile { + network_plugin = "%s" + dns_service_ip = "10.10.0.10" + docker_bridge_cidr = "172.18.0.1/16" + service_cidr = "10.10.0.0/16" + } +`), networkPlugin) } func testCheckAzureRMKubernetesClusterExists(name string) resource.TestCheckFunc { From 625b9f231072092fff500a8235d9bc0fd389eaf5 Mon Sep 17 00:00:00 2001 From: Su Shi <1684739+metacpp@users.noreply.github.com> Date: Wed, 8 Aug 2018 16:36:31 -0700 Subject: [PATCH 09/10] :bug: (AKS data source testing.) The wrong arguments passed in. Updated the arguments to align with new refactored function for configuration. --- azurerm/data_source_kubernetes_cluster_test.go | 8 ++------ azurerm/resource_arm_kubernetes_cluster_test.go | 12 ++++++------ 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/azurerm/data_source_kubernetes_cluster_test.go b/azurerm/data_source_kubernetes_cluster_test.go index 5f3c953d93d6..841e6da40c63 100644 --- a/azurerm/data_source_kubernetes_cluster_test.go +++ b/azurerm/data_source_kubernetes_cluster_test.go @@ -145,9 +145,7 @@ data "azurerm_kubernetes_cluster" "test" { } func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzure(rInt int, clientId string, clientSecret string, location string) string { - resource := testAccAzureRMKubernetesCluster_advancedNetworking( - rInt, clientId, clientSecret, location, - "azure", "", "", "") + resource := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(rInt, clientId, clientSecret, location, "azure") return fmt.Sprintf(` %s @@ -159,9 +157,7 @@ data "azurerm_kubernetes_cluster" "test" { } func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenet(rInt int, clientId string, clientSecret string, location string) string { - resource := testAccAzureRMKubernetesCluster_advancedNetworking( - rInt, clientId, clientSecret, location, - "kubenet", "", "", "") + resource := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(rInt, clientId, clientSecret, location, "kubenet") return fmt.Sprintf(` %s diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 277719aea6ee..4def8ff08800 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -183,7 +183,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenet(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(),"kubenet") + config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(), "kubenet") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -206,7 +206,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(t *testin ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(ri, clientId, clientSecret, testLocation(),"kubenet") + config := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(ri, clientId, clientSecret, testLocation(), "kubenet") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -229,7 +229,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingAzure(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(),"azure") + config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(), "azure") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -252,7 +252,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingAzureComplete(t *testing. ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(ri, clientId, clientSecret, testLocation(),"azure") + config := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(ri, clientId, clientSecret, testLocation(), "azure") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -491,7 +491,7 @@ resource "azurerm_kubernetes_cluster" "test" { } func testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { - return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` + return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` network_profile { network_plugin = "%s" } @@ -499,7 +499,7 @@ func testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(rInt int, clientI } func testAccAzureRMKubernetesCluster_advancedNetworkingComplete(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { - return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` + return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` network_profile { network_plugin = "%s" dns_service_ip = "10.10.0.10" From 4502449d6407c22c133e6403e7257f71df4fea6d Mon Sep 17 00:00:00 2001 From: tombuildsstuff Date: Thu, 9 Aug 2018 10:51:21 +0200 Subject: [PATCH 10/10] Fixing the outstanding PR comments --- .../data_source_kubernetes_cluster_test.go | 84 ++++++++++++++++++- .../resource_arm_kubernetes_cluster_test.go | 73 ++++++++++++---- 2 files changed, 142 insertions(+), 15 deletions(-) diff --git a/azurerm/data_source_kubernetes_cluster_test.go b/azurerm/data_source_kubernetes_cluster_test.go index 841e6da40c63..480fab348748 100644 --- a/azurerm/data_source_kubernetes_cluster_test.go +++ b/azurerm/data_source_kubernetes_cluster_test.go @@ -91,6 +91,35 @@ func TestAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzure(t *testin }) } +func TestAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzureComplete(t *testing.T) { + dataSourceName := "data.azurerm_kubernetes_cluster.test" + ri := acctest.RandInt() + clientId := os.Getenv("ARM_CLIENT_ID") + clientSecret := os.Getenv("ARM_CLIENT_SECRET") + location := testLocation() + config := testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzureComplete(ri, clientId, clientSecret, location) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMKubernetesClusterDestroy, + Steps: []resource.TestStep{ + { + Config: config, + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMKubernetesClusterExists(dataSourceName), + resource.TestCheckResourceAttrSet(dataSourceName, "agent_pool_profile.0.vnet_subnet_id"), + resource.TestCheckResourceAttr(dataSourceName, "network_profile.0.network_plugin", "azure"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.network_plugin"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.dns_service_ip"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.docker_bridge_cidr"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.service_cidr"), + ), + }, + }, + }) +} + func TestAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenet(t *testing.T) { dataSourceName := "data.azurerm_kubernetes_cluster.test" ri := acctest.RandInt() @@ -120,6 +149,35 @@ func TestAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenet(t *test }) } +func TestAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(t *testing.T) { + dataSourceName := "data.azurerm_kubernetes_cluster.test" + ri := acctest.RandInt() + clientId := os.Getenv("ARM_CLIENT_ID") + clientSecret := os.Getenv("ARM_CLIENT_SECRET") + location := testLocation() + config := testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(ri, clientId, clientSecret, location) + + resource.Test(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testCheckAzureRMKubernetesClusterDestroy, + Steps: []resource.TestStep{ + { + Config: config, + Check: resource.ComposeTestCheckFunc( + testCheckAzureRMKubernetesClusterExists(dataSourceName), + resource.TestCheckResourceAttrSet(dataSourceName, "agent_pool_profile.0.vnet_subnet_id"), + resource.TestCheckResourceAttr(dataSourceName, "network_profile.0.network_plugin", "kubenet"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.network_plugin"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.dns_service_ip"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.docker_bridge_cidr"), + resource.TestCheckResourceAttrSet(dataSourceName, "network_profile.0.service_cidr"), + ), + }, + }, + }) +} + func testAccDataSourceAzureRMKubernetesCluster_basic(rInt int, clientId string, clientSecret string, location string) string { resource := testAccAzureRMKubernetesCluster_basic(rInt, clientId, clientSecret, location) return fmt.Sprintf(` @@ -145,7 +203,19 @@ data "azurerm_kubernetes_cluster" "test" { } func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzure(rInt int, clientId string, clientSecret string, location string) string { - resource := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(rInt, clientId, clientSecret, location, "azure") + resource := testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, "azure") + return fmt.Sprintf(` +%s + +data "azurerm_kubernetes_cluster" "test" { + name = "${azurerm_kubernetes_cluster.test.name}" + resource_group_name = "${azurerm_kubernetes_cluster.test.resource_group_name}" +} +`, resource) +} + +func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingAzureComplete(rInt int, clientId string, clientSecret string, location string) string { + resource := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(rInt, clientId, clientSecret, location, "azure") return fmt.Sprintf(` %s @@ -157,6 +227,18 @@ data "azurerm_kubernetes_cluster" "test" { } func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenet(rInt int, clientId string, clientSecret string, location string) string { + resource := testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, "kubenet") + return fmt.Sprintf(` +%s + +data "azurerm_kubernetes_cluster" "test" { + name = "${azurerm_kubernetes_cluster.test.name}" + resource_group_name = "${azurerm_kubernetes_cluster.test.resource_group_name}" +} +`, resource) +} + +func testAccDataSourceAzureRMKubernetesCluster_advancedNetworkingKubenetComplete(rInt int, clientId string, clientSecret string, location string) string { resource := testAccAzureRMKubernetesCluster_advancedNetworkingComplete(rInt, clientId, clientSecret, location, "kubenet") return fmt.Sprintf(` %s diff --git a/azurerm/resource_arm_kubernetes_cluster_test.go b/azurerm/resource_arm_kubernetes_cluster_test.go index 4def8ff08800..762ffabf2b78 100644 --- a/azurerm/resource_arm_kubernetes_cluster_test.go +++ b/azurerm/resource_arm_kubernetes_cluster_test.go @@ -183,7 +183,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingKubenet(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(), "kubenet") + config := testAccAzureRMKubernetesCluster_advancedNetworking(ri, clientId, clientSecret, testLocation(), "kubenet") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -229,7 +229,7 @@ func TestAccAzureRMKubernetesCluster_advancedNetworkingAzure(t *testing.T) { ri := acctest.RandInt() clientId := os.Getenv("ARM_CLIENT_ID") clientSecret := os.Getenv("ARM_CLIENT_SECRET") - config := testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(ri, clientId, clientSecret, testLocation(), "azure") + config := testAccAzureRMKubernetesCluster_advancedNetworking(ri, clientId, clientSecret, testLocation(), "azure") resource.Test(t, resource.TestCase{ PreCheck: func() { testAccPreCheck(t) }, @@ -433,7 +433,7 @@ resource "azurerm_kubernetes_cluster" "test" { `, rInt, location, rInt, rInt, rInt, clientId, clientSecret) } -func testAccAzureRMKubernetesCluster_advancedNetworking(rInt int, clientId string, clientSecret string, location string, networkProfile string) string { +func testAccAzureRMKubernetesCluster_advancedNetworking(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { return fmt.Sprintf(` resource "azurerm_resource_group" "test" { name = "acctestRG-%d" @@ -485,28 +485,73 @@ resource "azurerm_kubernetes_cluster" "test" { client_secret = "%s" } - %s -} -`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret, networkProfile) -} - -func testAccAzureRMKubernetesCluster_advancedNetworkingMinimum(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { - return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` network_profile { network_plugin = "%s" } -`), networkPlugin) +} +`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret, networkPlugin) } func testAccAzureRMKubernetesCluster_advancedNetworkingComplete(rInt int, clientId string, clientSecret string, location string, networkPlugin string) string { - return fmt.Sprintf(testAccAzureRMKubernetesCluster_advancedNetworking(rInt, clientId, clientSecret, location, ` + return fmt.Sprintf(` +resource "azurerm_resource_group" "test" { + name = "acctestRG-%d" + location = "%s" +} + +resource "azurerm_virtual_network" "test" { + name = "acctestvirtnet%d" + address_space = ["10.1.0.0/16"] + location = "${azurerm_resource_group.test.location}" + resource_group_name = "${azurerm_resource_group.test.name}" + + tags { + environment = "Testing" + } +} + +resource "azurerm_subnet" "test" { + name = "acctestsubnet%d" + resource_group_name = "${azurerm_resource_group.test.name}" + virtual_network_name = "${azurerm_virtual_network.test.name}" + address_prefix = "10.1.0.0/24" +} + +resource "azurerm_kubernetes_cluster" "test" { + name = "acctestaks%d" + location = "${azurerm_resource_group.test.location}" + resource_group_name = "${azurerm_resource_group.test.name}" + dns_prefix = "acctestaks%d" + kubernetes_version = "1.7.7" + + linux_profile { + admin_username = "acctestuser%d" + + ssh_key { + key_data = "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCqaZoyiz1qbdOQ8xEf6uEu1cCwYowo5FHtsBhqLoDnnp7KUTEBN+L2NxRIfQ781rxV6Iq5jSav6b2Q8z5KiseOlvKA/RF2wqU0UPYqQviQhLmW6THTpmrv/YkUCuzxDpsH7DUDhZcwySLKVVe0Qm3+5N2Ta6UYH3lsDf9R9wTP2K/+vAnflKebuypNlmocIvakFWoZda18FOmsOoIVXQ8HWFNCuw9ZCunMSN62QGamCe3dL5cXlkgHYv7ekJE15IA9aOJcM7e90oeTqo+7HTcWfdu0qQqPWY5ujyMw/llas8tsXY85LFqRnr3gJ02bAscjc477+X+j/gkpFoN1QEmt terraform@demo.tld" + } + } + + agent_pool_profile { + name = "default" + count = "2" + vm_size = "Standard_DS2_v2" + vnet_subnet_id = "${azurerm_subnet.test.id}" + } + + service_principal { + client_id = "%s" + client_secret = "%s" + } + network_profile { - network_plugin = "%s" + network_plugin = "%s" dns_service_ip = "10.10.0.10" docker_bridge_cidr = "172.18.0.1/16" service_cidr = "10.10.0.0/16" } -`), networkPlugin) +} +`, rInt, location, rInt, rInt, rInt, rInt, rInt, clientId, clientSecret, networkPlugin) } func testCheckAzureRMKubernetesClusterExists(name string) resource.TestCheckFunc {