mmv1/products/netapp/StoragePool.yaml (174 lines of code) (raw):

# Copyright 2024 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: | Storage pools act as containers for volumes. All volumes in a storage pool share the following information: * Location * Service level * Virtual Private Cloud (VPC) network * Active Directory policy * LDAP use for NFS volumes, if applicable * Customer-managed encryption key (CMEK) policy The capacity of the pool can be split up and assigned to volumes within the pool. Storage pools are a billable component of NetApp Volumes. Billing is based on the location, service level, and capacity allocated to a pool independent of consumption at the volume level. Storage pools of service level Flex are available as zonal (single zone) or regional (two zones in same region) pools. Zonal and regional pools are high-available within the zone. On top of that, regional pools have `replica_zone` as hot standby zone. All volume access is served from the `zone`. If `zone` fails, `replica_zone` automatically becomes the active zone. This will cause state drift in your configuration. If a zone switch (manual or automatic) is triggered outside of Terraform, you need to adjust the `zone` and `replica_zone` values to reflect the current state, or Terraform will initiate a zone switch when running the next apply. You can trigger a manual [zone switch](https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones) via Terraform by swapping the value of the `zone` and `replica_zone` parameters in your HCL code. Note: Custom Performance FLEX storage pools are supported in beta provider currently. references: guides: 'Quickstart documentation': 'https://cloud.google.com/netapp/volumes/docs/get-started/quickstarts/create-storage-pool' 'Regional Flex zone switch': 'https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones' api: 'https://cloud.google.com/netapp/volumes/docs/reference/rest/v1/projects.locations.storagePools' docs: id_format: 'projects/{{project}}/locations/{{location}}/storagePools/{{name}}' base_url: 'projects/{{project}}/locations/{{location}}/storagePools' self_link: 'projects/{{project}}/locations/{{location}}/storagePools/{{name}}' create_url: 'projects/{{project}}/locations/{{location}}/storagePools?storagePoolId={{name}}' update_url: 'projects/{{project}}/locations/{{location}}/storagePools/{{name}}' update_verb: 'PATCH' update_mask: true delete_url: 'projects/{{project}}/locations/{{location}}/storagePools/{{name}}' import_format: - 'projects/{{project}}/locations/{{location}}/storagePools/{{name}}' timeouts: insert_minutes: 45 update_minutes: 20 delete_minutes: 20 autogen_async: true async: actions: ['create', 'delete', 'update'] type: 'OpAsync' operation: base_url: '{{op_id}}' result: resource_inside_response: false custom_code: pre_update: 'templates/terraform/pre_update/netapp_storagepool.go.tmpl' # Skipping the sweeper since we need to sweep multiple regions exclude_sweeper: true examples: - name: 'Storage_pool_create' primary_resource_id: 'test_pool' vars: pool_name: 'test-pool' network_name: 'test-network' global_name: 'test-address' parameters: - name: 'location' type: String description: | Name of the location. For zonal Flex pools specify a zone name, in all other cases a region name. url_param_only: true required: true immutable: true - name: 'name' type: String description: The resource name of the storage pool. Needs to be unique per location/region. url_param_only: true required: true immutable: true properties: - name: 'serviceLevel' type: Enum description: | Service level of the storage pool. required: true immutable: true enum_values: - 'PREMIUM' - 'EXTREME' - 'STANDARD' - 'FLEX' - name: 'capacityGib' type: String description: | Capacity of the storage pool (in GiB). required: true - name: 'volumeCapacityGib' type: String description: | Size allocated to volumes in the storage pool (in GiB). output: true - name: 'volumeCount' type: Integer description: | Number of volume in the storage pool. output: true - name: 'description' type: String description: | An optional description of this resource. - name: 'labels' type: KeyValueLabels description: | Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`. - name: 'network' type: String description: | VPC network name with format: `projects/{{project}}/global/networks/{{network}}` required: true immutable: true diff_suppress_func: 'tpgresource.ProjectNumberDiffSuppress' - name: 'activeDirectory' type: String description: | Specifies the Active Directory policy to be used. Format: `projects/{{project}}/locations/{{location}}/activeDirectories/{{name}}`. The policy needs to be in the same location as the storage pool. - name: 'kmsConfig' type: String description: | Specifies the CMEK policy to be used for volume encryption. Format: `projects/{{project}}/locations/{{location}}/kmsConfigs/{{name}}`. The policy needs to be in the same location as the storage pool. immutable: true - name: 'ldapEnabled' type: Boolean description: | When enabled, the volumes uses Active Directory as LDAP name service for UID/GID lookups. Required to enable extended group support for NFSv3, using security identifiers for NFSv4.1 or principal names for kerberized NFSv4.1. immutable: true - name: 'encryptionType' type: String description: | Reports if volumes in the pool are encrypted using a Google-managed encryption key or CMEK. output: true - name: 'zone' type: String description: | Specifies the active zone for regional Flex pools. `zone` and `replica_zone` values can be swapped to initiate a [zone switch](https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones). If you want to create a zonal Flex pool, specify a zone name for `location` and omit `zone`. default_from_api: true - name: 'replicaZone' type: String description: | Specifies the replica zone for regional Flex pools. `zone` and `replica_zone` values can be swapped to initiate a [zone switch](https://cloud.google.com/netapp/volumes/docs/configure-and-use/storage-pools/edit-or-delete-storage-pool#switch_active_and_replica_zones). - name: 'allowAutoTiering' type: Boolean description: | Optional. True if the storage pool supports Auto Tiering enabled volumes. Default is false. Auto-tiering can be enabled after storage pool creation but it can't be disabled once enabled. immutable: true - name: 'customPerformanceEnabled' type: Boolean description: | Optional. True if using Independent Scaling of capacity and performance (Hyperdisk). Default is false. immutable: true min_version: 'beta' - name: 'totalThroughputMibps' type: String description: | Optional. Custom Performance Total Throughput of the pool (in MiB/s). min_version: 'beta' - name: 'totalIops' type: String description: | Optional. Custom Performance Total IOPS of the pool If not provided, it will be calculated based on the totalThroughputMibps min_version: 'beta'