From 4b8b0af13d17bbc8c0f82fda2331757b3f894e5a Mon Sep 17 00:00:00 2001 From: Scott Suarez Date: Tue, 25 Aug 2020 17:41:18 -0700 Subject: [PATCH 1/3] [Compute_Disk] - Add beta multi-writer support: --- products/compute/api.yaml | 5 ++ .../resource_compute_instance_test.go.erb | 67 +++++++++++++++++++ 2 files changed, 72 insertions(+) diff --git a/products/compute/api.yaml b/products/compute/api.yaml index 82a8004caef7..4dbb869b1596 100644 --- a/products/compute/api.yaml +++ b/products/compute/api.yaml @@ -2937,6 +2937,11 @@ objects: resource: 'ResourcePolicy' imports: 'selfLink' description: 'A resource policy applied to this disk for automatic snapshot creations.' + - !ruby/object:Api::Type::Boolean + name: 'multiWriter' + description: | + Indicates whether or not the disk can be read/write attached to more than one instance. + min_version: beta - !ruby/object:Api::Resource name: 'Firewall' kind: 'compute#firewall' diff --git a/third_party/terraform/tests/resource_compute_instance_test.go.erb b/third_party/terraform/tests/resource_compute_instance_test.go.erb index 24aff2c32e18..c2fc6eb3c6ca 100644 --- a/third_party/terraform/tests/resource_compute_instance_test.go.erb +++ b/third_party/terraform/tests/resource_compute_instance_test.go.erb @@ -1891,6 +1891,28 @@ func TestAccComputeInstance_resourcePolicyCollocate(t *testing.T) { }) } +<% unless version == 'ga' -%> + +func TestAccComputeInstance_multiWriter(t *testing.T) { + t.Parallel() + instanceName := fmt.Sprintf("tf-test-%s", randString(t, 10)) + diskName := fmt.Sprintf("tf-testd-%s", randString(t, 10)) + + vcrTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + CheckDestroy: testAccCheckComputeInstanceDestroyProducer(t), + Steps: []resource.TestStep{ + { + Config: testAccComputeInstance_multiWriter(instanceName, diskName, true), + }, + computeInstanceImportStep("us-central1-a", instanceName, []string{}), + }, + }) +} + +<% end -%> + func testAccCheckComputeInstanceUpdateMachineType(t *testing.T, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -4763,3 +4785,48 @@ resource "google_compute_resource_policy" "foo" { `, instance, instance, suffix) } + +<% unless version == 'ga' -%> +func testAccComputeInstance_multiWriter(instance string, diskName string, enableMultiwriter bool) string { + return fmt.Sprintf(` +data "google_compute_image" "my_image" { + family = "debian-9" + project = "debian-cloud" +} + +resource "google_compute_disk" "foobar" { + name = "%s" + size = 10 + type = "pd-ssd" + zone = "us-central1-a" + multi_writer = %t +} + +resource "google_compute_instance" "foobar" { + name = "%s" + machine_type = "n1-standard-1" + zone = "us-central1-a" + can_ip_forward = false + tags = ["foo", "bar"] + + boot_disk { + initialize_params { + image = data.google_compute_image.my_image.self_link + } + } + + attached_disk { + source = google_compute_disk.foobar.name + } + + network_interface { + network = "default" + } + + metadata = { + foo = "bar" + } +} +`, diskName, enableMultiwriter, instance) +} +<% end -%> From 43a0ed5142abc1f2051043154828a2e3428a24a9 Mon Sep 17 00:00:00 2001 From: Scott Suarez Date: Mon, 28 Dec 2020 07:20:10 -0800 Subject: [PATCH 2/3] set machine type to n2 for testcase... not supported for n1 --- .../terraform/tests/resource_compute_instance_test.go.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/third_party/terraform/tests/resource_compute_instance_test.go.erb b/third_party/terraform/tests/resource_compute_instance_test.go.erb index f0bdeb9723cf..ecab2a7478cb 100644 --- a/third_party/terraform/tests/resource_compute_instance_test.go.erb +++ b/third_party/terraform/tests/resource_compute_instance_test.go.erb @@ -4936,7 +4936,7 @@ resource "google_compute_disk" "foobar" { resource "google_compute_instance" "foobar" { name = "%s" - machine_type = "n1-standard-1" + machine_type = "n2-standard-2" zone = "us-central1-a" can_ip_forward = false tags = ["foo", "bar"] From 7cec4ae4f7bd1ace162e7ff2f7e45785c29d9d4a Mon Sep 17 00:00:00 2001 From: Scott Suarez Date: Tue, 29 Dec 2020 11:40:01 -0800 Subject: [PATCH 3/3] migrate test to disk resource --- .../tests/resource_compute_disk_test.go.erb | 68 +++++++++++++++++++ .../resource_compute_instance_test.go.erb | 64 ----------------- 2 files changed, 68 insertions(+), 64 deletions(-) diff --git a/third_party/terraform/tests/resource_compute_disk_test.go.erb b/third_party/terraform/tests/resource_compute_disk_test.go.erb index bcbeba826d71..e7ce12c1bba6 100644 --- a/third_party/terraform/tests/resource_compute_disk_test.go.erb +++ b/third_party/terraform/tests/resource_compute_disk_test.go.erb @@ -480,6 +480,29 @@ func TestAccComputeDisk_interface(t *testing.T) { } <% end -%> +<% unless version == 'ga' -%> +func TestAccComputeDisk_multiWriter(t *testing.T) { + t.Parallel() + instanceName := fmt.Sprintf("tf-test-%s", randString(t, 10)) + diskName := fmt.Sprintf("tf-testd-%s", randString(t, 10)) + + vcrTest(t, resource.TestCase{ + PreCheck: func() { testAccPreCheck(t) }, + Providers: testAccProviders, + Steps: []resource.TestStep{ + { + Config: testAccComputeDisk_multiWriter(instanceName, diskName, true), + }, + { + ResourceName: "google_compute_disk.foobar", + ImportState: true, + ImportStateVerify: true, + }, + }, + }) +} +<% end -%> + func testAccCheckComputeDiskExists(t *testing.T, n, p string, disk *compute.Disk) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -816,3 +839,48 @@ resource "google_compute_disk" "foobar" { `, diskName) } <% end -%> + +<% unless version == 'ga' -%> +func testAccComputeDisk_multiWriter(instance string, diskName string, enableMultiwriter bool) string { + return fmt.Sprintf(` +data "google_compute_image" "my_image" { + family = "debian-9" + project = "debian-cloud" +} + +resource "google_compute_disk" "foobar" { + name = "%s" + size = 10 + type = "pd-ssd" + zone = "us-central1-a" + multi_writer = %t +} + +resource "google_compute_instance" "foobar" { + name = "%s" + machine_type = "n2-standard-2" + zone = "us-central1-a" + can_ip_forward = false + tags = ["foo", "bar"] + + boot_disk { + initialize_params { + image = data.google_compute_image.my_image.self_link + } + } + + attached_disk { + source = google_compute_disk.foobar.name + } + + network_interface { + network = "default" + } + + metadata = { + foo = "bar" + } +} +`, diskName, enableMultiwriter, instance) +} +<% end -%> \ No newline at end of file diff --git a/third_party/terraform/tests/resource_compute_instance_test.go.erb b/third_party/terraform/tests/resource_compute_instance_test.go.erb index ecab2a7478cb..93b788cc3814 100644 --- a/third_party/terraform/tests/resource_compute_instance_test.go.erb +++ b/third_party/terraform/tests/resource_compute_instance_test.go.erb @@ -2023,26 +2023,6 @@ func TestComputeInstance_networkIPCustomizedDiff(t *testing.T) { } } -<% unless version == 'ga' -%> -func TestAccComputeInstance_multiWriter(t *testing.T) { - t.Parallel() - instanceName := fmt.Sprintf("tf-test-%s", randString(t, 10)) - diskName := fmt.Sprintf("tf-testd-%s", randString(t, 10)) - - vcrTest(t, resource.TestCase{ - PreCheck: func() { testAccPreCheck(t) }, - Providers: testAccProviders, - CheckDestroy: testAccCheckComputeInstanceDestroyProducer(t), - Steps: []resource.TestStep{ - { - Config: testAccComputeInstance_multiWriter(instanceName, diskName, true), - }, - computeInstanceImportStep("us-central1-a", instanceName, []string{}), - }, - }) -} -<% end -%> - func testAccCheckComputeInstanceUpdateMachineType(t *testing.T, n string) resource.TestCheckFunc { return func(s *terraform.State) error { rs, ok := s.RootModule().Resources[n] @@ -4918,50 +4898,6 @@ resource "google_compute_resource_policy" "foo" { `, instance, instance, suffix) } -<% unless version == 'ga' -%> -func testAccComputeInstance_multiWriter(instance string, diskName string, enableMultiwriter bool) string { - return fmt.Sprintf(` -data "google_compute_image" "my_image" { - family = "debian-9" - project = "debian-cloud" -} - -resource "google_compute_disk" "foobar" { - name = "%s" - size = 10 - type = "pd-ssd" - zone = "us-central1-a" - multi_writer = %t -} - -resource "google_compute_instance" "foobar" { - name = "%s" - machine_type = "n2-standard-2" - zone = "us-central1-a" - can_ip_forward = false - tags = ["foo", "bar"] - - boot_disk { - initialize_params { - image = data.google_compute_image.my_image.self_link - } - } - - attached_disk { - source = google_compute_disk.foobar.name - } - - network_interface { - network = "default" - } - - metadata = { - foo = "bar" - } -} -`, diskName, enableMultiwriter, instance) -} -<% end -%> func testAccComputeInstance_subnetworkUpdate(suffix, instance string) string { return fmt.Sprintf(` data "google_compute_image" "my_image" {