Skip to content

Commit bee7121

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

File tree

3 files changed

+86
-1
lines changed

3 files changed

+86
-1
lines changed

.changelog/8718.txt

+3
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/services/compute/resource_compute_instance.go

+9-1
Original file line numberDiff line numberDiff line change
@@ -2483,7 +2483,15 @@ func expandBootDisk(d *schema.ResourceData, config *transport_tpg.Config, projec
24832483
}
24842484

24852485
if v, ok := d.GetOk("boot_disk.0.source"); ok {
2486-
source, err := tpgresource.ParseDiskFieldValue(v.(string), d, config)
2486+
var err error
2487+
var source interface {
2488+
RelativeLink() string
2489+
}
2490+
if strings.Contains(v.(string), "regions/") {
2491+
source, err = tpgresource.ParseRegionDiskFieldValue(v.(string), d, config)
2492+
} else {
2493+
source, err = tpgresource.ParseDiskFieldValue(v.(string), d, config)
2494+
}
24872495
if err != nil {
24882496
return nil, err
24892497
}

google/services/compute/resource_compute_instance_test.go

+74
Original file line numberDiff line numberDiff line change
@@ -2465,6 +2465,31 @@ func TestAccComputeInstance_metadataStartupScript_update(t *testing.T) {
24652465
})
24662466
}
24672467

2468+
func TestAccComputeInstance_regionBootDisk(t *testing.T) {
2469+
t.Parallel()
2470+
2471+
var instance compute.Instance
2472+
var instanceName = fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
2473+
var diskName = fmt.Sprintf("tf-test-%s", acctest.RandString(t, 10))
2474+
var suffix = acctest.RandString(t, 10)
2475+
2476+
acctest.VcrTest(t, resource.TestCase{
2477+
PreCheck: func() { acctest.AccTestPreCheck(t) },
2478+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
2479+
CheckDestroy: testAccCheckComputeInstanceDestroyProducer(t),
2480+
Steps: []resource.TestStep{
2481+
{
2482+
Config: testAccComputeInstance_regionBootDisk(instanceName, diskName, suffix),
2483+
Check: resource.ComposeTestCheckFunc(
2484+
testAccCheckComputeInstanceExists(
2485+
t, "google_compute_instance.regional_vm_instance", &instance),
2486+
testAccCheckComputeInstanceBootDisk(&instance, diskName),
2487+
),
2488+
},
2489+
},
2490+
})
2491+
}
2492+
24682493
func testAccCheckComputeInstanceUpdateMachineType(t *testing.T, n string) resource.TestCheckFunc {
24692494
return func(s *terraform.State) error {
24702495
rs, ok := s.RootModule().Resources[n]
@@ -6656,3 +6681,52 @@ resource "google_compute_instance" "foobar" {
66566681
}
66576682
`, instance, machineType, metadata)
66586683
}
6684+
6685+
func testAccComputeInstance_regionBootDisk(instance, diskName, suffix string) string {
6686+
return fmt.Sprintf(`
6687+
resource "google_compute_instance" "regional_vm_instance" {
6688+
name = "%s"
6689+
machine_type = "e2-medium"
6690+
zone = "us-central1-c"
6691+
6692+
boot_disk {
6693+
source = google_compute_region_disk.regionaldisk.self_link
6694+
}
6695+
network_interface {
6696+
network = google_compute_network.vpc_network.name
6697+
access_config {}
6698+
}
6699+
}
6700+
6701+
resource "google_compute_region_disk" "regionaldisk" {
6702+
name = "%s"
6703+
type = "pd-ssd"
6704+
region = "us-central1"
6705+
replica_zones = ["us-central1-c", "us-central1-a"]
6706+
size = 50
6707+
snapshot = google_compute_snapshot.debian.id
6708+
}
6709+
6710+
resource "google_compute_network" "vpc_network" {
6711+
name = "tf-test-%s"
6712+
}
6713+
6714+
data "google_compute_image" "debian" {
6715+
family = "debian-11"
6716+
project = "debian-cloud"
6717+
}
6718+
6719+
resource "google_compute_snapshot" "debian" {
6720+
name = "tf-test-%s"
6721+
source_disk = google_compute_disk.debian.id
6722+
}
6723+
6724+
resource "google_compute_disk" "debian" {
6725+
name = "tf-test-%s"
6726+
image = data.google_compute_image.debian.self_link
6727+
size = 10
6728+
type = "pd-ssd"
6729+
zone = "us-central1-c"
6730+
}
6731+
`, instance, diskName, suffix, suffix, suffix)
6732+
}

0 commit comments

Comments
 (0)