Skip to content

Commit

Permalink
Make scope optional for google_compute_(region_)resize_request so tha…
Browse files Browse the repository at this point in the history
…t the default can be taken from the provider configuration (#12957)

Co-authored-by: Riley Karson <[email protected]>

[upstream:57413324af1f8dbb13e68a55d5290338908f46e3]

Signed-off-by: Modular Magician <[email protected]>
  • Loading branch information
modular-magician committed Feb 5, 2025
1 parent a9bd158 commit 83a0b63
Show file tree
Hide file tree
Showing 7 changed files with 75 additions and 24 deletions.
3 changes: 3 additions & 0 deletions .changelog/12957.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:bug
compute: fixed google_compute_(region_)resize_request requiring region/zone to be specified in all cases. They can now be pulled from the provider.
```
Original file line number Diff line number Diff line change
Expand Up @@ -64,13 +64,6 @@ func ResourceComputeRegionResizeRequest() *schema.Resource {
ForceNew: true,
Description: `The name of this resize request. The name must be 1-63 characters long, and comply with RFC1035.`,
},
"region": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `The reference of the compute region scoping this request.`,
},
"resize_by": {
Type: schema.TypeInt,
Required: true,
Expand All @@ -83,6 +76,14 @@ func ResourceComputeRegionResizeRequest() *schema.Resource {
ForceNew: true,
Description: `An optional description of this resize-request.`,
},
"region": {
Type: schema.TypeString,
Computed: true,
Optional: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `The reference of the compute region scoping this request. If it is not provided, the provider region is used.`,
},
"requested_run_duration": {
Type: schema.TypeList,
Optional: true,
Expand Down Expand Up @@ -485,6 +486,12 @@ func resourceComputeRegionResizeRequestCreate(d *schema.ResourceData, meta inter
} else if v, ok := d.GetOkExists("requested_run_duration"); !tpgresource.IsEmptyValue(reflect.ValueOf(requestedRunDurationProp)) && (ok || !reflect.DeepEqual(v, requestedRunDurationProp)) {
obj["requestedRunDuration"] = requestedRunDurationProp
}
regionProp, err := expandComputeRegionResizeRequestRegion(d.Get("region"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("region"); !tpgresource.IsEmptyValue(reflect.ValueOf(regionProp)) && (ok || !reflect.DeepEqual(v, regionProp)) {
obj["region"] = regionProp
}

url, err := tpgresource.ReplaceVars(d, config, "{{ComputeBasePath}}projects/{{project}}/regions/{{region}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests")
if err != nil {
Expand Down Expand Up @@ -605,6 +612,9 @@ func resourceComputeRegionResizeRequestRead(d *schema.ResourceData, meta interfa
if err := d.Set("status", flattenComputeRegionResizeRequestStatus(res["status"], d, config)); err != nil {
return fmt.Errorf("Error reading RegionResizeRequest: %s", err)
}
if err := d.Set("region", flattenComputeRegionResizeRequestRegion(res["region"], d, config)); err != nil {
return fmt.Errorf("Error reading RegionResizeRequest: %s", err)
}

return nil
}
Expand Down Expand Up @@ -1256,6 +1266,13 @@ func flattenComputeRegionResizeRequestStatusLastAttemptErrorErrorsErrorDetailsLo
return v
}

func flattenComputeRegionResizeRequestRegion(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return v
}
return tpgresource.NameFromSelfLinkStateFunc(v)
}

func expandComputeRegionResizeRequestName(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
Expand Down Expand Up @@ -1301,3 +1318,11 @@ func expandComputeRegionResizeRequestRequestedRunDurationSeconds(v interface{},
func expandComputeRegionResizeRequestRequestedRunDurationNanos(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}

func expandComputeRegionResizeRequestRegion(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
f, err := tpgresource.ParseGlobalFieldValue("regions", v.(string), "project", d, config, true)
if err != nil {
return nil, fmt.Errorf("Invalid value for region: %s", err)
}
return f.RelativeLink(), nil
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ fields:
provider_only: true
- field: 'name'
- field: 'region'
provider_only: true
- field: 'requested_run_duration.nanos'
- field: 'requested_run_duration.seconds'
- field: 'resize_by'
Expand Down
39 changes: 32 additions & 7 deletions google-beta/services/compute/resource_compute_resize_request.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,6 @@ func ResourceComputeResizeRequest() *schema.Resource {
ForceNew: true,
Description: `The number of instances to be created by this resize request. The group's target size will be increased by this number.`,
},
"zone": {
Type: schema.TypeString,
Required: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `The reference of the compute zone scoping this request.`,
},
"description": {
Type: schema.TypeString,
Optional: true,
Expand Down Expand Up @@ -106,6 +99,14 @@ func ResourceComputeResizeRequest() *schema.Resource {
},
},
},
"zone": {
Type: schema.TypeString,
Computed: true,
Optional: true,
ForceNew: true,
DiffSuppressFunc: tpgresource.CompareSelfLinkOrResourceName,
Description: `The reference of the compute zone scoping this request. If it is not provided, the provider zone is used.`,
},
"creation_timestamp": {
Type: schema.TypeString,
Computed: true,
Expand Down Expand Up @@ -485,6 +486,12 @@ func resourceComputeResizeRequestCreate(d *schema.ResourceData, meta interface{}
} else if v, ok := d.GetOkExists("requested_run_duration"); !tpgresource.IsEmptyValue(reflect.ValueOf(requestedRunDurationProp)) && (ok || !reflect.DeepEqual(v, requestedRunDurationProp)) {
obj["requestedRunDuration"] = requestedRunDurationProp
}
zoneProp, err := expandComputeResizeRequestZone(d.Get("zone"), d, config)
if err != nil {
return err
} else if v, ok := d.GetOkExists("zone"); !tpgresource.IsEmptyValue(reflect.ValueOf(zoneProp)) && (ok || !reflect.DeepEqual(v, zoneProp)) {
obj["zone"] = zoneProp
}

url, err := tpgresource.ReplaceVars(d, config, "{{ComputeBasePath}}projects/{{project}}/zones/{{zone}}/instanceGroupManagers/{{instance_group_manager}}/resizeRequests")
if err != nil {
Expand Down Expand Up @@ -605,6 +612,9 @@ func resourceComputeResizeRequestRead(d *schema.ResourceData, meta interface{})
if err := d.Set("status", flattenComputeResizeRequestStatus(res["status"], d, config)); err != nil {
return fmt.Errorf("Error reading ResizeRequest: %s", err)
}
if err := d.Set("zone", flattenComputeResizeRequestZone(res["zone"], d, config)); err != nil {
return fmt.Errorf("Error reading ResizeRequest: %s", err)
}

return nil
}
Expand Down Expand Up @@ -1258,6 +1268,13 @@ func flattenComputeResizeRequestStatusLastAttemptErrorErrorsErrorDetailsLocalize
return v
}

