mirror of
https://github.com/opentofu/opentofu.git
synced 2025-02-20 11:48:24 -06:00
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()
|
||||
}
|
||||
|
||||
resource, err := getZonalResourceFromRegion(getInstanceGroupManager, region, config.clientCompute, project)
|
||||
if err != nil {
|
||||
return err
|
||||
var manager *compute.InstanceGroupManager
|
||||
var e error
|
||||
if zone, ok := d.GetOk("zone"); ok {
|
||||
manager, e = config.clientCompute.InstanceGroupManagers.Get(project, zone.(string), d.Id()).Do()
|
||||
|
||||
if e != nil {
|
||||
return e
|
||||
}
|
||||
} 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 resource == nil {
|
||||
|
||||
if manager == nil {
|
||||
log.Printf("[WARN] Removing Instance Group Manager %q because it's gone", d.Get("name").(string))
|
||||
// The resource doesn't exist anymore
|
||||
d.SetId("")
|
||||
return nil
|
||||
}
|
||||
manager := resource.(*compute.InstanceGroupManager)
|
||||
|
||||
zoneUrl := strings.Split(manager.Zone, "/")
|
||||
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 {
|
||||
config := testAccProvider.Meta().(*Config)
|
||||
|
||||
@ -571,6 +595,52 @@ func testAccInstanceGroupManager_updateStrategy(igm string) string {
|
||||
}`, 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 {
|
||||
splits := strings.Split(resource, "/")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user