@pulumi/gcp
Version:
A Pulumi package for creating and managing Google Cloud Platform resources.
459 lines (458 loc) • 20.3 kB
TypeScript
import * as pulumi from "@pulumi/pulumi";
/**
* ## Example Usage
*
* ### Storage Pool Create Doc
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as gcp from "@pulumi/gcp";
*
* // Create a network or use datasource to reference existing network
* const peeringNetwork = new gcp.compute.Network("peering_network", {name: "test-network"});
* // Reserve a CIDR for NetApp Volumes to use
* // When using shared-VPCs, this resource needs to be created in host project
* const privateIpAlloc = new gcp.compute.GlobalAddress("private_ip_alloc", {
* name: "test-address",
* purpose: "VPC_PEERING",
* addressType: "INTERNAL",
* prefixLength: 16,
* network: peeringNetwork.id,
* });
* // Create a Private Service Access connection
* // When using shared-VPCs, this resource needs to be created in host project
* const _default = new gcp.servicenetworking.Connection("default", {
* network: peeringNetwork.id,
* service: "netapp.servicenetworking.goog",
* reservedPeeringRanges: [privateIpAlloc.name],
* });
* // Modify the PSA Connection to allow import/export of custom routes
* // When using shared-VPCs, this resource needs to be created in host project
* const routeUpdates = new gcp.compute.NetworkPeeringRoutesConfig("route_updates", {
* peering: _default.peering,
* network: peeringNetwork.name,
* importCustomRoutes: true,
* exportCustomRoutes: true,
* });
* // Create a storage pool
* // Create this resource in the project which is expected to own the volumes
* const testPool = new gcp.netapp.StoragePool("test_pool", {
* name: "test-pool",
* location: "us-central1",
* serviceLevel: "PREMIUM",
* capacityGib: "2048",
* network: peeringNetwork.id,
* });
* ```
*
* ## Import
*
* StoragePool can be imported using any of these accepted formats:
*
* * `projects/{{project}}/locations/{{location}}/storagePools/{{name}}`
*
* * `{{project}}/{{location}}/{{name}}`
*
* * `{{location}}/{{name}}`
*
* When using the `pulumi import` command, StoragePool can be imported using one of the formats above. For example:
*
* ```sh
* $ pulumi import gcp:netapp/storagePool:StoragePool default projects/{{project}}/locations/{{location}}/storagePools/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:netapp/storagePool:StoragePool default {{project}}/{{location}}/{{name}}
* ```
*
* ```sh
* $ pulumi import gcp:netapp/storagePool:StoragePool default {{location}}/{{name}}
* ```
*/
export declare class StoragePool extends pulumi.CustomResource {
/**
* Get an existing StoragePool resource's state with the given name, ID, and optional extra
* properties used to qualify the lookup.
*
* @param name The _unique_ name of the resulting resource.
* @param id The _unique_ provider ID of the resource to lookup.
* @param state Any extra arguments used during the lookup.
* @param opts Optional settings to control the behavior of the CustomResource.
*/
static get(name: string, id: pulumi.Input<pulumi.ID>, state?: StoragePoolState, opts?: pulumi.CustomResourceOptions): StoragePool;
/**
* Returns true if the given object is an instance of StoragePool. This is designed to work even
* when multiple copies of the Pulumi SDK have been loaded into the same process.
*/
static isInstance(obj: any): obj is StoragePool;
/**
* 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.
*/
readonly activeDirectory: pulumi.Output<string | undefined>;
/**
* 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.
*/
readonly allowAutoTiering: pulumi.Output<boolean | undefined>;
/**
* Available throughput of the storage pool (in MiB/s).
*/
readonly availableThroughputMibps: pulumi.Output<number>;
/**
* Capacity of the storage pool (in GiB).
*/
readonly capacityGib: pulumi.Output<string>;
/**
* Optional. True if using Independent Scaling of capacity and performance (Hyperdisk). Default is false.
*/
readonly customPerformanceEnabled: pulumi.Output<boolean | undefined>;
/**
* An optional description of this resource.
*/
readonly description: pulumi.Output<string | undefined>;
/**
* All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
*/
readonly effectiveLabels: pulumi.Output<{
[key: string]: string;
}>;
/**
* Flag indicating that the hot-tier threshold will be auto-increased by 10% of the hot-tier when it hits 100%. Default is true.
* The increment will kick in only if the new size after increment is still less than or equal to storage pool size.
*/
readonly enableHotTierAutoResize: pulumi.Output<boolean | undefined>;
/**
* Reports if volumes in the pool are encrypted using a Google-managed encryption key or CMEK.
*/
readonly encryptionType: pulumi.Output<string>;
/**
* Total hot tier capacity for the Storage Pool. It is applicable only to Flex service level.
* It should be less than the minimum storage pool size and cannot be more than the current storage pool size. It cannot be decreased once set.
*/
readonly hotTierSizeGib: pulumi.Output<string | undefined>;
/**
* 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.
*/
readonly kmsConfig: pulumi.Output<string | undefined>;
/**
* Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`.
*
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field `effectiveLabels` for all of the labels present on the resource.
*/
readonly labels: pulumi.Output<{
[key: string]: string;
} | undefined>;
/**
* 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.
*/
readonly ldapEnabled: pulumi.Output<boolean | undefined>;
/**
* Name of the location. For zonal Flex pools specify a zone name, in all other cases a region name.
*/
readonly location: pulumi.Output<string>;
/**
* The resource name of the storage pool. Needs to be unique per location/region.
*/
readonly name: pulumi.Output<string>;
/**
* VPC network name with format: `projects/{{project}}/global/networks/{{network}}`
*/
readonly network: pulumi.Output<string>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
readonly project: pulumi.Output<string>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
readonly pulumiLabels: pulumi.Output<{
[key: string]: string;
}>;
/**
* QoS (Quality of Service) type of the storage pool.
* Possible values are: AUTO, MANUAL.
* Possible values are: `QOS_TYPE_UNSPECIFIED`, `AUTO`, `MANUAL`.
*/
readonly qosType: pulumi.Output<string | undefined>;
/**
* Specifies the replica zone for regional Flex pools. `zone` and `replicaZone` 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).
*/
readonly replicaZone: pulumi.Output<string | undefined>;
/**
* Service level of the storage pool.
* Possible values are: `PREMIUM`, `EXTREME`, `STANDARD`, `FLEX`.
*/
readonly serviceLevel: pulumi.Output<string>;
/**
* Optional. Custom Performance Total IOPS of the pool If not provided, it will be calculated based on the totalThroughputMibps
*/
readonly totalIops: pulumi.Output<string>;
/**
* Optional. Custom Performance Total Throughput of the pool (in MiB/s).
*/
readonly totalThroughputMibps: pulumi.Output<string>;
/**
* Size allocated to volumes in the storage pool (in GiB).
*/
readonly volumeCapacityGib: pulumi.Output<string>;
/**
* Number of volume in the storage pool.
*/
readonly volumeCount: pulumi.Output<number>;
/**
* Specifies the active zone for regional Flex pools. `zone` and `replicaZone` 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`.
*/
readonly zone: pulumi.Output<string>;
/**
* Create a StoragePool resource with the given unique name, arguments, and options.
*
* @param name The _unique_ name of the resource.
* @param args The arguments to use to populate this resource's properties.
* @param opts A bag of options that control this resource's behavior.
*/
constructor(name: string, args: StoragePoolArgs, opts?: pulumi.CustomResourceOptions);
}
/**
* Input properties used for looking up and filtering StoragePool resources.
*/
export interface StoragePoolState {
/**
* 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.
*/
activeDirectory?: pulumi.Input<string>;
/**
* 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.
*/
allowAutoTiering?: pulumi.Input<boolean>;
/**
* Available throughput of the storage pool (in MiB/s).
*/
availableThroughputMibps?: pulumi.Input<number>;
/**
* Capacity of the storage pool (in GiB).
*/
capacityGib?: pulumi.Input<string>;
/**
* Optional. True if using Independent Scaling of capacity and performance (Hyperdisk). Default is false.
*/
customPerformanceEnabled?: pulumi.Input<boolean>;
/**
* An optional description of this resource.
*/
description?: pulumi.Input<string>;
/**
* All of labels (key/value pairs) present on the resource in GCP, including the labels configured through Pulumi, other clients and services.
*/
effectiveLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* Flag indicating that the hot-tier threshold will be auto-increased by 10% of the hot-tier when it hits 100%. Default is true.
* The increment will kick in only if the new size after increment is still less than or equal to storage pool size.
*/
enableHotTierAutoResize?: pulumi.Input<boolean>;
/**
* Reports if volumes in the pool are encrypted using a Google-managed encryption key or CMEK.
*/
encryptionType?: pulumi.Input<string>;
/**
* Total hot tier capacity for the Storage Pool. It is applicable only to Flex service level.
* It should be less than the minimum storage pool size and cannot be more than the current storage pool size. It cannot be decreased once set.
*/
hotTierSizeGib?: pulumi.Input<string>;
/**
* 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.
*/
kmsConfig?: pulumi.Input<string>;
/**
* Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`.
*
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field `effectiveLabels` for all of the labels present on the resource.
*/
labels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* 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.
*/
ldapEnabled?: pulumi.Input<boolean>;
/**
* Name of the location. For zonal Flex pools specify a zone name, in all other cases a region name.
*/
location?: pulumi.Input<string>;
/**
* The resource name of the storage pool. Needs to be unique per location/region.
*/
name?: pulumi.Input<string>;
/**
* VPC network name with format: `projects/{{project}}/global/networks/{{network}}`
*/
network?: pulumi.Input<string>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* The combination of labels configured directly on the resource
* and default labels configured on the provider.
*/
pulumiLabels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* QoS (Quality of Service) type of the storage pool.
* Possible values are: AUTO, MANUAL.
* Possible values are: `QOS_TYPE_UNSPECIFIED`, `AUTO`, `MANUAL`.
*/
qosType?: pulumi.Input<string>;
/**
* Specifies the replica zone for regional Flex pools. `zone` and `replicaZone` 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).
*/
replicaZone?: pulumi.Input<string>;
/**
* Service level of the storage pool.
* Possible values are: `PREMIUM`, `EXTREME`, `STANDARD`, `FLEX`.
*/
serviceLevel?: pulumi.Input<string>;
/**
* Optional. Custom Performance Total IOPS of the pool If not provided, it will be calculated based on the totalThroughputMibps
*/
totalIops?: pulumi.Input<string>;
/**
* Optional. Custom Performance Total Throughput of the pool (in MiB/s).
*/
totalThroughputMibps?: pulumi.Input<string>;
/**
* Size allocated to volumes in the storage pool (in GiB).
*/
volumeCapacityGib?: pulumi.Input<string>;
/**
* Number of volume in the storage pool.
*/
volumeCount?: pulumi.Input<number>;
/**
* Specifies the active zone for regional Flex pools. `zone` and `replicaZone` 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`.
*/
zone?: pulumi.Input<string>;
}
/**
* The set of arguments for constructing a StoragePool resource.
*/
export interface StoragePoolArgs {
/**
* 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.
*/
activeDirectory?: pulumi.Input<string>;
/**
* 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.
*/
allowAutoTiering?: pulumi.Input<boolean>;
/**
* Capacity of the storage pool (in GiB).
*/
capacityGib: pulumi.Input<string>;
/**
* Optional. True if using Independent Scaling of capacity and performance (Hyperdisk). Default is false.
*/
customPerformanceEnabled?: pulumi.Input<boolean>;
/**
* An optional description of this resource.
*/
description?: pulumi.Input<string>;
/**
* Flag indicating that the hot-tier threshold will be auto-increased by 10% of the hot-tier when it hits 100%. Default is true.
* The increment will kick in only if the new size after increment is still less than or equal to storage pool size.
*/
enableHotTierAutoResize?: pulumi.Input<boolean>;
/**
* Total hot tier capacity for the Storage Pool. It is applicable only to Flex service level.
* It should be less than the minimum storage pool size and cannot be more than the current storage pool size. It cannot be decreased once set.
*/
hotTierSizeGib?: pulumi.Input<string>;
/**
* 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.
*/
kmsConfig?: pulumi.Input<string>;
/**
* Labels as key value pairs. Example: `{ "owner": "Bob", "department": "finance", "purpose": "testing" }`.
*
* **Note**: This field is non-authoritative, and will only manage the labels present in your configuration.
* Please refer to the field `effectiveLabels` for all of the labels present on the resource.
*/
labels?: pulumi.Input<{
[key: string]: pulumi.Input<string>;
}>;
/**
* 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.
*/
ldapEnabled?: pulumi.Input<boolean>;
/**
* Name of the location. For zonal Flex pools specify a zone name, in all other cases a region name.
*/
location: pulumi.Input<string>;
/**
* The resource name of the storage pool. Needs to be unique per location/region.
*/
name?: pulumi.Input<string>;
/**
* VPC network name with format: `projects/{{project}}/global/networks/{{network}}`
*/
network: pulumi.Input<string>;
/**
* The ID of the project in which the resource belongs.
* If it is not provided, the provider project is used.
*/
project?: pulumi.Input<string>;
/**
* QoS (Quality of Service) type of the storage pool.
* Possible values are: AUTO, MANUAL.
* Possible values are: `QOS_TYPE_UNSPECIFIED`, `AUTO`, `MANUAL`.
*/
qosType?: pulumi.Input<string>;
/**
* Specifies the replica zone for regional Flex pools. `zone` and `replicaZone` 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).
*/
replicaZone?: pulumi.Input<string>;
/**
* Service level of the storage pool.
* Possible values are: `PREMIUM`, `EXTREME`, `STANDARD`, `FLEX`.
*/
serviceLevel: pulumi.Input<string>;
/**
* Optional. Custom Performance Total IOPS of the pool If not provided, it will be calculated based on the totalThroughputMibps
*/
totalIops?: pulumi.Input<string>;
/**
* Optional. Custom Performance Total Throughput of the pool (in MiB/s).
*/
totalThroughputMibps?: pulumi.Input<string>;
/**
* Specifies the active zone for regional Flex pools. `zone` and `replicaZone` 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`.
*/
zone?: pulumi.Input<string>;
}