Skip to content

Commit 38f1090

Browse files
Add support for region boot disk to instance (#8718) (#6132)
Remove wrong files Signed-off-by: Modular Magician <[email protected]>
1 parent b7a1616 commit 38f1090

File tree

3 files changed

+86
-1
lines changed

3 files changed

+86
-1
lines changed

.changelog/8718.txt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:enhancement
2+
compute: added support for specifying regional disks for `google_compute_instance` `boot_disk.source`
3+
```

google-beta/services/compute/resource_compute_instance.go

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2526,7 +2526,15 @@ func expandBootDisk(d *schema.ResourceData, config *transport_tpg.Config, projec
25262526
}
25272527

25282528
if v, ok := d.GetOk("boot_disk.0.source"); ok {
2529-
source, err := tpgresource.ParseDiskFieldValue(v.(string), d, config)
2529+
var err error
2530+
var source interface {
2531+
RelativeLink() string
2532+
}
2533+
if strings.Contains(v.(string), "regions/") {
2534+
source, err = tpgresource.ParseRegionDiskFieldValue(v.(string), d, config)
2535+
} else {
2536+
source, err = tpgresource.ParseDiskFieldValue(v.(string), d, config)
2537+
}
25302538
if err != nil {
25312539
return nil, err
25322540
}

google-beta/services/compute/resource_compute_instance_test.go

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2529,6 +2529,31 @@ func TestAccComputeInstance_metadataStartupScript_update(t *testing.T) {
25292529
})
25302530
}
25312531

2532+
func TestAccComputeInstance_regionBootDisk(t *testing.T) {
2533+
t.Parallel()
2534+
2535+
var instance compute.Instance
2536+
var instanceName = fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
2537+
var diskName = fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
2538+
var suffix = acctest.RandString(t, 10)
2539+
2540+
acctest.VcrTest(t, resource.TestCase{
2541+
PreCheck: func() { acctest.AccTestPreCheck(t) },
2542+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
2543+
CheckDestroy: testAccCheckComputeInstanceDestroyProducer(t),
2544+
Steps: []resource.TestStep{
2545+
{
2546+
Config: testAccComputeInstance_regionBootDisk(instanceName, diskName, suffix),
2547+
Check: resource.ComposeTestCheckFunc(
2548+
testAccCheckComputeInstanceExists(
2549+
t, "google_compute_instance.regional_vm_instance", &instance),
2550+
testAccCheckComputeInstanceBootDisk(&instance, diskName),
2551+
),
2552+
},
2553+
},
2554+
})
2555+
}
2556+
25322557
func testAccCheckComputeInstanceUpdateMachineType(t *testing.T, n string) resource.TestCheckFunc {
25332558
return func(s *terraform.State) error {
25342559
rs, ok := s.RootModule().Resources[n]
@@ -6741,3 +6766,52 @@ resource "google_compute_instance" "foobar" {
67416766
}
67426767
`, instance, machineType, metadata)
67436768
}
6769+
6770+
func testAccComputeInstance_regionBootDisk(instance, diskName, suffix string) string {
6771+
return fmt.Sprintf(`
6772+
resource "google_compute_instance" "regional_vm_instance" {
6773+
name = "%s"
6774+
machine_type = "e2-medium"
6775+
zone = "us-central1-c"
6776+
6777+
boot_disk {
6778+
source = google_compute_region_disk.regionaldisk.self_link
6779+
}
6780+
network_interface {
6781+
network = google_compute_network.vpc_network.name
6782+
access_config {}
6783+
}
6784+
}
6785+
6786+
resource "google_compute_region_disk" "regionaldisk" {
6787+
name = "%s"
6788+
type = "pd-ssd"
6789+
region = "us-central1"
6790+
replica_zones = ["us-central1-c", "us-central1-a"]
6791+
size = 50
6792+
snapshot = google_compute_snapshot.debian.id
6793+
}
6794+
6795+
resource "google_compute_network" "vpc_network" {
6796+
name = "tf-test-%s"
6797+
}
6798+
6799+
data "google_compute_image" "debian" {
6800+
family = "debian-11"
6801+
project = "debian-cloud"
6802+
}
6803+
6804+
resource "google_compute_snapshot" "debian" {
6805+
name = "tf-test-%s"
6806+
source_disk = google_compute_disk.debian.id
6807+
}
6808+
6809+
resource "google_compute_disk" "debian" {
6810+
name = "tf-test-%s"
6811+
image = data.google_compute_image.debian.self_link
6812+
size = 10
6813+
type = "pd-ssd"
6814+
zone = "us-central1-c"
6815+
}
6816+
`, instance, diskName, suffix, suffix, suffix)
6817+
}

0 commit comments

Comments
 (0)