Skip to content
This repository has been archived by the owner on May 15, 2023. It is now read-only.

Commit

Permalink
Share settings for sole-tenant node groups. (#7059) (#1298)
Browse files Browse the repository at this point in the history
* Share settings for sole-tenant node groups.

* Fixes after review.

Co-authored-by: Igor Dyczko <idyczko@google.com>
Signed-off-by: Modular Magician <magic-modules@google.com>

Signed-off-by: Modular Magician <magic-modules@google.com>
Co-authored-by: Igor Dyczko <idyczko@google.com>
  • Loading branch information
modular-magician and Igor Dyczko authored Jan 18, 2023
1 parent bdb2b5c commit 8079367
Show file tree
Hide file tree
Showing 3 changed files with 70 additions and 3 deletions.
67 changes: 67 additions & 0 deletions converters/google/resources/compute_node_group.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ package google
import (
"fmt"
"reflect"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

const ComputeNodeGroupAssetType string = "compute.googleapis.com/NodeGroup"
Expand Down Expand Up @@ -93,6 +95,12 @@ func GetComputeNodeGroupApiObject(d TerraformResourceData, config *Config) (map[
} else if v, ok := d.GetOkExists("autoscaling_policy"); !isEmptyValue(reflect.ValueOf(autoscalingPolicyProp)) && (ok || !reflect.DeepEqual(v, autoscalingPolicyProp)) {
obj["autoscalingPolicy"] = autoscalingPolicyProp
}
shareSettingsProp, err := expandComputeNodeGroupShareSettings(d.Get("share_settings"), d, config)
if err != nil {
return nil, err
} else if v, ok := d.GetOkExists("share_settings"); !isEmptyValue(reflect.ValueOf(shareSettingsProp)) && (ok || !reflect.DeepEqual(v, shareSettingsProp)) {
obj["shareSettings"] = shareSettingsProp
}
zoneProp, err := expandComputeNodeGroupZone(d.Get("zone"), d, config)
if err != nil {
return nil, err
Expand Down Expand Up @@ -195,6 +203,65 @@ func expandComputeNodeGroupAutoscalingPolicyMaxNodes(v interface{}, d TerraformR
return v, nil
}

func expandComputeNodeGroupShareSettings(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{})

transformedShareType, err := expandComputeNodeGroupShareSettingsShareType(original["share_type"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedShareType); val.IsValid() && !isEmptyValue(val) {
transformed["shareType"] = transformedShareType
}

transformedProjectMap, err := expandComputeNodeGroupShareSettingsProjectMap(original["project_map"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedProjectMap); val.IsValid() && !isEmptyValue(val) {
transformed["projectMap"] = transformedProjectMap
}

return transformed, nil
}

func expandComputeNodeGroupShareSettingsShareType(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
return v, nil
}

func expandComputeNodeGroupShareSettingsProjectMap(v interface{}, d TerraformResourceData, config *Config) (map[string]interface{}, error) {
if v == nil {
return map[string]interface{}{}, nil
}
m := make(map[string]interface{})
for _, raw := range v.(*schema.Set).List() {
original := raw.(map[string]interface{})
transformed := make(map[string]interface{})

transformedProjectId, err := expandComputeNodeGroupShareSettingsProjectMapProjectId(original["project_id"], d, config)
if err != nil {
return nil, err
} else if val := reflect.ValueOf(transformedProjectId); val.IsValid() && !isEmptyValue(val) {
transformed["projectId"] = transformedProjectId
}

transformedId, err := expandString(original["id"], d, config)
if err != nil {
return nil, err
}
m[transformedId] = transformed
}
return m, nil
}

func expandComputeNodeGroupShareSettingsProjectMapProjectId(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
return v, nil
}

func expandComputeNodeGroupZone(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) {
f, err := parseGlobalFieldValue("zones", v.(string), "project", d, config, true)
if err != nil {
Expand Down
2 changes: 1 addition & 1 deletion go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ require (
github.com/hashicorp/go-cleanhttp v0.5.2
github.com/hashicorp/terraform-json v0.14.0
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0
github.com/hashicorp/terraform-provider-google v1.20.1-0.20230118213923-9f3cbacf9ab7
github.com/hashicorp/terraform-provider-google v1.20.1-0.20230118224110-523f075a77ef
github.com/mitchellh/go-homedir v1.1.0
github.com/pkg/errors v0.9.1
github.com/sirupsen/logrus v1.9.0
Expand Down
4 changes: 2 additions & 2 deletions go.sum
Original file line number Diff line number Diff line change
Expand Up @@ -514,8 +514,8 @@ github.com/hashicorp/terraform-plugin-log v0.7.0 h1:SDxJUyT8TwN4l5b5/VkiTIaQgY6R
github.com/hashicorp/terraform-plugin-log v0.7.0/go.mod h1:p4R1jWBXRTvL4odmEkFfDdhUjHf9zcs/BCoNHAc7IK4=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0 h1:FtCLTiTcykdsURXPt/ku7fYXm3y19nbzbZcUxHx9RbI=
github.com/hashicorp/terraform-plugin-sdk/v2 v2.24.0/go.mod h1:80wf5oad1tW+oLnbXS4UTYmDCrl7BuN1Q+IA91X1a4Y=
github.com/hashicorp/terraform-provider-google v1.20.1-0.20230118213923-9f3cbacf9ab7 h1:CV0KQTYLgsFI3FGbPkOWhW9Mqr5W8MkrU44G+WITLbY=
github.com/hashicorp/terraform-provider-google v1.20.1-0.20230118213923-9f3cbacf9ab7/go.mod h1:hO1IJNy6D0qbRLaGdfmGGERihNWUKSKKL5TU8hNOgRg=
github.com/hashicorp/terraform-provider-google v1.20.1-0.20230118224110-523f075a77ef h1:by+rVUioZ2I0d+r6HN7TYkz05eIGcY0JFk6fkaxKBzE=
github.com/hashicorp/terraform-provider-google v1.20.1-0.20230118224110-523f075a77ef/go.mod h1:hO1IJNy6D0qbRLaGdfmGGERihNWUKSKKL5TU8hNOgRg=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c h1:D8aRO6+mTqHfLsK/BC3j5OAoogv1WLRWzY1AaTo3rBg=
github.com/hashicorp/terraform-registry-address v0.0.0-20220623143253-7d51757b572c/go.mod h1:Wn3Na71knbXc1G8Lh+yu/dQWWJeFQEpDeJMtWMtlmNI=
github.com/hashicorp/terraform-svchost v0.0.0-20200729002733-f050f53b9734 h1:HKLsbzeOsfXmKNpr3GiT18XAblV0BjCbzL8KQAMZGa0=
Expand Down

0 comments on commit 8079367

Please sign in to comment.