From d5dac74b3564d46bb518784980cebc08a9d28845 Mon Sep 17 00:00:00 2001 From: The Magician Date: Mon, 30 Jan 2023 14:25:42 -0800 Subject: [PATCH] Add locality_lb_policies field to google_compute_backend_service (#5947) (#1325) Signed-off-by: Modular Magician --- .../resources/compute_backend_service.go | 92 +++++++++++++++++++ 1 file changed, 92 insertions(+) diff --git a/converters/google/resources/compute_backend_service.go b/converters/google/resources/compute_backend_service.go index 6e7e17148..ccdc98a04 100644 --- a/converters/google/resources/compute_backend_service.go +++ b/converters/google/resources/compute_backend_service.go @@ -299,6 +299,12 @@ func GetComputeBackendServiceApiObject(d TerraformResourceData, config *Config) } else if v, ok := d.GetOkExists("locality_lb_policy"); !isEmptyValue(reflect.ValueOf(localityLbPolicyProp)) && (ok || !reflect.DeepEqual(v, localityLbPolicyProp)) { obj["localityLbPolicy"] = localityLbPolicyProp } + localityLbPoliciesProp, err := expandComputeBackendServiceLocalityLbPolicies(d.Get("locality_lb_policies"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("locality_lb_policies"); !isEmptyValue(reflect.ValueOf(localityLbPoliciesProp)) && (ok || !reflect.DeepEqual(v, localityLbPoliciesProp)) { + obj["localityLbPolicies"] = localityLbPoliciesProp + } nameProp, err := expandComputeBackendServiceName(d.Get("name"), d, config) if err != nil { return nil, err @@ -1057,6 +1063,92 @@ func expandComputeBackendServiceLocalityLbPolicy(v interface{}, d TerraformResou return v, nil } +func expandComputeBackendServiceLocalityLbPolicies(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + l := v.([]interface{}) + req := make([]interface{}, 0, len(l)) + for _, raw := range l { + if raw == nil { + continue + } + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedPolicy, err := expandComputeBackendServiceLocalityLbPoliciesPolicy(original["policy"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedPolicy); val.IsValid() && !isEmptyValue(val) { + transformed["policy"] = transformedPolicy + } + + transformedCustomPolicy, err := expandComputeBackendServiceLocalityLbPoliciesCustomPolicy(original["custom_policy"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedCustomPolicy); val.IsValid() && !isEmptyValue(val) { + transformed["customPolicy"] = transformedCustomPolicy + } + + req = append(req, transformed) + } + return req, nil +} + +func expandComputeBackendServiceLocalityLbPoliciesPolicy(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedName, err := expandComputeBackendServiceLocalityLbPoliciesPolicyName(original["name"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedName); val.IsValid() && !isEmptyValue(val) { + transformed["name"] = transformedName + } + + return transformed, nil +} + +func expandComputeBackendServiceLocalityLbPoliciesPolicyName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + return v, nil +} + +func expandComputeBackendServiceLocalityLbPoliciesCustomPolicy(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + l := v.([]interface{}) + if len(l) == 0 || l[0] == nil { + return nil, nil + } + raw := l[0] + original := raw.(map[string]interface{}) + transformed := make(map[string]interface{}) + + transformedName, err := expandComputeBackendServiceLocalityLbPoliciesCustomPolicyName(original["name"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedName); val.IsValid() && !isEmptyValue(val) { + transformed["name"] = transformedName + } + + transformedData, err := expandComputeBackendServiceLocalityLbPoliciesCustomPolicyData(original["data"], d, config) + if err != nil { + return nil, err + } else if val := reflect.ValueOf(transformedData); val.IsValid() && !isEmptyValue(val) { + transformed["data"] = transformedData + } + + return transformed, nil +} + +func expandComputeBackendServiceLocalityLbPoliciesCustomPolicyName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + return v, nil +} + +func expandComputeBackendServiceLocalityLbPoliciesCustomPolicyData(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + return v, nil +} + func expandComputeBackendServiceName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { return v, nil }