mirror of
https://github.com/letic/terraform-provider-google.git
synced 2024-10-03 01:01:06 +00:00
Add region disk support to attached disk
This commit is contained in:
parent
35bc6ba882
commit
de68af5b11
@ -76,10 +76,21 @@ func resourceAttachedDiskCreate(d *schema.ResourceData, meta interface{}) error
|
||||
return err
|
||||
}
|
||||
|
||||
diskName := GetResourceNameFromSelfLink(d.Get("disk").(string))
|
||||
disk := d.Get("disk").(string)
|
||||
diskName := GetResourceNameFromSelfLink(disk)
|
||||
diskSrc := fmt.Sprintf("projects/%s/zones/%s/disks/%s", zv.Project, zv.Zone, diskName)
|
||||
|
||||
// Check if the disk is a regional disk
|
||||
if strings.Contains(disk, "regions") {
|
||||
rv, err := ParseRegionDiskFieldValue(disk, d, config)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
diskSrc = rv.RelativeLink()
|
||||
}
|
||||
|
||||
attachedDisk := compute.AttachedDisk{
|
||||
Source: fmt.Sprintf("projects/%s/zones/%s/disks/%s", zv.Project, zv.Zone, diskName),
|
||||
Source: diskSrc,
|
||||
Mode: d.Get("mode").(string),
|
||||
DeviceName: d.Get("device_name").(string),
|
||||
}
|
||||
|
@ -68,6 +68,33 @@ func TestAccComputeAttachedDisk_full(t *testing.T) {
|
||||
|
||||
}
|
||||
|
||||
func TestAccComputeAttachedDisk_region(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
diskName := acctest.RandomWithPrefix("tf-test")
|
||||
instanceName := acctest.RandomWithPrefix("tf-test")
|
||||
importID := fmt.Sprintf("%s/us-central1-a/%s:%s", getTestProjectFromEnv(), instanceName, diskName)
|
||||
|
||||
resource.Test(t, resource.TestCase{
|
||||
PreCheck: func() { testAccPreCheck(t) },
|
||||
Providers: testAccProviders,
|
||||
// Check destroy isn't a good test here, see comment on testCheckAttachedDiskIsNowDetached
|
||||
CheckDestroy: nil,
|
||||
Steps: []resource.TestStep{
|
||||
resource.TestStep{
|
||||
Config: testAttachedDiskResource_region(diskName, instanceName),
|
||||
},
|
||||
resource.TestStep{
|
||||
ResourceName: "google_compute_attached_disk.test",
|
||||
ImportStateId: importID,
|
||||
ImportState: true,
|
||||
ImportStateVerify: true,
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
}
|
||||
|
||||
func TestAccComputeAttachedDisk_count(t *testing.T) {
|
||||
t.Parallel()
|
||||
|
||||
@ -152,6 +179,43 @@ resource "google_compute_attached_disk" "test" {
|
||||
}`)
|
||||
}
|
||||
|
||||
func testAttachedDiskResource_region(diskName, instanceName string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_attached_disk" "test" {
|
||||
disk = "${google_compute_region_disk.region.self_link}"
|
||||
instance = "${google_compute_instance.test.self_link}"
|
||||
}
|
||||
|
||||
resource "google_compute_region_disk" "region" {
|
||||
name = "%s"
|
||||
region = "us-central1"
|
||||
size = 10
|
||||
replica_zones = ["us-central1-b", "us-central1-a"]
|
||||
}
|
||||
|
||||
resource "google_compute_instance" "test" {
|
||||
name = "%s"
|
||||
machine_type = "f1-micro"
|
||||
zone = "us-central1-a"
|
||||
|
||||
lifecycle {
|
||||
ignore_changes = [
|
||||
"attached_disk",
|
||||
]
|
||||
}
|
||||
|
||||
boot_disk {
|
||||
initialize_params {
|
||||
image = "debian-cloud/debian-9"
|
||||
}
|
||||
}
|
||||
|
||||
network_interface {
|
||||
network = "default"
|
||||
}
|
||||
}`, diskName, instanceName)
|
||||
}
|
||||
|
||||
func testAttachedDiskResource(diskName, instanceName string) string {
|
||||
return fmt.Sprintf(`
|
||||
resource "google_compute_disk" "test1" {
|
||||
|
Loading…
Reference in New Issue
Block a user