Skip to content

Commit

Permalink
Add data source for google_compute_region_disk (#9421) (#16732)
Browse files Browse the repository at this point in the history
[upstream:65322ce7395a0a1e39dcfe357dae47c90b954c5a]

Signed-off-by: Modular Magician <magic-modules@google.com>
  • Loading branch information
modular-magician authored Dec 7, 2023
1 parent 0a655b8 commit 6b31b8c
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 1 deletion.
3 changes: 3 additions & 0 deletions .changelog/9421.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
```release-note:new-datasource
`google_compute_region_disk`
```
3 changes: 2 additions & 1 deletion google/provider/provider_mmv1_resources.go
Original file line number Diff line number Diff line change
Expand Up @@ -173,9 +173,10 @@ var handwrittenDatasources = map[string]*schema.Resource{
"google_compute_network_peering": compute.DataSourceComputeNetworkPeering(),
"google_compute_node_types": compute.DataSourceGoogleComputeNodeTypes(),
"google_compute_regions": compute.DataSourceGoogleComputeRegions(),
"google_compute_region_network_endpoint_group": compute.DataSourceGoogleComputeRegionNetworkEndpointGroup(),
"google_compute_region_disk": compute.DataSourceGoogleComputeRegionDisk(),
"google_compute_region_instance_group": compute.DataSourceGoogleComputeRegionInstanceGroup(),
"google_compute_region_instance_template": compute.DataSourceGoogleComputeRegionInstanceTemplate(),
"google_compute_region_network_endpoint_group": compute.DataSourceGoogleComputeRegionNetworkEndpointGroup(),
"google_compute_region_ssl_certificate": compute.DataSourceGoogleRegionComputeSslCertificate(),
"google_compute_resource_policy": compute.DataSourceGoogleComputeResourcePolicy(),
"google_compute_router": compute.DataSourceGoogleComputeRouter(),
Expand Down
48 changes: 48 additions & 0 deletions google/services/compute/data_source_google_compute_region_disk.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package compute

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
)

func DataSourceGoogleComputeRegionDisk() *schema.Resource {

dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceComputeRegionDisk().Schema)
tpgresource.AddRequiredFieldsToSchema(dsSchema, "name")
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project")
tpgresource.AddOptionalFieldsToSchema(dsSchema, "region")

return &schema.Resource{
Read: dataSourceGoogleComputeRegionDiskRead,
Schema: dsSchema,
}
}

func dataSourceGoogleComputeRegionDiskRead(d *schema.ResourceData, meta interface{}) error {
config := meta.(*transport_tpg.Config)

id, err := tpgresource.ReplaceVars(d, config, "projects/{{project}}/regions/{{region}}/disks/{{name}}")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)
err = resourceComputeRegionDiskRead(d, meta)
if err != nil {
return err
}

if err := tpgresource.SetDataSourceLabels(d); err != nil {
return err
}

if d.Id() == "" {
return fmt.Errorf("%s not found", id)
}

return nil
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0
package compute_test

import (
"testing"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/resource"
"github.com/hashicorp/terraform-provider-google/google/acctest"
)

func TestAccDataSourceGoogleComputeRegionDisk_basic(t *testing.T) {
t.Parallel()

context := map[string]interface{}{
"random_suffix": acctest.RandString(t, 10),
}

acctest.VcrTest(t, resource.TestCase{
PreCheck: func() { acctest.AccTestPreCheck(t) },
ProtoV5ProviderFactories: acctest.ProtoV5ProviderFactories(t),
CheckDestroy: testAccCheckComputeDiskDestroyProducer(t),
Steps: []resource.TestStep{
{
Config: testAccDataSourceGoogleComputeRegionDisk_basic(context),
Check: resource.ComposeTestCheckFunc(
acctest.CheckDataSourceStateMatchesResourceState("data.google_compute_region_disk.foo", "google_compute_region_disk.foo"),
),
},
},
})
}

func testAccDataSourceGoogleComputeRegionDisk_basic(context map[string]interface{}) string {
return acctest.Nprintf(`
resource "google_compute_region_disk" "foo" {
name = "tf-test-compute-disk-%{random_suffix}"
type = "pd-standard"
replica_zones = ["us-central1-a", "us-central1-f"]
labels = {
my-label = "my-label-value"
}
}
data "google_compute_region_disk" "foo" {
name = google_compute_region_disk.foo.name
project = google_compute_region_disk.foo.project
}
`, context)
}
50 changes: 50 additions & 0 deletions website/docs/d/compute_region_disk.html.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
---
subcategory: "Compute Engine"
description: |-
Get information about a Google Compute Regional Persistent disks.
---

# google\_compute\_region\_disk

Get information about a Google Compute Regional Persistent disks.

[the official documentation](https://cloud.google.com/compute/docs/disks) and its [API](https://cloud.google.com/compute/docs/reference/rest/v1/regionDisks).

## Example Usage

```hcl
data "google_compute_region_disk" "disk" {
name = "persistent-regional-disk"
project = "example"
region = "us-central1"
type = "pd-ssd"
physical_block_size_bytes = 4096
replica_zones = ["us-central1-a", "us-central1-f"]
}
resource "google_compute_instance" "default" {
# ...
attached_disk {
source = data.google_compute_disk.disk.self_link
}
}
```

## Argument Reference

The following arguments are supported:

* `name` - (Required) The name of a specific disk.

- - -

* `region` - (Optional) A reference to the region where the disk resides.

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

## Attributes Reference

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 comments on commit 6b31b8c

Please sign in to comment.