From a87cb8099b11b2e4d0b2328cacf73e496b8df461 Mon Sep 17 00:00:00 2001 From: The Magician Date: Tue, 30 Jan 2024 02:45:06 -0800 Subject: [PATCH] Update Vmware Engine acceptance tests to provision resources in a new project (#9835) (#17136) * Update `TestAccDataSourceVmwareEngineNetwork_basic` to provision resources in a new project * Add depends_on to try and improve delete order * Add explicit vmware engine permissions in project, remove redundant depends_on * Add some sleeps to check IAM permission propagation * Add missing `ExternalProviders` config on acc test * Remove redundant IAM binding, re-organise dependencies * Remove unused context entry `terraform_service_account` * Update `TestAccDataSourceVmwareengineNetworkPeering_basic` to provision resources in a new project * Simplify dependencies in acceptance tests * Update `TestAccDataSourceVmwareengineNetworkPolicy_basic` to provision resources in a new project * Update `TestAccVmwareengineCluster_vmwareEngineClusterUpdate` to provision resources in a new project * Update `TestAccVmwareengineExternalAddress_vmwareEngineExternalAddressUpdate` to provision resources in a new project * Make whitespace consistent in affected acceptance tests * Add missing comma * Update remaining VMware Engine acceptance tests to use temporary projects * Remove duplicate ExternalProviders * Fix problem when referencing `google_project` resource * Fix problem when referencing `google_project` resource * Add missing `project` argument in `TestAccVmwareengineNetworkPolicy_update` * Add missing `project` argument in `TestAccVmwareengineNetworkPeering_update` * Add missing `project` argument in acceptance test resources * Add missing `project` argument in acceptance test resources * Add missing `project` argument in acceptance test resources * Update second config of test to use external project * Revert changes to TestAccVmwareengineSubnet_vmwareEngineUserDefinedSubnetUpdate * Revert changes to TestAccVmwareengineExternalAccessRule_vmwareEngineExternalAccessRuleUpdate [upstream:be616c72db6f3b6fa45762be6b25d6b473ef1333] Signed-off-by: Modular Magician --- .changelog/9835.txt | 3 + ...oogle_vmwareengine_network_peering_test.go | 72 ++++++++++++++----- ...google_vmwareengine_network_policy_test.go | 69 +++++++++++++----- ...source_google_vmwareengine_network_test.go | 47 +++++++++--- .../resource_vmwareengine_cluster_test.go | 40 ++++++++--- ..._vmwareengine_external_access_rule_test.go | 12 ++-- ...urce_vmwareengine_external_address_test.go | 40 +++++++++-- ...ource_vmwareengine_network_peering_test.go | 60 ++++++++++++---- ...source_vmwareengine_network_policy_test.go | 66 ++++++++++++----- .../resource_vmwareengine_network_test.go | 5 +- ...esource_vmwareengine_private_cloud_test.go | 37 +++++++++- 11 files changed, 355 insertions(+), 96 deletions(-) create mode 100644 .changelog/9835.txt diff --git a/.changelog/9835.txt b/.changelog/9835.txt new file mode 100644 index 00000000000..42b910df155 --- /dev/null +++ b/.changelog/9835.txt @@ -0,0 +1,3 @@ +```release-note:none + +``` \ No newline at end of file diff --git a/google/services/vmwareengine/data_source_google_vmwareengine_network_peering_test.go b/google/services/vmwareengine/data_source_google_vmwareengine_network_peering_test.go index 2f14da94bea..3f1791f1c07 100644 --- a/google/services/vmwareengine/data_source_google_vmwareengine_network_peering_test.go +++ b/google/services/vmwareengine/data_source_google_vmwareengine_network_peering_test.go @@ -7,19 +7,25 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-provider-google/google/acctest" + "github.com/hashicorp/terraform-provider-google/google/envvar" ) func TestAccDataSourceVmwareengineNetworkPeering_basic(t *testing.T) { t.Parallel() context := map[string]interface{}{ - "random_suffix": acctest.RandString(t, 10), + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineNetworkPeeringDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineNetworkPeeringDestroyProducer(t), Steps: []resource.TestStep{ { Config: testAccVmwareengineNetworkPeering_ds(context), @@ -33,31 +39,63 @@ func TestAccDataSourceVmwareengineNetworkPeering_basic(t *testing.T) { func testAccVmwareengineNetworkPeering_ds(context map[string]interface{}) string { return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "network-peering-nw" { - name = "tf-test-sample-nw%{random_suffix}" - location = "global" - type = "STANDARD" + project = google_project.project.project_id + name = "tf-test-sample-nw%{random_suffix}" + location = "global" + type = "STANDARD" + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_network" "network-peering-peer-nw" { - name = "tf-test-peer-nw%{random_suffix}" - location = "global" - type = "STANDARD" + project = google_project.project.project_id + name = "tf-test-peer-nw%{random_suffix}" + location = "global" + type = "STANDARD" + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_network_peering" "vmw-engine-network-peering" { - name = "tf-test-sample-network-peering%{random_suffix}" - description = "Sample description" - vmware_engine_network = google_vmwareengine_network.network-peering-nw.id - peer_network = google_vmwareengine_network.network-peering-peer-nw.id - peer_network_type = "VMWARE_ENGINE_NETWORK" + project = google_project.project.project_id + name = "tf-test-sample-network-peering%{random_suffix}" + description = "Sample description" + vmware_engine_network = google_vmwareengine_network.network-peering-nw.id + peer_network = google_vmwareengine_network.network-peering-peer-nw.id + peer_network_type = "VMWARE_ENGINE_NETWORK" + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } data "google_vmwareengine_network_peering" "ds" { - name = google_vmwareengine_network_peering.vmw-engine-network-peering.name - depends_on = [ - google_vmwareengine_network_peering.vmw-engine-network-peering, - ] + project = google_project.project.project_id + name = google_vmwareengine_network_peering.vmw-engine-network-peering.name } `, context) } diff --git a/google/services/vmwareengine/data_source_google_vmwareengine_network_policy_test.go b/google/services/vmwareengine/data_source_google_vmwareengine_network_policy_test.go index ffa9ede0c33..6448d8d7777 100644 --- a/google/services/vmwareengine/data_source_google_vmwareengine_network_policy_test.go +++ b/google/services/vmwareengine/data_source_google_vmwareengine_network_policy_test.go @@ -14,14 +14,19 @@ func TestAccDataSourceVmwareengineNetworkPolicy_basic(t *testing.T) { t.Parallel() context := map[string]interface{}{ - "region": envvar.GetTestRegionFromEnv(), - "random_suffix": acctest.RandString(t, 10), + "region": envvar.GetTestRegionFromEnv(), + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineNetworkPolicyDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineNetworkPolicyDestroyProducer(t), Steps: []resource.TestStep{ { Config: testAccVmwareengineNetworkPolicy_ds(context), @@ -35,27 +40,57 @@ func TestAccDataSourceVmwareengineNetworkPolicy_basic(t *testing.T) { func testAccVmwareengineNetworkPolicy_ds(context map[string]interface{}) string { return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "network-policy-ds-nw" { - name = "tf-test-sample-nw%{random_suffix}" - location = "global" - type = "STANDARD" - description = "VMwareEngine standard network sample" + project = google_project.project.project_id + name = "tf-test-sample-nw%{random_suffix}" + location = "global" + type = "STANDARD" + description = "VMwareEngine standard network sample" + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_network_policy" "vmw-engine-network-policy" { - location = "%{region}" - name = "tf-test-sample-network-policy%{random_suffix}" - internet_access { - enabled = true - } - external_ip { - enabled = true - } - edge_services_cidr = "192.168.30.0/26" - vmware_engine_network = google_vmwareengine_network.network-policy-ds-nw.id + project = google_project.project.project_id + location = "%{region}" + name = "tf-test-sample-network-policy%{random_suffix}" + internet_access { + enabled = true + } + external_ip { + enabled = true + } + edge_services_cidr = "192.168.30.0/26" + vmware_engine_network = google_vmwareengine_network.network-policy-ds-nw.id + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } data "google_vmwareengine_network_policy" "ds" { + project = google_project.project.project_id name = google_vmwareengine_network_policy.vmw-engine-network-policy.name location = "%{region}" depends_on = [ diff --git a/google/services/vmwareengine/data_source_google_vmwareengine_network_test.go b/google/services/vmwareengine/data_source_google_vmwareengine_network_test.go index b917004a19b..74202b602ec 100644 --- a/google/services/vmwareengine/data_source_google_vmwareengine_network_test.go +++ b/google/services/vmwareengine/data_source_google_vmwareengine_network_test.go @@ -7,19 +7,25 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-provider-google/google/acctest" + "github.com/hashicorp/terraform-provider-google/google/envvar" ) func TestAccDataSourceVmwareEngineNetwork_basic(t *testing.T) { t.Parallel() context := map[string]interface{}{ - "random_suffix": acctest.RandString(t, 10), + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineNetworkDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineNetworkDestroyProducer(t), Steps: []resource.TestStep{ { Config: testAccDataSourceVmwareEngineNetworkConfig(context), @@ -33,19 +39,42 @@ func TestAccDataSourceVmwareEngineNetwork_basic(t *testing.T) { func testAccDataSourceVmwareEngineNetworkConfig(context map[string]interface{}) string { return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "nw" { - name = "tf-test-sample-network%{random_suffix}" - location = "global" # Standard network needs to be global - type = "STANDARD" - description = "VMwareEngine standard network sample" + project = google_project.project.project_id + name = "tf-test-sample-network%{random_suffix}" + location = "global" # Standard network needs to be global + type = "STANDARD" + description = "VMwareEngine standard network sample" + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } data "google_vmwareengine_network" "ds" { name = google_vmwareengine_network.nw.name + project = google_project.project.project_id location = "global" - depends_on = [ - google_vmwareengine_network.nw, - ] } `, context) } diff --git a/google/services/vmwareengine/resource_vmwareengine_cluster_test.go b/google/services/vmwareengine/resource_vmwareengine_cluster_test.go index 37960f53a11..fcbc42278dc 100644 --- a/google/services/vmwareengine/resource_vmwareengine_cluster_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_cluster_test.go @@ -22,15 +22,18 @@ func TestAccVmwareengineCluster_vmwareEngineClusterUpdate(t *testing.T) { context := map[string]interface{}{ "region": "southamerica-west1", // using region with low node utilization. + "random_suffix": acctest.RandString(t, 10), "org_id": envvar.GetTestOrgFromEnv(t), "billing_account": envvar.GetTestBillingAccountFromEnv(t), - "random_suffix": acctest.RandString(t, 10), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineClusterDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineClusterDestroyProducer(t), Steps: []resource.TestStep{ { Config: testVmwareEngineClusterConfig(context, 3), @@ -69,15 +72,39 @@ func TestAccVmwareengineCluster_vmwareEngineClusterUpdate(t *testing.T) { func testVmwareEngineClusterConfig(context map[string]interface{}, nodeCount int) string { context["node_count"] = nodeCount return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} resource "google_vmwareengine_network" "cluster-nw" { + project = google_project.project.project_id name = "tf-test-cluster-nw%{random_suffix}" location = "global" type = "STANDARD" description = "PC network description." + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_private_cloud" "cluster-pc" { + project = google_project.project.project_id location = "%{region}-a" name = "tf-test-cluster-pc%{random_suffix}" description = "Sample test PC." @@ -101,16 +128,13 @@ resource "google_vmwareengine_cluster" "vmw-engine-ext-cluster" { node_type_configs { node_type_id = "standard-72" node_count = %{node_count} - custom_core_count = 32 + custom_core_count = 32 } } -data "google_vmwareengine_cluster" ds { - name = "tf-test-ext-cluster%{random_suffix}" +data "google_vmwareengine_cluster" "ds" { + name = google_vmwareengine_cluster.vmw-engine-ext-cluster.name parent = google_vmwareengine_private_cloud.cluster-pc.id - depends_on = [ - google_vmwareengine_cluster.vmw-engine-ext-cluster, - ] } `, context) } diff --git a/google/services/vmwareengine/resource_vmwareengine_external_access_rule_test.go b/google/services/vmwareengine/resource_vmwareengine_external_access_rule_test.go index b370bdf45b7..9e975bc469f 100644 --- a/google/services/vmwareengine/resource_vmwareengine_external_access_rule_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_external_access_rule_test.go @@ -7,19 +7,25 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-provider-google/google/acctest" + "github.com/hashicorp/terraform-provider-google/google/envvar" ) func TestAccVmwareengineExternalAccessRule_vmwareEngineExternalAccessRuleUpdate(t *testing.T) { t.Parallel() context := map[string]interface{}{ - "region": "southamerica-west1", // using region with low node utilization. - "random_suffix": acctest.RandString(t, 10), + "region": "southamerica-west1", // using region with low node utilization. + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, Steps: []resource.TestStep{ { Config: testVmwareEngineExternalAccessRuleCreateConfig(context), @@ -48,7 +54,6 @@ func TestAccVmwareengineExternalAccessRule_vmwareEngineExternalAccessRuleUpdate( func testVmwareEngineExternalAccessRuleCreateConfig(context map[string]interface{}) string { return acctest.Nprintf(` - resource "google_vmwareengine_network" "external-access-rule-nw" { name = "tf-test-sample-external-access-rule-nw-%{random_suffix}" location = "global" @@ -142,7 +147,6 @@ data "google_vmwareengine_external_access_rule" "ds" { func testVmwareEngineExternalAccessRuleUpdateConfig(context map[string]interface{}) string { return acctest.Nprintf(` - resource "google_vmwareengine_network" "external-access-rule-nw" { name = "tf-test-sample-external-access-rule-nw-%{random_suffix}" location = "global" diff --git a/google/services/vmwareengine/resource_vmwareengine_external_address_test.go b/google/services/vmwareengine/resource_vmwareengine_external_address_test.go index c151e77d481..e7e767b3dc6 100644 --- a/google/services/vmwareengine/resource_vmwareengine_external_address_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_external_address_test.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/hashicorp/terraform-provider-google/google/acctest" + "github.com/hashicorp/terraform-provider-google/google/envvar" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" ) @@ -18,14 +19,19 @@ func TestAccVmwareengineExternalAddress_vmwareEngineExternalAddressUpdate(t *tes t.Parallel() context := map[string]interface{}{ - "region": "southamerica-east1", // using region with low node utilization. - "random_suffix": acctest.RandString(t, 10), + "region": "southamerica-east1", // using region with low node utilization. + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineExternalAddressDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineExternalAddressDestroyProducer(t), Steps: []resource.TestStep{ { Config: testVmwareEngineExternalAddressConfig(context, "description1", "192.168.0.66"), @@ -56,14 +62,39 @@ func testVmwareEngineExternalAddressConfig(context map[string]interface{}, descr context["internal_ip"] = internalIp context["description"] = description return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "external-address-nw" { + project = google_project.project.project_id name = "tf-test-sample-external-address-nw%{random_suffix}" location = "global" type = "STANDARD" description = "PC network description." + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_private_cloud" "external-address-pc" { + project = google_project.project.project_id location = "%{region}-a" name = "tf-test-sample-external-address-pc%{random_suffix}" type = "TIME_LIMITED" @@ -83,11 +114,12 @@ resource "google_vmwareengine_private_cloud" "external-address-pc" { } resource "google_vmwareengine_network_policy" "external-address-np" { + project = google_project.project.project_id location = "%{region}" name = "tf-test-sample-external-address-np%{random_suffix}" edge_services_cidr = "192.168.0.0/26" vmware_engine_network = google_vmwareengine_network.external-address-nw.id - internet_access { + internet_access { enabled = true } external_ip { diff --git a/google/services/vmwareengine/resource_vmwareengine_network_peering_test.go b/google/services/vmwareengine/resource_vmwareengine_network_peering_test.go index 962bf136aef..04820b6a1b9 100644 --- a/google/services/vmwareengine/resource_vmwareengine_network_peering_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_network_peering_test.go @@ -7,19 +7,25 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-provider-google/google/acctest" + "github.com/hashicorp/terraform-provider-google/google/envvar" ) func TestAccVmwareengineNetworkPeering_update(t *testing.T) { t.Parallel() context := map[string]interface{}{ - "random_suffix": acctest.RandString(t, 10), + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineNetworkPeeringDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineNetworkPeeringDestroyProducer(t), Steps: []resource.TestStep{ { Config: testAccVmwareengineNetworkPeering_config(context, "Sample description."), @@ -46,24 +52,52 @@ func TestAccVmwareengineNetworkPeering_update(t *testing.T) { func testAccVmwareengineNetworkPeering_config(context map[string]interface{}, description string) string { context["description"] = description return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "network-peering-nw" { - name = "tf-test-sample-nw%{random_suffix}" - location = "global" - type = "STANDARD" + project = google_project.project.project_id + name = "tf-test-sample-nw%{random_suffix}" + location = "global" + type = "STANDARD" + depends_on = [ + time_sleep.sleep, # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_network" "network-peering-peer-nw" { - name = "tf-test-peer-nw%{random_suffix}" - location = "global" - type = "STANDARD" + project = google_project.project.project_id + name = "tf-test-peer-nw%{random_suffix}" + location = "global" + type = "STANDARD" + depends_on = [ + time_sleep.sleep, # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_network_peering" "vmw-engine-network-peering" { - name = "tf-test-sample-network-peering%{random_suffix}" - description = "%{description}" - vmware_engine_network = google_vmwareengine_network.network-peering-nw.id - peer_network = google_vmwareengine_network.network-peering-peer-nw.id - peer_network_type = "VMWARE_ENGINE_NETWORK" + project = google_project.project.project_id + name = "tf-test-sample-network-peering%{random_suffix}" + description = "%{description}" + vmware_engine_network = google_vmwareengine_network.network-peering-nw.id + peer_network = google_vmwareengine_network.network-peering-peer-nw.id + peer_network_type = "VMWARE_ENGINE_NETWORK" } `, context) } diff --git a/google/services/vmwareengine/resource_vmwareengine_network_policy_test.go b/google/services/vmwareengine/resource_vmwareengine_network_policy_test.go index 3c3c8b194a2..20ce004e5b0 100644 --- a/google/services/vmwareengine/resource_vmwareengine_network_policy_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_network_policy_test.go @@ -15,14 +15,19 @@ func TestAccVmwareengineNetworkPolicy_update(t *testing.T) { t.Parallel() context := map[string]interface{}{ - "region": envvar.GetTestRegionFromEnv(), - "random_suffix": acctest.RandString(t, 10), + "region": envvar.GetTestRegionFromEnv(), + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineNetworkPolicyDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareengineNetworkPolicyDestroyProducer(t), Steps: []resource.TestStep{ { Config: testAccVmwareengineNetworkPolicy_config(context, "description1", "192.168.0.0/26", false, false), @@ -53,28 +58,53 @@ func testAccVmwareengineNetworkPolicy_config(context map[string]interface{}, des context["description"] = description return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "network-policy-nw" { - name = "tf-test-sample-nw%{random_suffix}" - location = "global" - type = "STANDARD" - description = "VMwareEngine standard network sample" + project = google_project.project.project_id + name = "tf-test-sample-nw%{random_suffix}" + location = "global" + type = "STANDARD" + description = "VMwareEngine standard network sample" + + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_network_policy" "vmw-engine-network-policy" { - location = "%{region}" - name = "tf-test-sample-network-policy%{random_suffix}" - description = "%{description}" + project = google_project.project.project_id + location = "%{region}" + name = "tf-test-sample-network-policy%{random_suffix}" + description = "%{description}" - internet_access { - enabled = "%{internet_access}" - } + internet_access { + enabled = "%{internet_access}" + } - external_ip { - enabled = "%{external_ip}" - } + external_ip { + enabled = "%{external_ip}" + } - edge_services_cidr = "%{edge_services_cidr}" - vmware_engine_network = google_vmwareengine_network.network-policy-nw.id + edge_services_cidr = "%{edge_services_cidr}" + vmware_engine_network = google_vmwareengine_network.network-policy-nw.id } `, context) } diff --git a/google/services/vmwareengine/resource_vmwareengine_network_test.go b/google/services/vmwareengine/resource_vmwareengine_network_test.go index 34d96660a37..3ed6c4db98f 100644 --- a/google/services/vmwareengine/resource_vmwareengine_network_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_network_test.go @@ -24,11 +24,10 @@ func TestAccVmwareengineNetwork_vmwareEngineNetworkUpdate(t *testing.T) { acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareengineNetworkDestroyProducer(t), ExternalProviders: map[string]resource.ExternalProvider{ - "random": {}, - "time": {}, + "time": {}, }, + CheckDestroy: testAccCheckVmwareengineNetworkDestroyProducer(t), Steps: []resource.TestStep{ { Config: fmt.Sprintf(configTemplate, "description1"), diff --git a/google/services/vmwareengine/resource_vmwareengine_private_cloud_test.go b/google/services/vmwareengine/resource_vmwareengine_private_cloud_test.go index ddd2a5bffef..c1117709e04 100644 --- a/google/services/vmwareengine/resource_vmwareengine_private_cloud_test.go +++ b/google/services/vmwareengine/resource_vmwareengine_private_cloud_test.go @@ -10,6 +10,7 @@ import ( "github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource" "github.com/hashicorp/terraform-plugin-sdk/v2/terraform" "github.com/hashicorp/terraform-provider-google/google/acctest" + "github.com/hashicorp/terraform-provider-google/google/envvar" "github.com/hashicorp/terraform-provider-google/google/tpgresource" transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport" ) @@ -19,14 +20,19 @@ func TestAccVmwareenginePrivateCloud_vmwareEnginePrivateCloudUpdate(t *testing.T t.Parallel() context := map[string]interface{}{ - "region": "southamerica-west1", - "random_suffix": acctest.RandString(t, 10), + "region": "southamerica-west1", + "random_suffix": acctest.RandString(t, 10), + "org_id": envvar.GetTestOrgFromEnv(t), + "billing_account": envvar.GetTestBillingAccountFromEnv(t), } acctest.VcrTest(t, resource.TestCase{ PreCheck: func() { acctest.AccTestPreCheck(t) }, ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t), - CheckDestroy: testAccCheckVmwareenginePrivateCloudDestroyProducer(t), + ExternalProviders: map[string]resource.ExternalProvider{ + "time": {}, + }, + CheckDestroy: testAccCheckVmwareenginePrivateCloudDestroyProducer(t), Steps: []resource.TestStep{ { Config: testPrivateCloudUpdateConfig(context, "description1", 1), @@ -69,14 +75,38 @@ func testPrivateCloudUpdateConfig(context map[string]interface{}, description st context["description"] = description return acctest.Nprintf(` +resource "google_project" "project" { + project_id = "tf-test%{random_suffix}" + name = "tf-test%{random_suffix}" + org_id = "%{org_id}" + billing_account = "%{billing_account}" +} + +resource "google_project_service" "vmwareengine" { + project = google_project.project.project_id + service = "vmwareengine.googleapis.com" +} + +resource "time_sleep" "sleep" { + create_duration = "1m" + depends_on = [ + google_project_service.vmwareengine, + ] +} + resource "google_vmwareengine_network" "default-nw" { + project = google_project.project.project_id name = "tf-test-pc-nw-%{random_suffix}" location = "global" type = "STANDARD" description = "PC network description." + depends_on = [ + time_sleep.sleep # Sleep allows permissions in the new project to propagate + ] } resource "google_vmwareengine_private_cloud" "vmw-engine-pc" { + project = google_project.project.project_id location = "%{region}-a" name = "tf-test-sample-pc%{random_suffix}" description = "%{description}" @@ -96,6 +126,7 @@ resource "google_vmwareengine_private_cloud" "vmw-engine-pc" { } data "google_vmwareengine_private_cloud" "ds" { + project = google_project.project.project_id location = "%{region}-a" name = "tf-test-sample-pc%{random_suffix}" depends_on = [