diff --git a/google/cai_test.go b/google/cai_test.go index cc41289d3..0a63013ff 100644 --- a/google/cai_test.go +++ b/google/cai_test.go @@ -70,6 +70,11 @@ type mockTerraformResourceData struct { TerraformResourceData } +func (d *mockTerraformResourceData) GetOkExists(k string) (interface{}, bool) { + v, ok := d.m[k] + return v, ok +} + func (d *mockTerraformResourceData) GetOk(k string) (interface{}, bool) { v, ok := d.m[k] return v, ok diff --git a/google/compute_node_group.go b/google/compute_node_group.go new file mode 100644 index 000000000..fbe97d604 --- /dev/null +++ b/google/compute_node_group.go @@ -0,0 +1,105 @@ +// ---------------------------------------------------------------------------- +// +// *** AUTO GENERATED CODE *** AUTO GENERATED CODE *** +// +// ---------------------------------------------------------------------------- +// +// This file is automatically generated by Magic Modules and manual +// changes will be clobbered when the file is regenerated. +// +// Please read more about how to change this file in +// .github/CONTRIBUTING.md. +// +// ---------------------------------------------------------------------------- + +package google + +import ( + "fmt" + "reflect" +) + +func GetComputeNodeGroupCaiObject(d TerraformResourceData, config *Config) (Asset, error) { + name, err := assetName(d, config, "//compute.googleapis.com/projects/{{project}}/zones/{{zone}}/nodeGroups/{{name}}") + if err != nil { + return Asset{}, err + } + if obj, err := GetComputeNodeGroupApiObject(d, config); err == nil { + return Asset{ + Name: name, + Type: "compute.googleapis.com/NodeGroup", + Resource: &AssetResource{ + Version: "v1", + DiscoveryDocumentURI: "https://www.googleapis.com/discovery/v1/apis/compute/v1/rest", + DiscoveryName: "NodeGroup", + Data: obj, + }, + }, nil + } else { + return Asset{}, err + } +} + +func GetComputeNodeGroupApiObject(d TerraformResourceData, config *Config) (map[string]interface{}, error) { + obj := make(map[string]interface{}) + descriptionProp, err := expandComputeNodeGroupDescription(d.Get("description"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("description"); !isEmptyValue(reflect.ValueOf(descriptionProp)) && (ok || !reflect.DeepEqual(v, descriptionProp)) { + obj["description"] = descriptionProp + } + nameProp, err := expandComputeNodeGroupName(d.Get("name"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("name"); !isEmptyValue(reflect.ValueOf(nameProp)) && (ok || !reflect.DeepEqual(v, nameProp)) { + obj["name"] = nameProp + } + nodeTemplateProp, err := expandComputeNodeGroupNodeTemplate(d.Get("node_template"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("node_template"); !isEmptyValue(reflect.ValueOf(nodeTemplateProp)) && (ok || !reflect.DeepEqual(v, nodeTemplateProp)) { + obj["nodeTemplate"] = nodeTemplateProp + } + sizeProp, err := expandComputeNodeGroupSize(d.Get("size"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("size"); ok || !reflect.DeepEqual(v, sizeProp) { + obj["size"] = sizeProp + } + zoneProp, err := expandComputeNodeGroupZone(d.Get("zone"), d, config) + if err != nil { + return nil, err + } else if v, ok := d.GetOkExists("zone"); !isEmptyValue(reflect.ValueOf(zoneProp)) && (ok || !reflect.DeepEqual(v, zoneProp)) { + obj["zone"] = zoneProp + } + + return obj, nil +} + +func expandComputeNodeGroupDescription(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + return v, nil +} + +func expandComputeNodeGroupName(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + return v, nil +} + +func expandComputeNodeGroupNodeTemplate(v interface{}, d TerraformResourceData, config *Config) (interface{}, error) { + f, err := parseRegionalFieldValue("nodeTemplates", v.(string), "project", "region", "zone", d, config, true) + if err != nil { + return nil, fmt.Errorf("Invalid value for node_template: %s", err) + } + return f.RelativeLink(), nil +} + +func expandComputeNodeGroupSize(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 { + return nil, fmt.Errorf("Invalid value for zone: %s", err) + } + return f.RelativeLink(), nil +} diff --git a/google/transport.go b/google/transport.go index e06e2496f..dc847552f 100644 --- a/google/transport.go +++ b/google/transport.go @@ -164,7 +164,7 @@ func buildReplacementFunc(re *regexp.Regexp, d TerraformResourceData, config *Co if m == "zone" { return zone } - v, ok := d.GetOk(m) + v, ok := d.GetOkExists(m) if ok { return fmt.Sprintf("%v", v) }