import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Volume resource in Oracle Cloud Infrastructure Core service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/iaas/latest/Volume
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates a new volume in the specified compartment. Volumes can be created in sizes ranging from
 * 50 GB (51200 MB) to 32 TB (33554432 MB), in 1 GB (1024 MB) increments. By default, volumes are 1 TB (1048576 MB).
 * For general information about block volumes, see
 * [Overview of Block Volume Service](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/overview.htm).
 *
 * A volume and instance can be in separate compartments but must be in the same availability domain.
 * For information about access control and compartments, see
 * [Overview of the IAM Service](https://docs.cloud.oracle.com/iaas/Content/Identity/Concepts/overview.htm). For information about
 * availability domains, see [Regions and Availability Domains](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/regions.htm).
 * To get a list of availability domains, use the `ListAvailabilityDomains` operation
 * in the Identity and Access Management Service API.
 *
 * You may optionally specify a *display name* for the volume, which is simply a friendly name or
 * description. It does not have to be unique, and you can change it. Avoid entering confidential information.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testVolume = new oci.core.Volume("test_volume", {
 *     compartmentId: compartmentId,
 *     autotunePolicies: [{
 *         autotuneType: volumeAutotunePoliciesAutotuneType,
 *         maxVpusPerGb: volumeAutotunePoliciesMaxVpusPerGb,
 *     }],
 *     availabilityDomain: volumeAvailabilityDomain,
 *     backupPolicyId: testVolumeBackupPolicies.volumeBackupPolicies[0].id,
 *     blockVolumeReplicas: [{
 *         availabilityDomain: volumeBlockVolumeReplicasAvailabilityDomain,
 *         displayName: volumeBlockVolumeReplicasDisplayName,
 *         xrrKmsKeyId: testKey.id,
 *     }],
 *     clusterPlacementGroupId: testGroup.id,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: volumeDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     isAutoTuneEnabled: volumeIsAutoTuneEnabled === "true",
 *     isReservationsEnabled: volumeIsReservationsEnabled === "true",
 *     kmsKeyId: testKey.id,
 *     sizeInGbs: volumeSizeInGbs,
 *     sizeInMbs: volumeSizeInMbs,
 *     sourceDetails: {
 *         type: volumeSourceDetailsType,
 *         changeBlockSizeInBytes: volumeSourceDetailsChangeBlockSizeInBytes,
 *         firstBackupId: testBackup.id,
 *         id: volumeSourceDetailsId,
 *         secondBackupId: testBackup.id,
 *     },
 *     vpusPerGb: volumeVpusPerGb,
 *     xrcKmsKeyId: testKey.id,
 *     blockVolumeReplicasDeletion: true,
 * });
 * ```
 *
 * ## Import
 *
 * Volumes can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Core/volume:Volume test_volume "id"
 * ```
 */
export declare class Volume extends pulumi.CustomResource {
    /**
     * Get an existing Volume 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?: VolumeState, opts?: pulumi.CustomResourceOptions): Volume;
    /**
     * Returns true if the given object is an instance of Volume.  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 Volume;
    /**
     * The number of Volume Performance Units per GB that this volume is effectively tuned to.
     */
    readonly autoTunedVpusPerGb: pulumi.Output<string>;
    /**
     * (Updatable) The list of autotune policies to be enabled for this volume.
     */
    readonly autotunePolicies: pulumi.Output<outputs.Core.VolumeAutotunePolicy[]>;
    /**
     * The availability domain of the volume. Omissible for cloning a volume. The new volume will be created in the availability domain of the source volume.  Example: `Uocm:PHX-AD-1`
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * If provided, specifies the ID of the volume backup policy to assign to the newly created volume. If omitted, no policy will be assigned. This field is deprecated. Use the `oci.Core.getVolumeBackupPolicyAssignments` instead to assign a backup policy to a volume.
     *
     * @deprecated The 'backup_policy_id' field has been deprecated. Please use the 'oci_core_volume_backup_policy_assignment' resource instead.
     */
    readonly backupPolicyId: pulumi.Output<string>;
    /**
     * (Updatable) The list of block volume replicas to be enabled for this volume in the specified destination availability domains.
     */
    readonly blockVolumeReplicas: pulumi.Output<outputs.Core.VolumeBlockVolumeReplica[]>;
    readonly blockVolumeReplicasDeletion: pulumi.Output<boolean | undefined>;
    /**
     * The clusterPlacementGroup Id of the volume for volume placement.
     */
    readonly clusterPlacementGroupId: pulumi.Output<string>;
    /**
     * (Updatable) The OCID of the compartment that contains the volume.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) Specifies whether the auto-tune performance is enabled for this volume. This field is deprecated. Use the `DetachedVolumeAutotunePolicy` instead to enable the volume for detached autotune.
     */
    readonly isAutoTuneEnabled: pulumi.Output<boolean>;
    /**
     * Specifies whether the cloned volume's data has finished copying from the source volume or backup.
     */
    readonly isHydrated: pulumi.Output<boolean>;
    /**
     * (Updatable) Reservations-enabled is a boolean field that allows to enable PR (Persistent Reservation) on a volume.
     */
    readonly isReservationsEnabled: pulumi.Output<boolean>;
    /**
     * (Updatable) The OCID of the Vault service key to assign as the master encryption key for the volume.
     */
    readonly kmsKeyId: pulumi.Output<string>;
    /**
     * (Updatable) The size of the volume in GBs.
     */
    readonly sizeInGbs: pulumi.Output<string>;
    /**
     * The size of the volume in MBs. The value must be a multiple of 1024. This field is deprecated. Use sizeInGBs instead.
     *
     * @deprecated The 'size_in_mbs' field has been deprecated. Please use 'size_in_gbs' instead.
     */
    readonly sizeInMbs: pulumi.Output<string>;
    /**
     * Specifies the volume source details for a new Block volume. The volume source is either another Block volume in the same Availability Domain or a Block volume backup. This is an optional field. If not specified or set to null, the new Block volume will be empty. When specified, the new Block volume will contain data from the source volume or backup.
     */
    readonly sourceDetails: pulumi.Output<outputs.Core.VolumeSourceDetails>;
    /**
     * The current state of a volume.
     */
    readonly state: pulumi.Output<string>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The date and time the volume was created. Format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The OCID of the volume backup from which the data should be restored on the newly created volume. This field is deprecated. Use the sourceDetails field instead to specify the backup for the volume.
     */
    readonly volumeBackupId: pulumi.Output<string>;
    /**
     * The OCID of the source volume group.
     */
    readonly volumeGroupId: pulumi.Output<string>;
    /**
     * (Updatable) The number of volume performance units (VPUs) that will be applied to this volume per GB, representing the Block Volume service's elastic performance options. See [Block Volume Performance Levels](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeperformance.htm#perf_levels) for more information.
     *
     * Allowed values:
     */
    readonly vpusPerGb: pulumi.Output<string>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the block volume cross region backups, which will be used in the destination region to encrypt the backup's encryption keys. For more information about the Vault service and encryption keys, see [Overview of Vault service](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Concepts/keyoverview.htm) and [Using Keys](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Tasks/usingkeys.htm).
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    readonly xrcKmsKeyId: pulumi.Output<string>;
    /**
     * Create a Volume 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: VolumeArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering Volume resources.
 */
export interface VolumeState {
    /**
     * The number of Volume Performance Units per GB that this volume is effectively tuned to.
     */
    autoTunedVpusPerGb?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of autotune policies to be enabled for this volume.
     */
    autotunePolicies?: pulumi.Input<pulumi.Input<inputs.Core.VolumeAutotunePolicy>[] | undefined>;
    /**
     * The availability domain of the volume. Omissible for cloning a volume. The new volume will be created in the availability domain of the source volume.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * If provided, specifies the ID of the volume backup policy to assign to the newly created volume. If omitted, no policy will be assigned. This field is deprecated. Use the `oci.Core.getVolumeBackupPolicyAssignments` instead to assign a backup policy to a volume.
     *
     * @deprecated The 'backup_policy_id' field has been deprecated. Please use the 'oci_core_volume_backup_policy_assignment' resource instead.
     */
    backupPolicyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of block volume replicas to be enabled for this volume in the specified destination availability domains.
     */
    blockVolumeReplicas?: pulumi.Input<pulumi.Input<inputs.Core.VolumeBlockVolumeReplica>[] | undefined>;
    blockVolumeReplicasDeletion?: pulumi.Input<boolean | undefined>;
    /**
     * The clusterPlacementGroup Id of the volume for volume placement.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the compartment that contains the volume.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Specifies whether the auto-tune performance is enabled for this volume. This field is deprecated. Use the `DetachedVolumeAutotunePolicy` instead to enable the volume for detached autotune.
     */
    isAutoTuneEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies whether the cloned volume's data has finished copying from the source volume or backup.
     */
    isHydrated?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Reservations-enabled is a boolean field that allows to enable PR (Persistent Reservation) on a volume.
     */
    isReservationsEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The OCID of the Vault service key to assign as the master encryption key for the volume.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The size of the volume in GBs.
     */
    sizeInGbs?: pulumi.Input<string | undefined>;
    /**
     * The size of the volume in MBs. The value must be a multiple of 1024. This field is deprecated. Use sizeInGBs instead.
     *
     * @deprecated The 'size_in_mbs' field has been deprecated. Please use 'size_in_gbs' instead.
     */
    sizeInMbs?: pulumi.Input<string | undefined>;
    /**
     * Specifies the volume source details for a new Block volume. The volume source is either another Block volume in the same Availability Domain or a Block volume backup. This is an optional field. If not specified or set to null, the new Block volume will be empty. When specified, the new Block volume will contain data from the source volume or backup.
     */
    sourceDetails?: pulumi.Input<inputs.Core.VolumeSourceDetails | undefined>;
    /**
     * The current state of a volume.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace. Example: `{"foo-namespace.bar-key": "value"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The date and time the volume was created. Format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the volume backup from which the data should be restored on the newly created volume. This field is deprecated. Use the sourceDetails field instead to specify the backup for the volume.
     */
    volumeBackupId?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the source volume group.
     */
    volumeGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The number of volume performance units (VPUs) that will be applied to this volume per GB, representing the Block Volume service's elastic performance options. See [Block Volume Performance Levels](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeperformance.htm#perf_levels) for more information.
     *
     * Allowed values:
     */
    vpusPerGb?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the block volume cross region backups, which will be used in the destination region to encrypt the backup's encryption keys. For more information about the Vault service and encryption keys, see [Overview of Vault service](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Concepts/keyoverview.htm) and [Using Keys](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Tasks/usingkeys.htm).
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    xrcKmsKeyId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a Volume resource.
 */
export interface VolumeArgs {
    /**
     * (Updatable) The list of autotune policies to be enabled for this volume.
     */
    autotunePolicies?: pulumi.Input<pulumi.Input<inputs.Core.VolumeAutotunePolicy>[] | undefined>;
    /**
     * The availability domain of the volume. Omissible for cloning a volume. The new volume will be created in the availability domain of the source volume.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain: pulumi.Input<string>;
    /**
     * If provided, specifies the ID of the volume backup policy to assign to the newly created volume. If omitted, no policy will be assigned. This field is deprecated. Use the `oci.Core.getVolumeBackupPolicyAssignments` instead to assign a backup policy to a volume.
     *
     * @deprecated The 'backup_policy_id' field has been deprecated. Please use the 'oci_core_volume_backup_policy_assignment' resource instead.
     */
    backupPolicyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of block volume replicas to be enabled for this volume in the specified destination availability domains.
     */
    blockVolumeReplicas?: pulumi.Input<pulumi.Input<inputs.Core.VolumeBlockVolumeReplica>[] | undefined>;
    blockVolumeReplicasDeletion?: pulumi.Input<boolean | undefined>;
    /**
     * The clusterPlacementGroup Id of the volume for volume placement.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the compartment that contains the volume.
     */
    compartmentId: pulumi.Input<string>;
    /**
     * (Updatable) Defined tags for this resource. Each key is predefined and scoped to a namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Operations.CostCenter": "42"}`
     */
    definedTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Free-form tags for this resource. Each tag is a simple key-value pair with no predefined name, type, or namespace. For more information, see [Resource Tags](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/resourcetags.htm).  Example: `{"Department": "Finance"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) Specifies whether the auto-tune performance is enabled for this volume. This field is deprecated. Use the `DetachedVolumeAutotunePolicy` instead to enable the volume for detached autotune.
     */
    isAutoTuneEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Reservations-enabled is a boolean field that allows to enable PR (Persistent Reservation) on a volume.
     */
    isReservationsEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The OCID of the Vault service key to assign as the master encryption key for the volume.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The size of the volume in GBs.
     */
    sizeInGbs?: pulumi.Input<string | undefined>;
    /**
     * The size of the volume in MBs. The value must be a multiple of 1024. This field is deprecated. Use sizeInGBs instead.
     *
     * @deprecated The 'size_in_mbs' field has been deprecated. Please use 'size_in_gbs' instead.
     */
    sizeInMbs?: pulumi.Input<string | undefined>;
    /**
     * Specifies the volume source details for a new Block volume. The volume source is either another Block volume in the same Availability Domain or a Block volume backup. This is an optional field. If not specified or set to null, the new Block volume will be empty. When specified, the new Block volume will contain data from the source volume or backup.
     */
    sourceDetails?: pulumi.Input<inputs.Core.VolumeSourceDetails | undefined>;
    /**
     * The OCID of the volume backup from which the data should be restored on the newly created volume. This field is deprecated. Use the sourceDetails field instead to specify the backup for the volume.
     */
    volumeBackupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The number of volume performance units (VPUs) that will be applied to this volume per GB, representing the Block Volume service's elastic performance options. See [Block Volume Performance Levels](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/blockvolumeperformance.htm#perf_levels) for more information.
     *
     * Allowed values:
     */
    vpusPerGb?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the block volume cross region backups, which will be used in the destination region to encrypt the backup's encryption keys. For more information about the Vault service and encryption keys, see [Overview of Vault service](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Concepts/keyoverview.htm) and [Using Keys](https://docs.cloud.oracle.com/iaas/Content/KeyManagement/Tasks/usingkeys.htm).
     *
     *
     * ** IMPORTANT **
     * Any change to a property that does not support update will force the destruction and recreation of the resource with the new property values
     */
    xrcKmsKeyId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=volume.d.ts.map