Skip to content

Commit a8eca9f

Browse files
modular-magicianchrisst
authored andcommitted
Add region disk support to attached disk (hashicorp#185)
1 parent d4866ec commit a8eca9f

File tree

2 files changed

+77
-2
lines changed

2 files changed

+77
-2
lines changed

google-beta/resource_compute_attached_disk.go

+13-2
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,21 @@ func resourceAttachedDiskCreate(d *schema.ResourceData, meta interface{}) error
7676
return err
7777
}
7878

79-
diskName := GetResourceNameFromSelfLink(d.Get("disk").(string))
79+
disk := d.Get("disk").(string)
80+
diskName := GetResourceNameFromSelfLink(disk)
81+
diskSrc := fmt.Sprintf("projects/%s/zones/%s/disks/%s", zv.Project, zv.Zone, diskName)
82+
83+
// Check if the disk is a regional disk
84+
if strings.Contains(disk, "regions") {
85+
rv, err := ParseRegionDiskFieldValue(disk, d, config)
86+
if err != nil {
87+
return err
88+
}
89+
diskSrc = rv.RelativeLink()
90+
}
8091

8192
attachedDisk := compute.AttachedDisk{
82-
Source: fmt.Sprintf("projects/%s/zones/%s/disks/%s", zv.Project, zv.Zone, diskName),
93+
Source: diskSrc,
8394
Mode: d.Get("mode").(string),
8495
DeviceName: d.Get("device_name").(string),
8596
}

google-beta/resource_compute_attached_disk_test.go

+64
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,33 @@ func TestAccComputeAttachedDisk_full(t *testing.T) {
6868

6969
}
7070

71+
func TestAccComputeAttachedDisk_region(t *testing.T) {
72+
t.Parallel()
73+
74+
diskName := acctest.RandomWithPrefix("tf-test")
75+
instanceName := acctest.RandomWithPrefix("tf-test")
76+
importID := fmt.Sprintf("%s/us-central1-a/%s:%s", getTestProjectFromEnv(), instanceName, diskName)
77+
78+
resource.Test(t, resource.TestCase{
79+
PreCheck: func() { testAccPreCheck(t) },
80+
Providers: testAccProviders,
81+
// Check destroy isn't a good test here, see comment on testCheckAttachedDiskIsNowDetached
82+
CheckDestroy: nil,
83+
Steps: []resource.TestStep{
84+
resource.TestStep{
85+
Config: testAttachedDiskResource_region(diskName, instanceName),
86+
},
87+
resource.TestStep{
88+
ResourceName: "google_compute_attached_disk.test",
89+
ImportStateId: importID,
90+
ImportState: true,
91+
ImportStateVerify: true,
92+
},
93+
},
94+
})
95+
96+
}
97+
7198
func TestAccComputeAttachedDisk_count(t *testing.T) {
7299
t.Parallel()
73100

@@ -152,6 +179,43 @@ resource "google_compute_attached_disk" "test" {
152179
}`)
153180
}
154181

182+
func testAttachedDiskResource_region(diskName, instanceName string) string {
183+
return fmt.Sprintf(`
184+
resource "google_compute_attached_disk" "test" {
185+
disk = "${google_compute_region_disk.region.self_link}"
186+
instance = "${google_compute_instance.test.self_link}"
187+
}
188+
189+
resource "google_compute_region_disk" "region" {
190+
name = "%s"
191+
region = "us-central1"
192+
size = 10
193+
replica_zones = ["us-central1-b", "us-central1-a"]
194+
}
195+
196+
resource "google_compute_instance" "test" {
197+
name = "%s"
198+
machine_type = "f1-micro"
199+
zone = "us-central1-a"
200+
201+
lifecycle {
202+
ignore_changes = [
203+
"attached_disk",
204+
]
205+
}
206+
207+
boot_disk {
208+
initialize_params {
209+
image = "debian-cloud/debian-9"
210+
}
211+
}
212+
213+
network_interface {
214+
network = "default"
215+
}
216+
}`, diskName, instanceName)
217+
}
218+
155219
func testAttachedDiskResource(diskName, instanceName string) string {
156220
return fmt.Sprintf(`
157221
resource "google_compute_disk" "test1" {

0 commit comments

Comments
 (0)