Skip to content

Commit e9928ac

Browse files
authored
Adding in Datasource for google_compute_storage_pool (#15737)
1 parent a2a4065 commit e9928ac

File tree

4 files changed

+147
-0
lines changed

4 files changed

+147
-0
lines changed

mmv1/third_party/terraform/provider/provider_mmv1_resources.go.tmpl

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -140,6 +140,7 @@ var handwrittenDatasources = map[string]*schema.Resource{
140140
"google_compute_snapshot": compute.DataSourceGoogleComputeSnapshot(),
141141
"google_compute_ssl_certificate": compute.DataSourceGoogleComputeSslCertificate(),
142142
"google_compute_ssl_policy": compute.DataSourceGoogleComputeSslPolicy(),
143+
"google_compute_storage_pool": compute.DataSourceGoogleComputeStoragePool(),
143144
"google_compute_storage_pool_types": compute.DataSourceGoogleComputeStoragePoolTypes(),
144145
"google_compute_subnetwork": compute.DataSourceGoogleComputeSubnetwork(),
145146
"google_compute_subnetworks": compute.DataSourceGoogleComputeSubnetworks(),
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package compute
2+
3+
import (
4+
"fmt"
5+
6+
"github.com/hashicorp/terraform-provider-google/google/tpgresource"
7+
transport_tpg "github.com/hashicorp/terraform-provider-google/google/transport"
8+
9+
"github.com/hashicorp/terraform-plugin-sdk/v2/helper/schema"
10+
)
11+
12+
func DataSourceGoogleComputeStoragePool() *schema.Resource {
13+
// Generate datasource schema from resource
14+
dsSchema := tpgresource.DatasourceSchemaFromResourceSchema(ResourceComputeStoragePool().Schema)
15+
16+
// Set 'Required' schema elements
17+
tpgresource.AddRequiredFieldsToSchema(dsSchema, "name")
18+
tpgresource.AddRequiredFieldsToSchema(dsSchema, "zone")
19+
20+
tpgresource.AddOptionalFieldsToSchema(dsSchema, "project")
21+
22+
return &schema.Resource{
23+
Read: dataSourceGoogleComputeStoragePoolRead,
24+
Schema: dsSchema,
25+
}
26+
}
27+
28+
func dataSourceGoogleComputeStoragePoolRead(d *schema.ResourceData, meta interface{}) error {
29+
config := meta.(*transport_tpg.Config)
30+
err := resourceComputeStoragePoolRead(d, meta)
31+
if err != nil {
32+
return err
33+
}
34+
35+
project, err := tpgresource.GetProject(d, config)
36+
if err != nil {
37+
return err
38+
}
39+
zone, err := tpgresource.GetZone(d, config)
40+
if err != nil {
41+
return err
42+
}
43+
name := d.Get("name").(string)
44+
45+
d.SetId(fmt.Sprintf("projects/%s/zones/%s/storagePools/%s", project, zone, name))
46+
47+
if err := d.Set("deletion_protection", false); err != nil {
48+
return fmt.Errorf("Error setting deletion_protection: %s", err)
49+
}
50+
51+
return nil
52+
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
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-testing/helper/resource"
9+
"github.com/hashicorp/terraform-provider-google/google/acctest"
10+
)
11+
12+
func TestAccDataSourceComputeStoragePool_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: testAccCheckComputeStoragePoolDestroyProducer(t),
23+
Steps: []resource.TestStep{
24+
{
25+
Config: testAccDataSourceComputeStoragePool_basic(context),
26+
Check: resource.ComposeTestCheckFunc(
27+
acctest.CheckDataSourceStateMatchesResourceState("data.google_compute_storage_pool.my-storage-pool-data", "google_compute_storage_pool.test-storage-pool"),
28+
),
29+
},
30+
},
31+
})
32+
}
33+
func testAccDataSourceComputeStoragePool_basic(context map[string]interface{}) string {
34+
return acctest.Nprintf(`
35+
resource "google_compute_storage_pool" "test-storage-pool" {
36+
name = "tf-test-storage-pool-%{random_suffix}"
37+
zone = "us-central1-a"
38+
capacity_provisioning_type = "STANDARD"
39+
pool_provisioned_capacity_gb = "11264"
40+
pool_provisioned_iops = "20000"
41+
pool_provisioned_throughput = "2048"
42+
storage_pool_type = "hyperdisk-balanced"
43+
deletion_protection = false
44+
}
45+
46+
47+
data "google_compute_storage_pool" "my-storage-pool-data" {
48+
name = google_compute_storage_pool.test-storage-pool.name
49+
zone = "us-central1-a"
50+
}
51+
`, context)
52+
}
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
---
2+
subcategory: "Compute Engine"
3+
description: |-
4+
Provide access to a Storage Pool's attributes
5+
---
6+
7+
# google_compute_storage_pool
8+
9+
Provides access to available Google Compute Storage Pool resources for a given project and zone.
10+
See more about [Hyperdisk Storage Pools](https://cloud.google.com/compute/docs/disks/storage-pools) in the upstream docs.
11+
12+
## Example Usage
13+
14+
```hcl
15+
data "google_compute_storage_pool" "my_pool" {
16+
name = "my-storage-pool"
17+
zone = "us-central1-a"
18+
}
19+
20+
output "pool_capacity" {
21+
value = data.google_compute_storage_pool.my_pool.pool_provisioned_capacity_gb
22+
}
23+
24+
output "pool_type" {
25+
value = data.google_compute_storage_pool.my_pool.storage_pool_type
26+
}
27+
```
28+
29+
## Argument Reference
30+
31+
The following arguments are supported:
32+
33+
* `name` (Required) - The name of the Storage Pool.
34+
* `zone` (Required) - The zone where the Storage Pool resides.
35+
* `project` (Optional) - The project in which the Storage Pool exists. If it is not provided, the provider project is used.
36+
37+
## Note
38+
* `deletion_protection` is always set to false on the data source and will not be represetative of the actual value on `google_compute_storage_pool` reaosure being read
39+
40+
## Attributes Reference
41+
42+
See [google_compute_storage_pool](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/compute_storage_pool) resource for details of the available attributes.

0 commit comments

Comments
 (0)