UNPKG

@pulumi/gcp

Version:

A Pulumi package for creating and managing Google Cloud Platform resources.

779 lines (778 loc) • 33.7 kB
import * as pulumi from "@pulumi/pulumi"; import * as inputs from "../types/input"; import * as outputs from "../types/output"; /** * Persistent disks are durable storage devices that function similarly to * the physical disks in a desktop or a server. Compute Engine manages the * hardware behind these devices to ensure data redundancy and optimize * performance for you. Persistent disks are available as either standard * hard disk drives (HDD) or solid-state drives (SSD). * * Persistent disks are located independently from your virtual machine * instances, so you can detach or move persistent disks to keep your data * even after you delete your instances. Persistent disk performance scales * automatically with size, so you can resize your existing persistent disks * or add more persistent disks to an instance to meet your performance and * storage space requirements. * * Add a persistent disk to your instance when you need reliable and * affordable storage with consistent performance characteristics. * * To get more information about RegionDisk, see: * * * [API documentation](https://cloud.google.com/compute/docs/reference/rest/v1/regionDisks) * * How-to Guides * * [Adding or Resizing Regional Persistent Disks](https://cloud.google.com/compute/docs/disks/regional-persistent-disk) * * > **Warning:** All arguments including the following potentially sensitive * values will be stored in the raw state as plain text: `disk_encryption_key.raw_key`, `disk_encryption_key.rsa_encrypted_key`. * * ## Example Usage * * ### Region Disk Basic * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const disk = new gcp.compute.Disk("disk", { * name: "my-disk", * image: "debian-cloud/debian-11", * size: 50, * type: "pd-ssd", * zone: "us-central1-a", * }); * const snapdisk = new gcp.compute.Snapshot("snapdisk", { * name: "my-snapshot", * sourceDisk: disk.name, * zone: "us-central1-a", * }); * const regiondisk = new gcp.compute.RegionDisk("regiondisk", { * name: "my-region-disk", * snapshot: snapdisk.id, * type: "pd-ssd", * region: "us-central1", * physicalBlockSizeBytes: 4096, * replicaZones: [ * "us-central1-a", * "us-central1-f", * ], * }); * ``` * ### Region Disk Async * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const primary = new gcp.compute.RegionDisk("primary", { * name: "primary-region-disk", * type: "pd-ssd", * region: "us-central1", * physicalBlockSizeBytes: 4096, * replicaZones: [ * "us-central1-a", * "us-central1-f", * ], * }); * const secondary = new gcp.compute.RegionDisk("secondary", { * name: "secondary-region-disk", * type: "pd-ssd", * region: "us-east1", * physicalBlockSizeBytes: 4096, * asyncPrimaryDisk: { * disk: primary.id, * }, * replicaZones: [ * "us-east1-b", * "us-east1-c", * ], * }); * ``` * ### Region Disk Features * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const regiondisk = new gcp.compute.RegionDisk("regiondisk", { * name: "my-region-features-disk", * type: "pd-ssd", * region: "us-central1", * physicalBlockSizeBytes: 4096, * guestOsFeatures: [ * { * type: "SECURE_BOOT", * }, * { * type: "MULTI_IP_SUBNET", * }, * { * type: "WINDOWS", * }, * ], * licenses: ["https://www.googleapis.com/compute/v1/projects/windows-cloud/global/licenses/windows-server-core"], * replicaZones: [ * "us-central1-a", * "us-central1-f", * ], * }); * ``` * ### Region Disk Hyperdisk Balanced Ha Write Many * * ```typescript * import * as pulumi from "@pulumi/pulumi"; * import * as gcp from "@pulumi/gcp"; * * const primary = new gcp.compute.RegionDisk("primary", { * name: "my-region-hyperdisk", * type: "hyperdisk-balanced-high-availability", * region: "us-central1", * replicaZones: [ * "us-central1-a", * "us-central1-f", * ], * accessMode: "READ_WRITE_MANY", * }); * ``` * * ## Import * * RegionDisk can be imported using any of these accepted formats: * * * `projects/{{project}}/regions/{{region}}/disks/{{name}}` * * * `{{project}}/{{region}}/{{name}}` * * * `{{region}}/{{name}}` * * * `{{name}}` * * When using the `pulumi import` command, RegionDisk can be imported using one of the formats above. For example: * * ```sh * $ pulumi import gcp:compute/regionDisk:RegionDisk default projects/{{project}}/regions/{{region}}/disks/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/regionDisk:RegionDisk default {{project}}/{{region}}/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/regionDisk:RegionDisk default {{region}}/{{name}} * ``` * * ```sh * $ pulumi import gcp:compute/regionDisk:RegionDisk default {{name}} * ``` */ export declare class RegionDisk extends pulumi.CustomResource { /** * Get an existing RegionDisk 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?: RegionDiskState, opts?: pulumi.CustomResourceOptions): RegionDisk; /** * Returns true if the given object is an instance of RegionDisk. 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 RegionDisk; /** * The access mode of the disk. * For example: * * READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. * * READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. * * READ_ONLY_SINGLE: The AccessMode means the disk can be attached to multiple instances in RO mode. * The AccessMode is only valid for Hyperdisk disk types. */ readonly accessMode: pulumi.Output<string>; /** * A nested object resource. * Structure is documented below. */ readonly asyncPrimaryDisk: pulumi.Output<outputs.compute.RegionDiskAsyncPrimaryDisk | undefined>; /** * If set to true, a snapshot of the disk will be created before it is destroyed. * If your disk is encrypted with customer managed encryption keys these will be reused for the snapshot creation. * The name of the snapshot by default will be `{{disk-name}}-YYYYMMDD-HHmm` */ readonly createSnapshotBeforeDestroy: pulumi.Output<boolean | undefined>; /** * This will set a custom name prefix for the snapshot that's created when the disk is deleted. */ readonly createSnapshotBeforeDestroyPrefix: pulumi.Output<string | undefined>; /** * Creation timestamp in RFC3339 text format. */ readonly creationTimestamp: pulumi.Output<string>; /** * An optional description of this resource. Provide this property when * you create the resource. */ readonly description: pulumi.Output<string | undefined>; /** * Encrypts the disk using a customer-supplied encryption key. * After you encrypt a disk with a customer-supplied key, you must * provide the same key if you use the disk later (e.g. to create a disk * snapshot or an image, or to attach the disk to a virtual machine). * Customer-supplied encryption keys do not protect access to metadata of * the disk. * If you do not provide an encryption key when creating the disk, then * the disk will be encrypted using an automatically generated key and * you do not need to provide a key to use the disk later. * Structure is documented below. */ readonly diskEncryptionKey: pulumi.Output<outputs.compute.RegionDiskDiskEncryptionKey | undefined>; /** * The unique identifier for the resource. This identifier is defined by the server. */ readonly diskId: pulumi.Output<string>; /** * 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; }>; /** * A list of features to enable on the guest operating system. * Applicable only for bootable disks. * Structure is documented below. */ readonly guestOsFeatures: pulumi.Output<outputs.compute.RegionDiskGuestOsFeature[]>; /** * Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. * * > **Warning:** `interface` is deprecated and will be removed in a future major release. This field is no longer used and can be safely removed from your configurations; disk interfaces are automatically determined on attachment. * * @deprecated `interface` is deprecated and will be removed in a future major release. This field is no longer used and can be safely removed from your configurations; disk interfaces are automatically determined on attachment. */ readonly interface: pulumi.Output<string | undefined>; /** * The fingerprint used for optimistic locking of this resource. Used * internally during updates. */ readonly labelFingerprint: pulumi.Output<string>; /** * Labels to apply to this disk. A list of key->value pairs. * * **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>; /** * Last attach timestamp in RFC3339 text format. */ readonly lastAttachTimestamp: pulumi.Output<string>; /** * Last detach timestamp in RFC3339 text format. */ readonly lastDetachTimestamp: pulumi.Output<string>; /** * Any applicable license URI. */ readonly licenses: pulumi.Output<string[]>; /** * 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?` 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. */ readonly name: pulumi.Output<string>; /** * Physical block size of the persistent disk, in bytes. If not present * in a request, a default value is used. Currently supported sizes * are 4096 and 16384, other sizes may be added in the future. * If an unsupported value is requested, the error message will list * the supported values for the caller's project. */ readonly physicalBlockSizeBytes: pulumi.Output<number>; /** * 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>; /** * Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second * that the disk can handle. Values must be between 10,000 and 120,000. * For more details, see the Extreme persistent disk [documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk). */ readonly provisionedIops: pulumi.Output<number>; /** * Indicates how much throughput to provision for the disk. This sets the number of throughput * mb per second that the disk can handle. Values must be greater than or equal to 1. */ readonly provisionedThroughput: pulumi.Output<number>; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ readonly pulumiLabels: pulumi.Output<{ [key: string]: string; }>; /** * A reference to the region where the disk resides. */ readonly region: pulumi.Output<string>; /** * URLs of the zones where the disk should be replicated to. */ readonly replicaZones: pulumi.Output<string[]>; /** * The URI of the created resource. */ readonly selfLink: pulumi.Output<string>; /** * Size of the persistent disk, specified in GB. You can specify this * field when creating a persistent disk using the sourceImage or * sourceSnapshot parameter, or specify it alone to create an empty * persistent disk. * If you specify this field along with sourceImage or sourceSnapshot, * the value of sizeGb must not be less than the size of the sourceImage * or the size of the snapshot. */ readonly size: pulumi.Output<number>; /** * The source snapshot used to create this disk. You can provide this as * a partial or full URL to the resource. For example, the following are * valid values: * * `https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot` * * `projects/project/global/snapshots/snapshot` * * `global/snapshots/snapshot` */ readonly snapshot: pulumi.Output<string | undefined>; /** * The source disk used to create this disk. You can provide this as a partial or full URL to the resource. * For example, the following are valid values: * * https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/disks/{disk} * * https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/disks/{disk} * * projects/{project}/zones/{zone}/disks/{disk} * * projects/{project}/regions/{region}/disks/{disk} * * zones/{zone}/disks/{disk} * * regions/{region}/disks/{disk} */ readonly sourceDisk: pulumi.Output<string | undefined>; /** * The ID value of the disk used to create this image. This value may * be used to determine whether the image was taken from the current * or a previous instance of a given disk name. */ readonly sourceDiskId: pulumi.Output<string>; /** * The customer-supplied encryption key of the source snapshot. Required * if the source snapshot is protected by a customer-supplied encryption * key. * Structure is documented below. */ readonly sourceSnapshotEncryptionKey: pulumi.Output<outputs.compute.RegionDiskSourceSnapshotEncryptionKey | undefined>; /** * 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. */ readonly sourceSnapshotId: pulumi.Output<string>; /** * URL of the disk type resource describing which disk type to use to * create the disk. Provide this when creating the disk. */ readonly type: pulumi.Output<string | undefined>; /** * Links to the users of the disk (attached instances) in form: * project/zones/zone/instances/instance */ readonly users: pulumi.Output<string[]>; /** * Create a RegionDisk 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: RegionDiskArgs, opts?: pulumi.CustomResourceOptions); } /** * Input properties used for looking up and filtering RegionDisk resources. */ export interface RegionDiskState { /** * The access mode of the disk. * For example: * * READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. * * READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. * * READ_ONLY_SINGLE: The AccessMode means the disk can be attached to multiple instances in RO mode. * The AccessMode is only valid for Hyperdisk disk types. */ accessMode?: pulumi.Input<string>; /** * A nested object resource. * Structure is documented below. */ asyncPrimaryDisk?: pulumi.Input<inputs.compute.RegionDiskAsyncPrimaryDisk>; /** * If set to true, a snapshot of the disk will be created before it is destroyed. * If your disk is encrypted with customer managed encryption keys these will be reused for the snapshot creation. * The name of the snapshot by default will be `{{disk-name}}-YYYYMMDD-HHmm` */ createSnapshotBeforeDestroy?: pulumi.Input<boolean>; /** * This will set a custom name prefix for the snapshot that's created when the disk is deleted. */ createSnapshotBeforeDestroyPrefix?: pulumi.Input<string>; /** * Creation timestamp in RFC3339 text format. */ creationTimestamp?: pulumi.Input<string>; /** * An optional description of this resource. Provide this property when * you create the resource. */ description?: pulumi.Input<string>; /** * Encrypts the disk using a customer-supplied encryption key. * After you encrypt a disk with a customer-supplied key, you must * provide the same key if you use the disk later (e.g. to create a disk * snapshot or an image, or to attach the disk to a virtual machine). * Customer-supplied encryption keys do not protect access to metadata of * the disk. * If you do not provide an encryption key when creating the disk, then * the disk will be encrypted using an automatically generated key and * you do not need to provide a key to use the disk later. * Structure is documented below. */ diskEncryptionKey?: pulumi.Input<inputs.compute.RegionDiskDiskEncryptionKey>; /** * The unique identifier for the resource. This identifier is defined by the server. */ diskId?: 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>; }>; /** * A list of features to enable on the guest operating system. * Applicable only for bootable disks. * Structure is documented below. */ guestOsFeatures?: pulumi.Input<pulumi.Input<inputs.compute.RegionDiskGuestOsFeature>[]>; /** * Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. * * > **Warning:** `interface` is deprecated and will be removed in a future major release. This field is no longer used and can be safely removed from your configurations; disk interfaces are automatically determined on attachment. * * @deprecated `interface` is deprecated and will be removed in a future major release. This field is no longer used and can be safely removed from your configurations; disk interfaces are automatically determined on attachment. */ interface?: pulumi.Input<string>; /** * The fingerprint used for optimistic locking of this resource. Used * internally during updates. */ labelFingerprint?: pulumi.Input<string>; /** * Labels to apply to this disk. A list of key->value pairs. * * **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>; }>; /** * Last attach timestamp in RFC3339 text format. */ lastAttachTimestamp?: pulumi.Input<string>; /** * Last detach timestamp in RFC3339 text format. */ lastDetachTimestamp?: pulumi.Input<string>; /** * Any applicable license URI. */ licenses?: pulumi.Input<pulumi.Input<string>[]>; /** * 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?` 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. */ name?: pulumi.Input<string>; /** * Physical block size of the persistent disk, in bytes. If not present * in a request, a default value is used. Currently supported sizes * are 4096 and 16384, other sizes may be added in the future. * If an unsupported value is requested, the error message will list * the supported values for the caller's project. */ physicalBlockSizeBytes?: pulumi.Input<number>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input<string>; /** * Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second * that the disk can handle. Values must be between 10,000 and 120,000. * For more details, see the Extreme persistent disk [documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk). */ provisionedIops?: pulumi.Input<number>; /** * Indicates how much throughput to provision for the disk. This sets the number of throughput * mb per second that the disk can handle. Values must be greater than or equal to 1. */ provisionedThroughput?: pulumi.Input<number>; /** * The combination of labels configured directly on the resource * and default labels configured on the provider. */ pulumiLabels?: pulumi.Input<{ [key: string]: pulumi.Input<string>; }>; /** * A reference to the region where the disk resides. */ region?: pulumi.Input<string>; /** * URLs of the zones where the disk should be replicated to. */ replicaZones?: pulumi.Input<pulumi.Input<string>[]>; /** * The URI of the created resource. */ selfLink?: pulumi.Input<string>; /** * Size of the persistent disk, specified in GB. You can specify this * field when creating a persistent disk using the sourceImage or * sourceSnapshot parameter, or specify it alone to create an empty * persistent disk. * If you specify this field along with sourceImage or sourceSnapshot, * the value of sizeGb must not be less than the size of the sourceImage * or the size of the snapshot. */ size?: pulumi.Input<number>; /** * The source snapshot used to create this disk. You can provide this as * a partial or full URL to the resource. For example, the following are * valid values: * * `https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot` * * `projects/project/global/snapshots/snapshot` * * `global/snapshots/snapshot` */ snapshot?: pulumi.Input<string>; /** * The source disk used to create this disk. You can provide this as a partial or full URL to the resource. * For example, the following are valid values: * * https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/disks/{disk} * * https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/disks/{disk} * * projects/{project}/zones/{zone}/disks/{disk} * * projects/{project}/regions/{region}/disks/{disk} * * zones/{zone}/disks/{disk} * * regions/{region}/disks/{disk} */ sourceDisk?: pulumi.Input<string>; /** * The ID value of the disk used to create this image. This value may * be used to determine whether the image was taken from the current * or a previous instance of a given disk name. */ sourceDiskId?: pulumi.Input<string>; /** * The customer-supplied encryption key of the source snapshot. Required * if the source snapshot is protected by a customer-supplied encryption * key. * Structure is documented below. */ sourceSnapshotEncryptionKey?: pulumi.Input<inputs.compute.RegionDiskSourceSnapshotEncryptionKey>; /** * 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. */ sourceSnapshotId?: pulumi.Input<string>; /** * URL of the disk type resource describing which disk type to use to * create the disk. Provide this when creating the disk. */ type?: pulumi.Input<string>; /** * Links to the users of the disk (attached instances) in form: * project/zones/zone/instances/instance */ users?: pulumi.Input<pulumi.Input<string>[]>; } /** * The set of arguments for constructing a RegionDisk resource. */ export interface RegionDiskArgs { /** * The access mode of the disk. * For example: * * READ_WRITE_SINGLE: The default AccessMode, means the disk can be attached to single instance in RW mode. * * READ_WRITE_MANY: The AccessMode means the disk can be attached to multiple instances in RW mode. * * READ_ONLY_SINGLE: The AccessMode means the disk can be attached to multiple instances in RO mode. * The AccessMode is only valid for Hyperdisk disk types. */ accessMode?: pulumi.Input<string>; /** * A nested object resource. * Structure is documented below. */ asyncPrimaryDisk?: pulumi.Input<inputs.compute.RegionDiskAsyncPrimaryDisk>; /** * If set to true, a snapshot of the disk will be created before it is destroyed. * If your disk is encrypted with customer managed encryption keys these will be reused for the snapshot creation. * The name of the snapshot by default will be `{{disk-name}}-YYYYMMDD-HHmm` */ createSnapshotBeforeDestroy?: pulumi.Input<boolean>; /** * This will set a custom name prefix for the snapshot that's created when the disk is deleted. */ createSnapshotBeforeDestroyPrefix?: pulumi.Input<string>; /** * An optional description of this resource. Provide this property when * you create the resource. */ description?: pulumi.Input<string>; /** * Encrypts the disk using a customer-supplied encryption key. * After you encrypt a disk with a customer-supplied key, you must * provide the same key if you use the disk later (e.g. to create a disk * snapshot or an image, or to attach the disk to a virtual machine). * Customer-supplied encryption keys do not protect access to metadata of * the disk. * If you do not provide an encryption key when creating the disk, then * the disk will be encrypted using an automatically generated key and * you do not need to provide a key to use the disk later. * Structure is documented below. */ diskEncryptionKey?: pulumi.Input<inputs.compute.RegionDiskDiskEncryptionKey>; /** * A list of features to enable on the guest operating system. * Applicable only for bootable disks. * Structure is documented below. */ guestOsFeatures?: pulumi.Input<pulumi.Input<inputs.compute.RegionDiskGuestOsFeature>[]>; /** * Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. * * > **Warning:** `interface` is deprecated and will be removed in a future major release. This field is no longer used and can be safely removed from your configurations; disk interfaces are automatically determined on attachment. * * @deprecated `interface` is deprecated and will be removed in a future major release. This field is no longer used and can be safely removed from your configurations; disk interfaces are automatically determined on attachment. */ interface?: pulumi.Input<string>; /** * Labels to apply to this disk. A list of key->value pairs. * * **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>; }>; /** * Any applicable license URI. */ licenses?: pulumi.Input<pulumi.Input<string>[]>; /** * 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?` 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. */ name?: pulumi.Input<string>; /** * Physical block size of the persistent disk, in bytes. If not present * in a request, a default value is used. Currently supported sizes * are 4096 and 16384, other sizes may be added in the future. * If an unsupported value is requested, the error message will list * the supported values for the caller's project. */ physicalBlockSizeBytes?: pulumi.Input<number>; /** * The ID of the project in which the resource belongs. * If it is not provided, the provider project is used. */ project?: pulumi.Input<string>; /** * Indicates how many IOPS to provision for the disk. This sets the number of I/O operations per second * that the disk can handle. Values must be between 10,000 and 120,000. * For more details, see the Extreme persistent disk [documentation](https://cloud.google.com/compute/docs/disks/extreme-persistent-disk). */ provisionedIops?: pulumi.Input<number>; /** * Indicates how much throughput to provision for the disk. This sets the number of throughput * mb per second that the disk can handle. Values must be greater than or equal to 1. */ provisionedThroughput?: pulumi.Input<number>; /** * A reference to the region where the disk resides. */ region?: pulumi.Input<string>; /** * URLs of the zones where the disk should be replicated to. */ replicaZones: pulumi.Input<pulumi.Input<string>[]>; /** * Size of the persistent disk, specified in GB. You can specify this * field when creating a persistent disk using the sourceImage or * sourceSnapshot parameter, or specify it alone to create an empty * persistent disk. * If you specify this field along with sourceImage or sourceSnapshot, * the value of sizeGb must not be less than the size of the sourceImage * or the size of the snapshot. */ size?: pulumi.Input<number>; /** * The source snapshot used to create this disk. You can provide this as * a partial or full URL to the resource. For example, the following are * valid values: * * `https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot` * * `projects/project/global/snapshots/snapshot` * * `global/snapshots/snapshot` */ snapshot?: pulumi.Input<string>; /** * The source disk used to create this disk. You can provide this as a partial or full URL to the resource. * For example, the following are valid values: * * https://www.googleapis.com/compute/v1/projects/{project}/zones/{zone}/disks/{disk} * * https://www.googleapis.com/compute/v1/projects/{project}/regions/{region}/disks/{disk} * * projects/{project}/zones/{zone}/disks/{disk} * * projects/{project}/regions/{region}/disks/{disk} * * zones/{zone}/disks/{disk} * * regions/{region}/disks/{disk} */ sourceDisk?: pulumi.Input<string>; /** * The customer-supplied encryption key of the source snapshot. Required * if the source snapshot is protected by a customer-supplied encryption * key. * Structure is documented below. */ sourceSnapshotEncryptionKey?: pulumi.Input<inputs.compute.RegionDiskSourceSnapshotEncryptionKey>; /** * URL of the disk type resource describing which disk type to use to * create the disk. Provide this when creating the disk. */ type?: pulumi.Input<string>; }