func flattenComputeResizeRequestZone(v interface{}, d *schema.ResourceData, config *transport_tpg.Config) interface{} {
if v == nil {
return v
}
return tpgresource.NameFromSelfLinkStateFunc(v)
}

func expandComputeResizeRequestName(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}
Expand Down Expand Up @@ -1303,3 +1320,11 @@ func expandComputeResizeRequestRequestedRunDurationSeconds(v interface{}, d tpgr
func expandComputeResizeRequestRequestedRunDurationNanos(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
return v, nil
}

func expandComputeResizeRequestZone(v interface{}, d tpgresource.TerraformResourceData, config *transport_tpg.Config) (interface{}, error) {
f, err := tpgresource.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
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,3 @@ fields:
- field: 'status.last_attempt.error.errors.location'
- field: 'status.last_attempt.error.errors.message'
- field: 'zone'
provider_only: true
8 changes: 4 additions & 4 deletions website/docs/r/compute_region_resize_request.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -136,10 +136,6 @@ The following arguments are supported:
(Required)
The number of instances to be created by this resize request. The group's target size will be increased by this number.

* `region` -
(Required)
The reference of the compute region scoping this request.

* `instance_group_manager` -
(Required)
The reference of the regional instance group manager this ResizeRequest is a part of.
Expand All @@ -157,6 +153,10 @@ The following arguments are supported:
Requested run duration for instances that will be created by this request. At the end of the run duration instances will be deleted.
Structure is [documented below](#nested_requested_run_duration).

* `region` -
(Optional)
The reference of the compute region scoping this request. If it is not provided, the provider region is used.

* `project` - (Optional) The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.

Expand Down
8 changes: 4 additions & 4 deletions website/docs/r/compute_resize_request.html.markdown
Original file line number Diff line number Diff line change
Expand Up @@ -126,10 +126,6 @@ The following arguments are supported:
(Required)
The number of instances to be created by this resize request. The group's target size will be increased by this number.

* `zone` -
(Required)
The reference of the compute zone scoping this request.

* `instance_group_manager` -
(Required)
The reference of the instance group manager this ResizeRequest is a part of.
Expand All @@ -147,6 +143,10 @@ The following arguments are supported:
Requested run duration for instances that will be created by this request. At the end of the run duration instance will be deleted.
Structure is [documented below](#nested_requested_run_duration).

* `zone` -
(Optional)
The reference of the compute zone scoping this request. If it is not provided, the provider zone is used.

* `project` - (Optional) The ID of the project in which the resource belongs.
If it is not provided, the provider project is used.

Expand Down

0 comments on commit 83a0b63

Please sign in to comment.