diff --git a/google/resource_compute_instance_group_manager.go b/google/resource_compute_instance_group_manager.go index 62e8b726..48a7042f 100644 --- a/google/resource_compute_instance_group_manager.go +++ b/google/resource_compute_instance_group_manager.go @@ -419,7 +419,7 @@ func resourceComputeInstanceGroupManagerRead(d *schema.ResourceData, meta interf } manager, err := getManager(d, meta) - if err != nil { + if err != nil || manager == nil { return err } diff --git a/google/resource_compute_region_instance_group_manager.go b/google/resource_compute_region_instance_group_manager.go index bcf87538..2d8188ec 100644 --- a/google/resource_compute_region_instance_group_manager.go +++ b/google/resource_compute_region_instance_group_manager.go @@ -303,6 +303,14 @@ func getRegionalManager(d *schema.ResourceData, meta interface{}) (*computeBeta. v1Manager := &compute.InstanceGroupManager{} v1Manager, err = config.clientCompute.RegionInstanceGroupManagers.Get(project, region, d.Id()).Do() + if v1Manager == nil { + log.Printf("[WARN] Removing Region Instance Group Manager %q because it's gone", d.Get("name").(string)) + + // The resource doesn't exist anymore + d.SetId("") + return nil, nil + } + err = Convert(v1Manager, manager) if err != nil { return nil, err @@ -335,7 +343,7 @@ func waitForInstancesRefreshFunc(f getInstanceManagerFunc, d *schema.ResourceDat func resourceComputeRegionInstanceGroupManagerRead(d *schema.ResourceData, meta interface{}) error { config := meta.(*Config) manager, err := getRegionalManager(d, meta) - if err != nil { + if err != nil || manager == nil { return err }