mmv1/products/compute/StoragePool.yaml (276 lines of code) (raw):
# Copyright 2025 Google Inc.
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
---
name: "StoragePool"
description: |
A Hyperdisk Storage Pool is a pre-purchased collection of capacity, throughput, and IOPS
which you can then provision to your applications as needed.
You can use Hyperdisk Storage Pools to create and manage disks in pools and use the disks across multiple workloads.
references:
guides:
"Create Hyperdisk Storage Pools": "https://cloud.google.com/compute/docs/disks/create-storage-pools"
api: "https://cloud.google.com/compute/docs/reference/rest/v1/storagePools"
base_url: "projects/{{project}}/zones/{{zone}}/storagePools"
self_link: "projects/{{project}}/zones/{{zone}}/storagePools/{{name}}"
immutable: false
create_url: "projects/{{project}}/zones/{{zone}}/storagePools"
update_verb: "PATCH"
update_mask: false
autogen_async: true
async:
type: 'OpAsync'
operation:
base_url: "{{op_id}}"
iam_policy:
parent_resource_attribute: "name"
method_name_separator: "/"
import_format:
- "projects/{{project}}/zones/{{zone}}/storagePools/{{name}}"
iam_conditions_request_type: "QUERY_PARAM"
allowed_iam_role: "roles/compute.viewer"
examples:
- name: "compute_storage_pool_basic"
primary_resource_id: "test-storage-pool-basic"
primary_resource_name: 'fmt.Sprintf("tf-test-storage-pool-basic%s", context["random_suffix"])'
vars:
storage_pool_name: "storage-pool-basic"
ignore_read_extra:
- 'deletion_protection'
exclude_test: true
- name: "compute_storage_pool_full"
primary_resource_id: "test-storage-pool-full"
primary_resource_name: 'fmt.Sprintf("tf-test-storage-pool-full%s", context["random_suffix"])'
vars:
storage_pool_name: "storage-pool-full"
ignore_read_extra:
- 'deletion_protection'
exclude_test: true
parameters:
- name: "zone"
type: ResourceRef
description: "A reference to the zone where the storage pool resides."
required: false
default_from_api: true
custom_expand: "templates/terraform/custom_expand/resourceref_with_validation.go.tmpl"
custom_flatten: "templates/terraform/custom_flatten/name_from_self_link.tmpl"
resource: "Zone"
imports: "name"
properties:
- name: "kind"
type: String
description: |
Type of the resource.
output: true
- name: "id"
type: String
description: |
The unique identifier for the resource. This identifier is defined by the server.
output: true
- name: "creationTimestamp"
type: String
description: |
Creation timestamp in RFC3339 text format.
output: true
- name: "name"
type: String
description: |
Name of the resource. Provided by the client when the resource is created.
The name must be 1-63 characters long, and comply with RFC1035.
Specifically, the name must be 1-63 characters long and match
the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
which means the first character must be a lowercase letter,
and all following characters must be a dash, lowercase letter, or digit,
except the last character, which cannot be a dash.
immutable: true
required: true
- name: "description"
type: String
description: |
A description of this resource. Provide this property when you create the resource.
immutable: true
required: false
- name: "poolProvisionedCapacityGb"
type: String
description: |
Size, in GiB, of the storage pool. For more information about the size limits,
see https://cloud.google.com/compute/docs/disks/storage-pools.
required: true
- name: "poolProvisionedIops"
type: String
description: |
Provisioned IOPS of the storage pool.
Only relevant if the storage pool type is `hyperdisk-balanced`.
required: false
- name: "poolProvisionedThroughput"
type: String
description: |
Provisioned throughput, in MB/s, of the storage pool.
Only relevant if the storage pool type is `hyperdisk-balanced` or `hyperdisk-throughput`.
required: true
- name: "labelFingerprint"
type: Fingerprint
description: |
The fingerprint used for optimistic locking of this resource.
Used internally during updates.
output: true
- name: "resourceStatus"
type: NestedObject
description: |
Status information for the storage pool resource.
output: true
properties:
- name: "lastResizeTimestamp"
type: String
description: |
Timestamp of the last successful resize in RFC3339 text format.
output: true
- name: "diskCount"
type: String
description: |
Number of disks used.
output: true
- name: "poolUsedCapacityBytes"
type: String
description: |
Space used by data stored in disks within the storage pool (in bytes).
This will reflect the total number of bytes written to the disks in the pool,
in contrast to the capacity of those disks.
output: true
- name: "poolUserWrittenBytes"
type: String
description: |
Amount of data written into the pool, before it is compacted.
output: true
- name: "totalProvisionedDiskCapacityGb"
type: String
description: |
Sum of all the capacity provisioned in disks in this storage pool.
A disk's provisioned capacity is the same as its total capacity.
output: true
- name: "maxTotalProvisionedDiskCapacityGb"
type: String
description: |
Maximum allowed aggregate disk size in gigabytes.
output: true
- name: "poolUsedIops"
type: String
description: |
Sum of all the disks' provisioned IOPS, minus some amount
that is allowed per disk that is not counted towards pool's IOPS capacity.
For more information, see https://cloud.google.com/compute/docs/disks/storage-pools.
output: true
- name: "totalProvisionedDiskIops"
type: String
description: |
Sum of all the disks' provisioned IOPS.
output: true
- name: "poolUsedThroughput"
type: String
description: |
Sum of all the disks' provisioned throughput in MB/s.
output: true
- name: "totalProvisionedDiskThroughput"
type: String
description: |
Sum of all the disks' provisioned throughput in MB/s,
minus some amount that is allowed per disk that is not counted towards pool's throughput capacity.
output: true
- name: "storagePoolType"
type: ResourceRef
description: |
Type of the storage pool. For example, the
following are valid values:
* `https://www.googleapis.com/compute/v1/projects/{project_id}/zones/{zone}/storagePoolTypes/hyperdisk-balanced`
* `hyperdisk-throughput`
required: true
immutable: true
custom_expand: 'templates/terraform/custom_expand/resourceref_with_validation.go.tmpl'
resource: 'StoragePoolType'
imports: 'selfLink'
- name: "status"
type: NestedObject
description: |
Status information for the storage pool resource.
output: true
properties:
- name: "lastResizeTimestamp"
type: String
description: |
Timestamp of the last successful resize in RFC3339 text format.
output: true
- name: "diskCount"
type: String
description: |
Number of disks used.
output: true
- name: "poolUsedCapacityBytes"
type: String
description: |
Space used by data stored in disks within the storage pool (in bytes).
This will reflect the total number of bytes written to the disks in the pool, in contrast to the capacity of those disks.
output: true
- name: "poolUserWrittenBytes"
type: String
description: |
Amount of data written into the pool, before it is compacted.
output: true
- name: "totalProvisionedDiskCapacityGb"
type: String
description: |
Sum of all the capacity provisioned in disks in this storage pool.
A disk's provisioned capacity is the same as its total capacity.
output: true
- name: "maxTotalProvisionedDiskCapacityGb"
type: String
description: |
Maximum allowed aggregate disk size in gigabytes.
output: true
- name: "poolUsedIops"
type: String
description: |
Sum of all the disks' provisioned IOPS, minus some amount that is allowed per disk that is not counted towards pool's IOPS capacity. For more information, see https://cloud.google.com/compute/docs/disks/storage-pools.
output: true
- name: "totalProvisionedDiskIops"
type: String
description: |
Sum of all the disks' provisioned IOPS.
output: true
- name: "poolUsedThroughput"
type: String
description: |
Sum of all the disks' provisioned throughput in MB/s.
output: true
- name: "totalProvisionedDiskThroughput"
type: String
description: |
Sum of all the disks' provisioned throughput in MB/s,
minus some amount that is allowed per disk that is not counted towards pool's throughput capacity.
output: true
- name: "capacityProvisioningType"
type: Enum
description: |
Provisioning type of the byte capacity of the pool.
immutable: true
enum_values:
- "STANDARD"
- "ADVANCED"
default_from_api: true
- name: "performanceProvisioningType"
type: Enum
description: |
Provisioning type of the performance-related parameters of the pool, such as throughput and IOPS.
immutable: true
required: false
enum_values:
- "STANDARD"
- "ADVANCED"
default_from_api: true
virtual_fields:
- name: "deletion_protection"
type: Boolean
default_value: true
description: |
Whether Terraform will be prevented from destroying the StoragePool.
When the field is set to true or unset in Terraform state, a `terraform apply`
or `terraform destroy` that would delete the StoragePool will fail.
When the field is set to false, deleting the StoragePool is allowed.
custom_code:
pre_delete: templates/terraform/pre_delete/compute_storage_pool.go.tmpl