From 9c2fb7218d8a4f3b8f4c895769bb61562dba0fde Mon Sep 17 00:00:00 2001 From: Modular Magician Date: Fri, 6 Aug 2021 20:17:37 +0000 Subject: [PATCH] change update verb for apigee_envgroup to patch (#5047) Signed-off-by: Modular Magician --- .changelog/5047.txt | 3 +++ google/resource_apigee_envgroup.go | 19 ++++++++++++------- 2 files changed, 15 insertions(+), 7 deletions(-) create mode 100644 .changelog/5047.txt diff --git a/.changelog/5047.txt b/.changelog/5047.txt new file mode 100644 index 00000000000..19166079ce4 --- /dev/null +++ b/.changelog/5047.txt @@ -0,0 +1,3 @@ +```release-note:bug +apigee: fixed update behavior on `google_apigee_envgroup` +``` diff --git a/google/resource_apigee_envgroup.go b/google/resource_apigee_envgroup.go index 8489aa11651..b2dca67827e 100644 --- a/google/resource_apigee_envgroup.go +++ b/google/resource_apigee_envgroup.go @@ -186,12 +186,6 @@ func resourceApigeeEnvgroupUpdate(d *schema.ResourceData, meta interface{}) erro billingProject := "" obj := make(map[string]interface{}) - nameProp, err := expandApigeeEnvgroupName(d.Get("name"), d, config) - if err != nil { - return err - } else if v, ok := d.GetOkExists("name"); !isEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, nameProp)) { - obj["name"] = nameProp - } hostnamesProp, err := expandApigeeEnvgroupHostnames(d.Get("hostnames"), d, config) if err != nil { return err @@ -205,13 +199,24 @@ func resourceApigeeEnvgroupUpdate(d *schema.ResourceData, meta interface{}) erro } log.Printf("[DEBUG] Updating Envgroup %q: %#v", d.Id(), obj) + updateMask := []string{} + + if d.HasChange("hostnames") { + updateMask = append(updateMask, "hostnames") + } + // updateMask is a URL parameter but not present in the schema, so replaceVars + // won't set it + url, err = addQueryParams(url, map[string]string{"updateMask": strings.Join(updateMask, ",")}) + if err != nil { + return err + } // err == nil indicates that the billing_project value was found if bp, err := getBillingProject(d, config); err == nil { billingProject = bp } - res, err := sendRequestWithTimeout(config, "PUT", billingProject, url, userAgent, obj, d.Timeout(schema.TimeoutUpdate)) + res, err := sendRequestWithTimeout(config, "PATCH", billingProject, url, userAgent, obj, d.Timeout(schema.TimeoutUpdate)) if err != nil { return fmt.Errorf("Error updating Envgroup %q: %s", d.Id(), err)