Enhance cloudstack_disk_offering resource and datasource - #301
Conversation
There was a problem hiding this comment.
Pull request overview
This PR enhances the cloudstack_disk_offering Terraform resource to support additional CloudStack disk-offering parameters and completes the CRUD implementation, while also introducing a new cloudstack_disk_offering data source (plus docs and acceptance tests) so disk offerings can be discovered and referenced by other resources.
Changes:
- Expanded
cloudstack_disk_offeringresource schema (custom sizing, storage/provisioning type, tags, display flag) and implemented Read/Update/Delete + Importer. - Added
cloudstack_disk_offeringdata source with filter-based selection and acceptance tests. - Updated/added website documentation for the resource and data source.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| website/docs/r/disk_offering.html.markdown | Documents the expanded disk offering resource arguments and attributes. |
| website/docs/d/disk_offering.html.markdown | Adds documentation for the new disk offering data source. |
| cloudstack/resource_cloudstack_disk_offering.go | Implements full disk offering resource CRUD/import and adds missing schema parameters. |
| cloudstack/resource_cloudstack_disk_offering_test.go | Adds acceptance tests for disk offering resource scenarios (basic/customized/update). |
| cloudstack/provider.go | Registers the new disk offering data source with the provider. |
| cloudstack/data_source_cloudstack_disk_offering.go | Implements the disk offering data source and filter logic. |
| cloudstack/data_source_cloudstack_disk_offering_test.go | Adds an acceptance test validating the disk offering data source against a created resource. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
19e1531 to
0b8428c
Compare
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 7 out of 7 changed files in this pull request and generated no new comments.
Suppressed comments (3)
cloudstack/resource_cloudstack_disk_offering.go:64
customizedhasDefault: falsebut Create() forces it totruewheneverdisk_sizeis omitted. This means a config that omits both fields will plan withcustomized=falseand then read backcustomized=true, causing perpetual diffs / forced recreation. The service offering resource avoids this by makingcustomizedComputed: trueinstead of defaulting it.
"customized": {
Description: "Whether the disk offering allows a custom disk size at deployment time",
Type: schema.TypeBool,
Optional: true,
ForceNew: true,
Default: false,
ConflictsWith: []string{"disk_size"},
},
website/docs/r/disk_offering.html.markdown:36
- The
customizedargument docs currently say it "Defaults tofalse" but also say it's "implied whendisk_sizeis omitted" (and the implementation sets it totruewhendisk_sizeis omitted). Please update the wording so the default/implicit behavior is not contradictory and matches provider behavior.
* `customized` - (Optional) Whether the disk offering allows a custom disk size
to be specified at deployment time. Conflicts with `disk_size`, and is
implied when `disk_size` is omitted. Defaults to `false`. Changing this
forces a new resource to be created.
cloudstack/resource_cloudstack_disk_offering_test.go:95
- The acceptance tests cover
customized = trueexplicitly, but not the documented/implemented behavior where omitting bothdisk_sizeandcustomizedshould create a customized offering. Adding coverage for that case would prevent regressions (and would have caught the schema default drift issue).
const testAccCloudStackDiskOffering_customized = `
resource "cloudstack_disk_offering" "custom" {
name = "custom_disk_offering"
display_text = "Custom Test"
customized = true
storage_type = "local"
provisioning_type = "thin"
tags = "ssd"
}
Adds a bunch of missing parameters to the disk offering resource. Initialized the data source for it while I was at it.
Tested on simulator.