import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Volume Group resource in Oracle Cloud Infrastructure Core service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/iaas/latest/VolumeGroup
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates a new volume group in the specified compartment.
 * A volume group is a collection of volumes and may be created from a list of volumes, cloning an existing
 * volume group, or by restoring a volume group backup.
 * You may optionally specify a *display name* for the volume group, which is simply a friendly name or
 * description. It does not have to be unique, and you can change it. Avoid entering confidential information.
 *
 * For more information, see [Volume Groups](https://docs.cloud.oracle.com/iaas/Content/Block/Concepts/volumegroups.htm).
 *
 * Note: If the volume group is created from another volume group or from a volume group backup, a copy of the volumes from the source is made in your compartment. However, this is not automatically deleted by Terraform when this volume group is deleted. To track these volumes, you can import them into the terraform statefile and run terraform destroy. Alternatively, you can also use another interface like CLI, SDK, or Console to remove them manually.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testVolumeGroup = new oci.core.VolumeGroup("test_volume_group", {
 *     availabilityDomain: volumeGroupAvailabilityDomain,
 *     compartmentId: compartmentId,
 *     sourceDetails: {
 *         type: "volumeIds",
 *         volumeIds: [volumeGroupSourceId],
 *     },
 *     backupPolicyId: testVolumeBackupPolicies.volumeBackupPolicies[0].id,
 *     clusterPlacementGroupId: testGroup.id,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: volumeGroupDisplayName,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     volumeGroupReplicas: [{
 *         availabilityDomain: volumeGroupVolumeGroupReplicasAvailabilityDomain,
 *         displayName: volumeGroupVolumeGroupReplicasDisplayName,
 *         xrrKmsKeyId: testKey.id,
 *     }],
 *     volumeIds: [volumeGroupSourceId],
 *     xrcKmsKeyId: testKey.id,
 * });
 * ```
 *
 * ## Import
 *
 * VolumeGroups can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Core/volumeGroup:VolumeGroup test_volume_group "id"
 * ```
 */
export declare class VolumeGroup extends pulumi.CustomResource {
    /**
     * Get an existing VolumeGroup 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?: VolumeGroupState, opts?: pulumi.CustomResourceOptions): VolumeGroup;
    /**
     * Returns true if the given object is an instance of VolumeGroup.  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 VolumeGroup;
    /**
     * The availability domain of the volume group.
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * If provided, specifies the ID of the volume backup policy to assign to the newly created volume group. 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 group.
     *
     * @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>;
    /**
     * The clusterPlacementGroup Id of the volume group for volume group placement.
     */
    readonly clusterPlacementGroupId: pulumi.Output<string>;
    /**
     * (Updatable) The OCID of the compartment that contains the volume group.
     */
    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;
    }>;
    /**
     * Specifies whether the newly created cloned volume group's data has finished copying from the source volume group or backup.
     */
    readonly isHydrated: pulumi.Output<boolean>;
    readonly preserveVolumeReplica: pulumi.Output<boolean | undefined>;
    /**
     * The aggregate size of the volume group in GBs.
     */
    readonly sizeInGbs: pulumi.Output<string>;
    /**
     * The aggregate size of the volume group in MBs.
     */
    readonly sizeInMbs: pulumi.Output<string>;
    /**
     * Specifies the source for a volume group.
     */
    readonly sourceDetails: pulumi.Output<outputs.Core.VolumeGroupSourceDetails>;
    /**
     * The current state of a volume group.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The date and time the volume group was created. Format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * (Updatable) The list of volume group replicas that this volume group will be enabled to have in the specified destination availability domains.
     */
    readonly volumeGroupReplicas: pulumi.Output<outputs.Core.VolumeGroupVolumeGroupReplica[]>;
    readonly volumeGroupReplicasDeletion: pulumi.Output<boolean | undefined>;
    /**
     * (Updatable) Use this for update operation only. This field is not supported during creation. For create use `volumeIds` under `sourceDetails`.
     *
     * ** 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 volumeIds: pulumi.Output<string[]>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the volume's 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).
     */
    readonly xrcKmsKeyId: pulumi.Output<string>;
    /**
     * Create a VolumeGroup 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: VolumeGroupArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering VolumeGroup resources.
 */
export interface VolumeGroupState {
    /**
     * The availability domain of the volume group.
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * If provided, specifies the ID of the volume backup policy to assign to the newly created volume group. 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 group.
     *
     * @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>;
    /**
     * The clusterPlacementGroup Id of the volume group for volume group placement.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the compartment that contains the volume group.
     */
    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>;
    /**
     * Specifies whether the newly created cloned volume group's data has finished copying from the source volume group or backup.
     */
    isHydrated?: pulumi.Input<boolean | undefined>;
    preserveVolumeReplica?: pulumi.Input<boolean | undefined>;
    /**
     * The aggregate size of the volume group in GBs.
     */
    sizeInGbs?: pulumi.Input<string | undefined>;
    /**
     * The aggregate size of the volume group in MBs.
     */
    sizeInMbs?: pulumi.Input<string | undefined>;
    /**
     * Specifies the source for a volume group.
     */
    sourceDetails?: pulumi.Input<inputs.Core.VolumeGroupSourceDetails | undefined>;
    /**
     * The current state of a volume group.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The date and time the volume group was created. Format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The list of volume group replicas that this volume group will be enabled to have in the specified destination availability domains.
     */
    volumeGroupReplicas?: pulumi.Input<pulumi.Input<inputs.Core.VolumeGroupVolumeGroupReplica>[] | undefined>;
    volumeGroupReplicasDeletion?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Use this for update operation only. This field is not supported during creation. For create use `volumeIds` under `sourceDetails`.
     *
     * ** 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
     */
    volumeIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the volume's 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).
     */
    xrcKmsKeyId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a VolumeGroup resource.
 */
export interface VolumeGroupArgs {
    /**
     * The availability domain of the volume group.
     */
    availabilityDomain: pulumi.Input<string>;
    /**
     * If provided, specifies the ID of the volume backup policy to assign to the newly created volume group. 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 group.
     *
     * @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>;
    /**
     * The clusterPlacementGroup Id of the volume group for volume group placement.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The OCID of the compartment that contains the volume group.
     */
    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>;
    preserveVolumeReplica?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies the source for a volume group.
     */
    sourceDetails: pulumi.Input<inputs.Core.VolumeGroupSourceDetails>;
    /**
     * (Updatable) The list of volume group replicas that this volume group will be enabled to have in the specified destination availability domains.
     */
    volumeGroupReplicas?: pulumi.Input<pulumi.Input<inputs.Core.VolumeGroupVolumeGroupReplica>[] | undefined>;
    volumeGroupReplicasDeletion?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) Use this for update operation only. This field is not supported during creation. For create use `volumeIds` under `sourceDetails`.
     *
     * ** 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
     */
    volumeIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * The OCID of the Vault service key which is the master encryption key for the volume's 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).
     */
    xrcKmsKeyId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=volumeGroup.d.ts.map