Skip to content

Commit 6b31b8c

Browse files
Add data source for google_compute_region_disk (#9421) (#16732)
[upstream:65322ce7395a0a1e39dcfe357dae47c90b954c5a] Signed-off-by: Modular Magician <[email protected]>
1 parent 0a655b8 commit 6b31b8c

File tree

5 files changed

+154
-1
lines changed

5 files changed

+154
-1
lines changed

.changelog/9421.txt

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
```release-note:new-datasource
2+
`google_compute_region_disk`
3+
```

google/provider/provider_mmv1_resources.go

+2-1
Original file line numberDiff line numberDiff line change
@@ -173,9 +173,10 @@ var handwrittenDatasources = map[string]*schema.Resource{
173173
"google_compute_network_peering": compute.DataSourceComputeNetworkPeering(),
174174
"google_compute_node_types": compute.DataSourceGoogleComputeNodeTypes(),
175175
"google_compute_regions": compute.DataSourceGoogleComputeRegions(),
176-
"google_compute_region_network_endpoint_group": compute.DataSourceGoogleComputeRegionNetworkEndpointGroup(),
176+
"google_compute_region_disk": compute.DataSourceGoogleComputeRegionDisk(),
177177
"google_compute_region_instance_group": compute.DataSourceGoogleComputeRegionInstanceGroup(),
178178
"google_compute_region_instance_template": compute.DataSourceGoogleComputeRegionInstanceTemplate(),
179+
"google_compute_region_network_endpoint_group": compute.DataSourceGoogleComputeRegionNetworkEndpointGroup(),
179180
"google_compute_region_ssl_certificate": compute.DataSourceGoogleRegionComputeSslCertificate(),
180181
"google_compute_resource_policy": compute.DataSourceGoogleComputeResourcePolicy(),
181182
"google_compute_router": compute.DataSourceGoogleComputeRouter(),
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package compute
4+
5+
import (
6+
"fmt"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
9+
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
10+
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
11+
)
12+
13+
func DataSourceGoogleComputeRegionDisk() *schema.Resource {
14+
15+
dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceComputeRegionDisk().Schema)
16+
tpgresource.AddRequiredFieldsToSchema(dsSchema, "name")
17+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project")
18+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "region")
19+
20+
return &schema.Resource{
21+
Read: dataSourceGoogleComputeRegionDiskRead,
22+
Schema: dsSchema,
23+
}
24+
}
25+
26+
func dataSourceGoogleComputeRegionDiskRead(d *schema.ResourceData, meta interface{}) error {
27+
config := meta.(*transport_tpg.Config)
28+
29+
id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/regions/{{region}}/disks/{{name}}")
30+
if err != nil {
31+
return fmt.Errorf("Error constructing id: %s", err)
32+
}
33+
d.SetId(id)
34+
err = resourceComputeRegionDiskRead(d, meta)
35+
if err != nil {
36+
return err
37+
}
38+
39+
if err := tpgresource.SetDataSourceLabels(d); err != nil {
40+
return err
41+
}
42+
43+
if d.Id() == "" {
44+
return fmt.Errorf("%s not found", id)
45+
}
46+
47+
return nil
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Copyright (c) HashiCorp, Inc.
2+
// SPDX-License-Identifier: MPL-2.0
3+
package compute_test
4+
5+
import (
6+
"testing"
7+
8+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
9+
"github.com/hashicorp/terraform-provider-google/google/acctest"
10+
)
11+
12+
func TestAccDataSourceGoogleComputeRegionDisk_basic(t *testing.T) {
13+
t.Parallel()
14+
15+
context := map[string]interface{}{
16+
"random_suffix": acctest.RandString(t, 10),
17+
}
18+
19+
acctest.VcrTest(t, resource.TestCase{
20+
PreCheck: func() { acctest.AccTestPreCheck(t) },
21+
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
22+
CheckDestroy: testAccCheckComputeDiskDestroyProducer(t),
23+
Steps: []resource.TestStep{
24+
{
25+
Config: testAccDataSourceGoogleComputeRegionDisk_basic(context),
26+
Check: resource.ComposeTestCheckFunc(
27+
acctest.CheckDataSourceStateMatchesResourceState("data.google_compute_region_disk.foo", "google_compute_region_disk.foo"),
28+
),
29+
},
30+
},
31+
})
32+
}
33+
34+
func testAccDataSourceGoogleComputeRegionDisk_basic(context map[string]interface{}) string {
35+
return acctest.Nprintf(`
36+
resource "google_compute_region_disk" "foo" {
37+
name = "tf-test-compute-disk-%{random_suffix}"
38+
type = "pd-standard"
39+
replica_zones = ["us-central1-a", "us-central1-f"]
40+
41+
labels = {
42+
my-label = "my-label-value"
43+
}
44+
}
45+
46+
data "google_compute_region_disk" "foo" {
47+
name = google_compute_region_disk.foo.name
48+
project = google_compute_region_disk.foo.project
49+
}
50+
`, context)
51+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
---
2+
subcategory: "Compute Engine"
3+
description: |-
4+
Get information about a Google Compute Regional Persistent disks.
5+
---
6+
7+
# google\_compute\_region\_disk
8+
9+
Get information about a Google Compute Regional Persistent disks.
10+
11+
[the official documentation](https://cloud.google.com/compute/docs/disks) and its [API](https://cloud.google.com/compute/docs/reference/rest/v1/regionDisks).
12+
13+
## Example Usage
14+
15+
```hcl
16+
data "google_compute_region_disk" "disk" {
17+
name = "persistent-regional-disk"
18+
project = "example"
19+
region = "us-central1"
20+
type = "pd-ssd"
21+
physical_block_size_bytes = 4096
22+
23+
replica_zones = ["us-central1-a", "us-central1-f"]
24+
}
25+
26+
resource "google_compute_instance" "default" {
27+
# ...
28+
29+
attached_disk {
30+
source = data.google_compute_disk.disk.self_link
31+
}
32+
}
33+
```
34+
35+
## Argument Reference
36+
37+
The following arguments are supported:
38+
39+
* `name` - (Required) The name of a specific disk.
40+
41+
- - -
42+
43+
* `region` - (Optional) A reference to the region where the disk resides.
44+
45+
* `project` - (Optional) The ID of the project in which the resource belongs.
46+
If it is not provided, the provider project is used.
47+
48+
## Attributes Reference
49+
50+
See [google_compute_region_disk](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_region_disk) resource for details of the available attributes.

0 commit comments

Comments
 (0)