import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Volume Attachment resource in Oracle Cloud Infrastructure Core service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/iaas/latest/VolumeAttachment
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Attaches the specified storage volume to the specified instance.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testVolumeAttachment = new oci.core.VolumeAttachment("test_volume_attachment", {
 *     attachmentType: volumeAttachmentAttachmentType,
 *     instanceId: testInstance.id,
 *     volumeId: testVolume.id,
 *     device: volumeAttachmentDevice,
 *     displayName: volumeAttachmentDisplayName,
 *     encryptionInTransitType: volumeAttachmentEncryptionInTransitType,
 *     isAgentAutoIscsiLoginEnabled: volumeAttachmentIsAgentAutoIscsiLoginEnabled === "true",
 *     isPvEncryptionInTransitEnabled: volumeAttachmentIsPvEncryptionInTransitEnabled === "true",
 *     isReadOnly: volumeAttachmentIsReadOnly === "true",
 *     isShareable: volumeAttachmentIsShareable === "true",
 *     useChap: volumeAttachmentUseChap === "true",
 * });
 * ```
 *
 * ## Import
 *
 * VolumeAttachments can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Core/volumeAttachment:VolumeAttachment test_volume_attachment "id"
 * ```
 */
export declare class VolumeAttachment extends pulumi.CustomResource {
    /**
     * Get an existing VolumeAttachment 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?: VolumeAttachmentState, opts?: pulumi.CustomResourceOptions): VolumeAttachment;
    /**
     * Returns true if the given object is an instance of VolumeAttachment.  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 VolumeAttachment;
    /**
     * The type of volume. The only supported values are "iscsi" and "paravirtualized".
     */
    readonly attachmentType: pulumi.Output<string>;
    /**
     * The availability domain of an instance.  Example: `Uocm:PHX-AD-1`
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * The Challenge-Handshake-Authentication-Protocol (CHAP) secret valid for the associated CHAP user name. (Also called the "CHAP password".)
     */
    readonly chapSecret: pulumi.Output<string>;
    /**
     * The volume's system-generated Challenge-Handshake-Authentication-Protocol (CHAP) user name. See [RFC 1994](https://tools.ietf.org/html/rfc1994) for more on CHAP.  Example: `ocid1.volume.oc1.phx.<unique_ID>`
     */
    readonly chapUsername: pulumi.Output<string>;
    /**
     * The OCID of the compartment.
     *
     * @deprecated The 'compartment_id' field has been deprecated and may be removed in a future version. Do not use this field.
     */
    readonly compartmentId: pulumi.Output<string>;
    /**
     * The device name. To retrieve a list of devices for a given instance, see [ListInstanceDevices](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Device/ListInstanceDevices).
     */
    readonly device: pulumi.Output<string>;
    /**
     * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * Refer the top-level definition of encryptionInTransitType. The default value is NONE.
     */
    readonly encryptionInTransitType: pulumi.Output<string>;
    /**
     * The OCID of the instance.
     */
    readonly instanceId: pulumi.Output<string>;
    /**
     * The volume's iSCSI IP address.  Example: `169.254.2.2`
     */
    readonly ipv4: pulumi.Output<string>;
    /**
     * The volume's iSCSI IPv6 address.  Example: `2001:db8::1/64`
     */
    readonly ipv6: pulumi.Output<string>;
    /**
     * The target volume's iSCSI Qualified Name in the format defined by [RFC 3720](https://tools.ietf.org/html/rfc3720#page-32).  Example: `iqn.2015-12.com.oracleiaas:40b7ee03-883f-46c6-a951-63d2841d2195`
     */
    readonly iqn: pulumi.Output<string>;
    /**
     * Whether to enable Oracle Cloud Agent to perform the iSCSI login and logout commands after the volume attach or detach operations for non multipath-enabled iSCSI attachments.
     */
    readonly isAgentAutoIscsiLoginEnabled: pulumi.Output<boolean>;
    /**
     * Whether the Iscsi or Paravirtualized attachment is multipath or not, it is not applicable to NVMe attachment.
     */
    readonly isMultipath: pulumi.Output<boolean>;
    /**
     * Whether to enable in-transit encryption for the data volume's paravirtualized attachment. The default value is false.
     */
    readonly isPvEncryptionInTransitEnabled: pulumi.Output<boolean>;
    /**
     * Whether the attachment was created in read-only mode.
     */
    readonly isReadOnly: pulumi.Output<boolean>;
    /**
     * Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified.
     */
    readonly isShareable: pulumi.Output<boolean>;
    /**
     * Flag indicating if this volume was created for the customer as part of a simplified launch. Used to determine whether the volume requires deletion on instance termination.
     */
    readonly isVolumeCreatedDuringLaunch: pulumi.Output<boolean>;
    /**
     * The iscsi login state of the volume attachment. For a Iscsi volume attachment, all iscsi sessions need to be all logged-in or logged-out to be in logged-in or logged-out state.
     */
    readonly iscsiLoginState: pulumi.Output<string>;
    /**
     * A list of secondary multipath devices
     */
    readonly multipathDevices: pulumi.Output<outputs.Core.VolumeAttachmentMultipathDevice[]>;
    /**
     * The volume's iSCSI port, usually port 860 or 3260.  Example: `3260`
     */
    readonly port: pulumi.Output<number>;
    /**
     * The current state of the volume attachment.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The date and time the volume was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).  Example: `2016-08-25T21:10:29.600Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * Whether to use CHAP authentication for the volume attachment. Defaults to false.
     */
    readonly useChap: pulumi.Output<boolean>;
    /**
     * The OCID of the volume.
     *
     *
     * ** 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 volumeId: pulumi.Output<string>;
    /**
     * Create a VolumeAttachment 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: VolumeAttachmentArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering VolumeAttachment resources.
 */
export interface VolumeAttachmentState {
    /**
     * The type of volume. The only supported values are "iscsi" and "paravirtualized".
     */
    attachmentType?: pulumi.Input<string | undefined>;
    /**
     * The availability domain of an instance.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * The Challenge-Handshake-Authentication-Protocol (CHAP) secret valid for the associated CHAP user name. (Also called the "CHAP password".)
     */
    chapSecret?: pulumi.Input<string | undefined>;
    /**
     * The volume's system-generated Challenge-Handshake-Authentication-Protocol (CHAP) user name. See [RFC 1994](https://tools.ietf.org/html/rfc1994) for more on CHAP.  Example: `ocid1.volume.oc1.phx.<unique_ID>`
     */
    chapUsername?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the compartment.
     *
     * @deprecated The 'compartment_id' field has been deprecated and may be removed in a future version. Do not use this field.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * The device name. To retrieve a list of devices for a given instance, see [ListInstanceDevices](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Device/ListInstanceDevices).
     */
    device?: pulumi.Input<string | undefined>;
    /**
     * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * Refer the top-level definition of encryptionInTransitType. The default value is NONE.
     */
    encryptionInTransitType?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the instance.
     */
    instanceId?: pulumi.Input<string | undefined>;
    /**
     * The volume's iSCSI IP address.  Example: `169.254.2.2`
     */
    ipv4?: pulumi.Input<string | undefined>;
    /**
     * The volume's iSCSI IPv6 address.  Example: `2001:db8::1/64`
     */
    ipv6?: pulumi.Input<string | undefined>;
    /**
     * The target volume's iSCSI Qualified Name in the format defined by [RFC 3720](https://tools.ietf.org/html/rfc3720#page-32).  Example: `iqn.2015-12.com.oracleiaas:40b7ee03-883f-46c6-a951-63d2841d2195`
     */
    iqn?: pulumi.Input<string | undefined>;
    /**
     * Whether to enable Oracle Cloud Agent to perform the iSCSI login and logout commands after the volume attach or detach operations for non multipath-enabled iSCSI attachments.
     */
    isAgentAutoIscsiLoginEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the Iscsi or Paravirtualized attachment is multipath or not, it is not applicable to NVMe attachment.
     */
    isMultipath?: pulumi.Input<boolean | undefined>;
    /**
     * Whether to enable in-transit encryption for the data volume's paravirtualized attachment. The default value is false.
     */
    isPvEncryptionInTransitEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the attachment was created in read-only mode.
     */
    isReadOnly?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified.
     */
    isShareable?: pulumi.Input<boolean | undefined>;
    /**
     * Flag indicating if this volume was created for the customer as part of a simplified launch. Used to determine whether the volume requires deletion on instance termination.
     */
    isVolumeCreatedDuringLaunch?: pulumi.Input<boolean | undefined>;
    /**
     * The iscsi login state of the volume attachment. For a Iscsi volume attachment, all iscsi sessions need to be all logged-in or logged-out to be in logged-in or logged-out state.
     */
    iscsiLoginState?: pulumi.Input<string | undefined>;
    /**
     * A list of secondary multipath devices
     */
    multipathDevices?: pulumi.Input<pulumi.Input<inputs.Core.VolumeAttachmentMultipathDevice>[] | undefined>;
    /**
     * The volume's iSCSI port, usually port 860 or 3260.  Example: `3260`
     */
    port?: pulumi.Input<number | undefined>;
    /**
     * The current state of the volume attachment.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The date and time the volume was created, in the format defined by [RFC3339](https://tools.ietf.org/html/rfc3339).  Example: `2016-08-25T21:10:29.600Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * Whether to use CHAP authentication for the volume attachment. Defaults to false.
     */
    useChap?: pulumi.Input<boolean | undefined>;
    /**
     * The OCID of the volume.
     *
     *
     * ** 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
     */
    volumeId?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a VolumeAttachment resource.
 */
export interface VolumeAttachmentArgs {
    /**
     * The type of volume. The only supported values are "iscsi" and "paravirtualized".
     */
    attachmentType: pulumi.Input<string>;
    /**
     * The OCID of the compartment.
     *
     * @deprecated The 'compartment_id' field has been deprecated and may be removed in a future version. Do not use this field.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    /**
     * The device name. To retrieve a list of devices for a given instance, see [ListInstanceDevices](https://docs.cloud.oracle.com/iaas/api/#/en/iaas/latest/Device/ListInstanceDevices).
     */
    device?: pulumi.Input<string | undefined>;
    /**
     * A user-friendly name. Does not have to be unique, and it's changeable. Avoid entering confidential information.
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * Refer the top-level definition of encryptionInTransitType. The default value is NONE.
     */
    encryptionInTransitType?: pulumi.Input<string | undefined>;
    /**
     * The OCID of the instance.
     */
    instanceId: pulumi.Input<string>;
    /**
     * Whether to enable Oracle Cloud Agent to perform the iSCSI login and logout commands after the volume attach or detach operations for non multipath-enabled iSCSI attachments.
     */
    isAgentAutoIscsiLoginEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Whether to enable in-transit encryption for the data volume's paravirtualized attachment. The default value is false.
     */
    isPvEncryptionInTransitEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the attachment was created in read-only mode.
     */
    isReadOnly?: pulumi.Input<boolean | undefined>;
    /**
     * Whether the attachment should be created in shareable mode. If an attachment is created in shareable mode, then other instances can attach the same volume, provided that they also create their attachments in shareable mode. Only certain volume types can be attached in shareable mode. Defaults to false if not specified.
     */
    isShareable?: pulumi.Input<boolean | undefined>;
    /**
     * Whether to use CHAP authentication for the volume attachment. Defaults to false.
     */
    useChap?: pulumi.Input<boolean | undefined>;
    /**
     * The OCID of the volume.
     *
     *
     * ** 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
     */
    volumeId: pulumi.Input<string>;
}
//# sourceMappingURL=volumeAttachment.d.ts.map