provider/google: allow instance group managers in region other than project (#11294)
This commit is contained in:
parent
747ca75bfe
commit
55ca64a095
|
@ -216,17 +216,33 @@ func resourceComputeInstanceGroupManagerRead(d *schema.ResourceData, meta interf
|
||||||
return config.clientCompute.InstanceGroupManagers.Get(project, zone, d.Id()).Do()
|
return config.clientCompute.InstanceGroupManagers.Get(project, zone, d.Id()).Do()
|
||||||
}
|
}
|
||||||
|
|
||||||
resource, err := getZonalResourceFromRegion(getInstanceGroupManager, region, config.clientCompute, project)
|
var manager *compute.InstanceGroupManager
|
||||||
if err != nil {
|
var e error
|
||||||
return err
|
if zone, ok := d.GetOk("zone"); ok {
|
||||||
|
manager, e = config.clientCompute.InstanceGroupManagers.Get(project, zone.(string), d.Id()).Do()
|
||||||
|
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
}
|
}
|
||||||
if resource == nil {
|
} else {
|
||||||
|
// If the resource was imported, the only info we have is the ID. Try to find the resource
|
||||||
|
// by searching in the region of the project.
|
||||||
|
var resource interface{}
|
||||||
|
resource, e = getZonalResourceFromRegion(getInstanceGroupManager, region, config.clientCompute, project)
|
||||||
|
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
|
||||||
|
manager = resource.(*compute.InstanceGroupManager)
|
||||||
|
}
|
||||||
|
|
||||||
|
if manager == nil {
|
||||||
log.Printf("[WARN] Removing Instance Group Manager %q because it's gone", d.Get("name").(string))
|
log.Printf("[WARN] Removing Instance Group Manager %q because it's gone", d.Get("name").(string))
|
||||||
// The resource doesn't exist anymore
|
// The resource doesn't exist anymore
|
||||||
d.SetId("")
|
d.SetId("")
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
manager := resource.(*compute.InstanceGroupManager)
|
|
||||||
|
|
||||||
zoneUrl := strings.Split(manager.Zone, "/")
|
zoneUrl := strings.Split(manager.Zone, "/")
|
||||||
d.Set("base_instance_name", manager.BaseInstanceName)
|
d.Set("base_instance_name", manager.BaseInstanceName)
|
||||||
|
|
|
@ -135,6 +135,30 @@ func TestAccInstanceGroupManager_updateStrategy(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestAccInstanceGroupManager_separateRegions(t *testing.T) {
|
||||||
|
var manager compute.InstanceGroupManager
|
||||||
|
|
||||||
|
igm1 := fmt.Sprintf("igm-test-%s", acctest.RandString(10))
|
||||||
|
igm2 := fmt.Sprintf("igm-test-%s", acctest.RandString(10))
|
||||||
|
|
||||||
|
resource.Test(t, resource.TestCase{
|
||||||
|
PreCheck: func() { testAccPreCheck(t) },
|
||||||
|
Providers: testAccProviders,
|
||||||
|
CheckDestroy: testAccCheckInstanceGroupManagerDestroy,
|
||||||
|
Steps: []resource.TestStep{
|
||||||
|
resource.TestStep{
|
||||||
|
Config: testAccInstanceGroupManager_separateRegions(igm1, igm2),
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testAccCheckInstanceGroupManagerExists(
|
||||||
|
"google_compute_instance_group_manager.igm-basic", &manager),
|
||||||
|
testAccCheckInstanceGroupManagerExists(
|
||||||
|
"google_compute_instance_group_manager.igm-basic-2", &manager),
|
||||||
|
),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
func testAccCheckInstanceGroupManagerDestroy(s *terraform.State) error {
|
func testAccCheckInstanceGroupManagerDestroy(s *terraform.State) error {
|
||||||
config := testAccProvider.Meta().(*Config)
|
config := testAccProvider.Meta().(*Config)
|
||||||
|
|
||||||
|
@ -571,6 +595,52 @@ func testAccInstanceGroupManager_updateStrategy(igm string) string {
|
||||||
}`, igm)
|
}`, igm)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func testAccInstanceGroupManager_separateRegions(igm1, igm2 string) string {
|
||||||
|
return fmt.Sprintf(`
|
||||||
|
resource "google_compute_instance_template" "igm-basic" {
|
||||||
|
machine_type = "n1-standard-1"
|
||||||
|
can_ip_forward = false
|
||||||
|
tags = ["foo", "bar"]
|
||||||
|
|
||||||
|
disk {
|
||||||
|
source_image = "debian-cloud/debian-8-jessie-v20160803"
|
||||||
|
auto_delete = true
|
||||||
|
boot = true
|
||||||
|
}
|
||||||
|
|
||||||
|
network_interface {
|
||||||
|
network = "default"
|
||||||
|
}
|
||||||
|
|
||||||
|
metadata {
|
||||||
|
foo = "bar"
|
||||||
|
}
|
||||||
|
|
||||||
|
service_account {
|
||||||
|
scopes = ["userinfo-email", "compute-ro", "storage-ro"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_compute_instance_group_manager" "igm-basic" {
|
||||||
|
description = "Terraform test instance group manager"
|
||||||
|
name = "%s"
|
||||||
|
instance_template = "${google_compute_instance_template.igm-basic.self_link}"
|
||||||
|
base_instance_name = "igm-basic"
|
||||||
|
zone = "us-central1-c"
|
||||||
|
target_size = 2
|
||||||
|
}
|
||||||
|
|
||||||
|
resource "google_compute_instance_group_manager" "igm-basic-2" {
|
||||||
|
description = "Terraform test instance group manager"
|
||||||
|
name = "%s"
|
||||||
|
instance_template = "${google_compute_instance_template.igm-basic.self_link}"
|
||||||
|
base_instance_name = "igm-basic-2"
|
||||||
|
zone = "us-west1-b"
|
||||||
|
target_size = 2
|
||||||
|
}
|
||||||
|
`, igm1, igm2)
|
||||||
|
}
|
||||||
|
|
||||||
func resourceSplitter(resource string) string {
|
func resourceSplitter(resource string) string {
|
||||||
splits := strings.Split(resource, "/")
|
splits := strings.Split(resource, "/")
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue