diff --git a/mmv1/templates/terraform/post_create/compute_backend_service_security_policy.go.tmpl b/mmv1/templates/terraform/post_create/compute_backend_service_security_policy.go.tmpl index 0d70f9a5e16e..9bfedfb767d9 100644 --- a/mmv1/templates/terraform/post_create/compute_backend_service_security_policy.go.tmpl +++ b/mmv1/templates/terraform/post_create/compute_backend_service_security_policy.go.tmpl @@ -1,38 +1,72 @@ // security_policy isn't set by Create / Update if o, n := d.GetChange("security_policy"); o.(string) != n.(string) { - pol, err := tpgresource.ParseSecurityPolicyFieldValue(n.(string), d, config) + pol, err := tpgresource.ParseSecurityPolicyFieldValue(n.(string), d, config) if err != nil { return errwrap.Wrapf("Error parsing Backend Service security policy: {{"{{"}}err{{"}}"}}", err) } - spr := emptySecurityPolicyReference() - spr.SecurityPolicy = pol.RelativeLink() - op, err := config.NewComputeClient(userAgent).BackendServices.SetSecurityPolicy(project, obj["name"].(string), spr).Do() + sBody := map[string]interface{}{ + "securityPolicy": pol.RelativeLink(), + } + + securityPolicyPath := "{{"{{"}}ComputeBasePath{{"}}"}}projects/{{"{{"}}project{{"}}"}}/global/backendServices/{{"{{"}}name{{"}}"}}/setSecurityPolicy?prettyPrint=false" + sUrl, err := tpgresource.ReplaceVars(d, config, securityPolicyPath) + if err != nil { + return err + } + + res, err = transport_tpg.SendRequest(transport_tpg.SendRequestOptions{ + Config: config, + Method: "POST", + Project: project, + RawURL: sUrl, + UserAgent: userAgent, + Body: sBody, + Headers: headers, + }) if err != nil { return errwrap.Wrapf("Error setting Backend Service security policy: {{"{{"}}err{{"}}"}}", err) } + // This uses the create timeout for simplicity, though technically this code appears in both create and update - waitErr := ComputeOperationWaitTime(config, op, project, "Setting Backend Service Security Policy", userAgent, d.Timeout(schema.TimeoutCreate)) - if waitErr != nil { - return waitErr + err = ComputeOperationWaitTime(config, res, project, "Setting Backend Service Security Policy", userAgent, d.Timeout(schema.TimeoutCreate)) + if err != nil { + return err } } // edge security_policy isn't set by Create / Update if o, n := d.GetChange("edge_security_policy"); o.(string) != n.(string) { - pol, err := tpgresource.ParseSecurityPolicyFieldValue(n.(string), d, config) + pol, err := tpgresource.ParseSecurityPolicyFieldValue(n.(string), d, config) if err != nil { return errwrap.Wrapf("Error parsing Backend Service edge security policy: {{"{{"}}err{{"}}"}}", err) } - spr := emptySecurityPolicyReference() - spr.SecurityPolicy = pol.RelativeLink() - op, err := config.NewComputeClient(userAgent).BackendServices.SetEdgeSecurityPolicy(project, obj["name"].(string), spr).Do() + eBody := map[string]interface{}{ + "securityPolicy": pol.RelativeLink(), + } + + edgeSecurityPolicyPath := "{{"{{"}}ComputeBasePath{{"}}"}}projects/{{"{{"}}project{{"}}"}}/global/backendServices/{{"{{"}}name{{"}}"}}/setEdgeSecurityPolicy?prettyPrint=false" + eUrl, err := tpgresource.ReplaceVars(d, config, edgeSecurityPolicyPath) + if err != nil { + return err + } + + res, err = transport_tpg.SendRequest(transport_tpg.SendRequestOptions{ + Config: config, + Method: "POST", + Project: project, + RawURL: eUrl, + UserAgent: userAgent, + Body: eBody, + Headers: headers, + }) if err != nil { return errwrap.Wrapf("Error setting Backend Service edge security policy: {{"{{"}}err{{"}}"}}", err) } + // This uses the create timeout for simplicity, though technically this code appears in both create and update - waitErr := ComputeOperationWaitTime(config, op, project, "Setting Backend Service Edge Security Policy", userAgent, d.Timeout(schema.TimeoutCreate)) - if waitErr != nil { - return waitErr + err = ComputeOperationWaitTime(config, res, project, "Setting Backend Service Edge Security Policy", userAgent, d.Timeout(schema.TimeoutCreate)) + if err != nil { + return err } } \ No newline at end of file