From eaba4c8087c5d0ea132aefd1f5000d782b1acf8d Mon Sep 17 00:00:00 2001 From: Modular Magician Date: Wed, 22 Jan 2025 00:04:51 +0000 Subject: [PATCH] Support apigee environment properties update (#12794) [upstream:4601a9407ad1ad40daee1b3a1f0efe983211b307] Signed-off-by: Modular Magician --- .changelog/12794.txt | 3 + .../apigee/resource_apigee_environment.go | 81 ++++++++----------- 2 files changed, 35 insertions(+), 49 deletions(-) create mode 100644 .changelog/12794.txt diff --git a/.changelog/12794.txt b/.changelog/12794.txt new file mode 100644 index 0000000000..e4de946e32 --- /dev/null +++ b/.changelog/12794.txt @@ -0,0 +1,3 @@ +```release-note: bug +apigee: fixed `properties` field update on `google_apigee_environment` resource +``` \ No newline at end of file diff --git a/google-beta/services/apigee/resource_apigee_environment.go b/google-beta/services/apigee/resource_apigee_environment.go index c7aaa8bcd7..3d6b054813 100644 --- a/google-beta/services/apigee/resource_apigee_environment.go +++ b/google-beta/services/apigee/resource_apigee_environment.go @@ -376,6 +376,12 @@ func resourceApigeeEnvironmentUpdate(d *schema.ResourceData, meta interface{}) e billingProject := "" obj := make(map[string]interface{}) + nameProp, err := expandApigeeEnvironmentName(d.Get("name"), d, config) + if err != nil { + return err + } else if v, ok := d.GetOkExists("name"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, nameProp)) { + obj["name"] = nameProp + } displayNameProp, err := expandApigeeEnvironmentDisplayName(d.Get("display_name"), d, config) if err != nil { return err @@ -388,6 +394,18 @@ func resourceApigeeEnvironmentUpdate(d *schema.ResourceData, meta interface{}) e } else if v, ok := d.GetOkExists("description"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, descriptionProp)) { obj["description"] = descriptionProp } + deploymentTypeProp, err := expandApigeeEnvironmentDeploymentType(d.Get("deployment_type"), d, config) + if err != nil { + return err + } else if v, ok := d.GetOkExists("deployment_type"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, deploymentTypeProp)) { + obj["deploymentType"] = deploymentTypeProp + } + apiProxyTypeProp, err := expandApigeeEnvironmentApiProxyType(d.Get("api_proxy_type"), d, config) + if err != nil { + return err + } else if v, ok := d.GetOkExists("api_proxy_type"); !tpgresource.IsEmptyValue(reflect.ValueOf(v)) && (ok || !reflect.DeepEqual(v, apiProxyTypeProp)) { + obj["apiProxyType"] = apiProxyTypeProp + } nodeConfigProp, err := expandApigeeEnvironmentNodeConfig(d.Get("node_config"), d, config) if err != nil { return err @@ -420,62 +438,27 @@ func resourceApigeeEnvironmentUpdate(d *schema.ResourceData, meta interface{}) e log.Printf("[DEBUG] Updating Environment %q: %#v", d.Id(), obj) headers := make(http.Header) - updateMask := []string{} - - if d.HasChange("display_name") { - updateMask = append(updateMask, "displayName") - } - - if d.HasChange("description") { - updateMask = append(updateMask, "description") - } - - if d.HasChange("node_config") { - updateMask = append(updateMask, "nodeConfig") - } - - if d.HasChange("type") { - updateMask = append(updateMask, "type") - } - - if d.HasChange("forward_proxy_uri") { - updateMask = append(updateMask, "forwardProxyUri") - } - - if d.HasChange("properties") { - updateMask = append(updateMask, "properties") - } - // updateMask is a URL parameter but not present in the schema, so ReplaceVars - // won't set it - url, err = transport_tpg.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 := tpgresource.GetBillingProject(d, config); err == nil { billingProject = bp } - // if updateMask is empty we are not updating anything so skip the post - if len(updateMask) > 0 { - res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{ - Config: config, - Method: "PATCH", - Project: billingProject, - RawURL: url, - UserAgent: userAgent, - Body: obj, - Timeout: d.Timeout(schema.TimeoutUpdate), - Headers: headers, - }) - - if err != nil { - return fmt.Errorf("Error updating Environment %q: %s", d.Id(), err) - } else { - log.Printf("[DEBUG] Finished updating Environment %q: %#v", d.Id(), res) - } + res, err := transport_tpg.SendRequest(transport_tpg.SendRequestOptions{ + Config: config, + Method: "PUT", + Project: billingProject, + RawURL: url, + UserAgent: userAgent, + Body: obj, + Timeout: d.Timeout(schema.TimeoutUpdate), + Headers: headers, + }) + if err != nil { + return fmt.Errorf("Error updating Environment %q: %s", d.Id(), err) + } else { + log.Printf("[DEBUG] Finished updating Environment %q: %#v", d.Id(), res) } return resourceApigeeEnvironmentRead(d, meta)