Skip to content

Commit

Permalink
datasource google_compute_disk (GoogleCloudPlatform#5978)
Browse files Browse the repository at this point in the history
  • Loading branch information
AliAllomani authored and betsy-lichtenberg committed Apr 25, 2022
1 parent 74047f8 commit e2174be
Show file tree
Hide file tree
Showing 4 changed files with 190 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package google

import (
"fmt"

"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
)

func dataSourceGoogleComputeDisk() *schema.Resource {

dsSchema := datasourceSchemaFromResourceSchema(resourceComputeDisk().Schema)
addRequiredFieldsToSchema(dsSchema, "name")
addOptionalFieldsToSchema(dsSchema, "project")
addOptionalFieldsToSchema(dsSchema, "zone")

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

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

id, err := replaceVars(d, config, "projects/{{project}}/zones/{{zone}}/disks/{{name}}")
if err != nil {
return fmt.Errorf("Error constructing id: %s", err)
}
d.SetId(id)
return resourceComputeDiskRead(d, meta)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
package google

import (
"testing"

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

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

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

vcrTest(t, resource.TestCase{
PreCheck: func() { testAccPreCheck(t) },
Providers: testAccProviders,
CheckDestroy: testAccCheckComputeDiskDestroyProducer(t),
Steps: []resource.TestStep{
{
Config: testAccDataSourceGoogleComputeDisk_basic(context),
Check: resource.ComposeTestCheckFunc(
checkDataSourceStateMatchesResourceState("data.google_compute_disk.foo", "google_compute_disk.foo"),
),
},
},
})
}

func testAccDataSourceGoogleComputeDisk_basic(context map[string]interface{}) string {
return Nprintf(`
resource "google_compute_disk" "foo" {
name = "tf-test-compute-disk-%{random_suffix}"
}
data "google_compute_disk" "foo" {
name = google_compute_disk.foo.name
project = google_compute_disk.foo.project
}
`, context)
}
1 change: 1 addition & 0 deletions mmv1/third_party/terraform/utils/provider.go.erb
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ func Provider() *schema.Provider {
"google_compute_backend_service": dataSourceGoogleComputeBackendService(),
"google_compute_backend_bucket": dataSourceGoogleComputeBackendBucket(),
"google_compute_default_service_account": dataSourceGoogleComputeDefaultServiceAccount(),
"google_compute_disk": dataSourceGoogleComputeDisk(),
"google_compute_forwarding_rule": dataSourceGoogleComputeForwardingRule(),
"google_compute_global_address": dataSourceGoogleComputeGlobalAddress(),
"google_compute_global_forwarding_rule": dataSourceGoogleComputeGlobalForwardingRule(),
Expand Down
116 changes: 116 additions & 0 deletions mmv1/third_party/terraform/website/docs/d/compute_disk.html.markdown
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
---
subcategory: "Compute Engine"
layout: "google"
page_title: "Google: google_compute_disk"
sidebar_current: "docs-google-datasource-compute-disk"
description: |-
Get information about a Google Compute Persistent disks.
---

# google\_compute\_disk

Get information about a Google Compute Persistent disks.

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

## Example Usage

```hcl
data "google_compute_disk" "persistent-boot-disk" {
name = "persistent-boot-disk"
project = "example"
}
resource "google_compute_instance" "default" {
# ...
boot_disk {
source = data.google_compute_disk.persistent-boot-disk.self_link
auto_delete = false
}
}
```

## Argument Reference

The following arguments are supported:

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

- - -

* `zone` - (Optional) A reference to the zone 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

In addition to the arguments listed above, the following computed attributes are exported:

* `id` - an identifier for the resource with format `projects/{{project}}/zones/{{zone}}/disks/{{name}}`

* `label_fingerprint` -
The fingerprint used for optimistic locking of this resource. Used
internally during updates.

* `creation_timestamp` -
Creation timestamp in RFC3339 text format.

* `last_attach_timestamp` -
Last attach timestamp in RFC3339 text format.

* `last_detach_timestamp` -
Last detach timestamp in RFC3339 text format.

* `users` -
Links to the users of the disk (attached instances) in form:
project/zones/zone/instances/instance

* `source_image_id` -
The ID value of the image used to create this disk. This value
identifies the exact image that was used to create this persistent
disk. For example, if you created the persistent disk from an image
that was later deleted and recreated under the same name, the source
image ID would identify the exact version of the image that was used.

* `source_snapshot_id` -
The unique ID of the snapshot used to create this disk. This value
identifies the exact snapshot that was used to create this persistent
disk. For example, if you created the persistent disk from a snapshot
that was later deleted and recreated under the same name, the source
snapshot ID would identify the exact version of the snapshot that was
used.

* `description` -
The optional description of this resource.

* `labels` - A map of labels applied to this disk.

* `size` -
Size of the persistent disk, specified in GB.

* `physical_block_size_bytes` -
Physical block size of the persistent disk, in bytes.

* `type` -
URL of the disk type resource describing which disk type to use to
create the disk.

* `image` -
The image from which to initialize this disk.

* `zone` -
A reference to the zone where the disk resides.

* `source_image_encryption_key` -
The customer-supplied encryption key of the source image.

* `snapshot` -
The source snapshot used to create this disk.

* `source_snapshot_encryption_key` -
(Optional)
The customer-supplied encryption key of the source snapshot.

* `self_link` - The URI of the created resource.

0 comments on commit e2174be

Please sign in to comment.