diff --git a/google/resource_compute_instance_template.go b/google/resource_compute_instance_template.go index 646c1e794eb..061a74c29bf 100644 --- a/google/resource_compute_instance_template.go +++ b/google/resource_compute_instance_template.go @@ -483,13 +483,7 @@ func resourceComputeInstanceTemplateSourceImageCustomizeDiff(diff *schema.Resour for i := 0; i < numDisks; i++ { key := fmt.Sprintf("disk.%d.source_image", i) if diff.HasChange(key) { - // project must be retrieved once we know there is a diff to resolve, otherwise it will - // attempt to retrieve project during `plan` before all calculated fields are ready - // see https://github.com/terraform-providers/terraform-provider-google/issues/2878 - project, err := getProjectFromDiff(diff, config) - if err != nil { - return err - } + var err error old, new := diff.GetChange(key) if old == "" || new == "" { // no sense in resolving empty strings @@ -499,6 +493,13 @@ func resourceComputeInstanceTemplateSourceImageCustomizeDiff(diff *schema.Resour } continue } + // project must be retrieved once we know there is a diff to resolve, otherwise it will + // attempt to retrieve project during `plan` before all calculated fields are ready + // see https://github.com/terraform-providers/terraform-provider-google/issues/2878 + project, err := getProjectFromDiff(diff, config) + if err != nil { + return err + } oldResolved, err := resolveImage(config, project, old.(string)) if err != nil { return err