import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the File System resource in Oracle Cloud Infrastructure File Storage service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/filestorage/latest/FileSystem
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/
 *
 * Creates a new file system in the specified compartment and
 * availability domain. Instances can mount file systems in
 * another availability domain, but doing so might increase
 * latency when compared to mounting instances in the same
 * availability domain.
 *
 * After you create a file system, you can associate it with a mount
 * target. Instances can then mount the file system by connecting to the
 * mount target's IP address. You can associate a file system with
 * more than one mount target at a time.
 *
 * 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 Network Security Groups access control, see
 * [Network Security Groups](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/networksecuritygroups.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.
 *
 * All Oracle Cloud Infrastructure resources, including
 * file systems, get an Oracle-assigned, unique ID called an Oracle
 * Cloud Identifier ([OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm)).
 * When you create a resource, you can find its OCID in the response.
 * You can also retrieve a resource's OCID by using a List API operation on that resource
 * type or by viewing the resource in the Console.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testFileSystem = new oci.filestorage.FileSystem("test_file_system", {
 *     availabilityDomain: fileSystemAvailabilityDomain,
 *     compartmentId: compartmentId,
 *     areQuotaRulesEnabled: fileSystemAreQuotaRulesEnabled === "true",
 *     cloneAttachStatus: fileSystemCloneAttachStatus,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: fileSystemDisplayName,
 *     filesystemSnapshotPolicyId: testFilesystemSnapshotPolicy.id,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     kmsKeyId: testKey.id,
 *     locks: [{
 *         type: fileSystemLocksType,
 *         message: fileSystemLocksMessage,
 *         relatedResourceId: testResource.id,
 *         timeCreated: fileSystemLocksTimeCreated,
 *     }],
 *     sourceSnapshotId: testSnapshot.id,
 * });
 * ```
 *
 * ## Import
 *
 * FileSystems can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:FileStorage/fileSystem:FileSystem test_file_system "id"
 * ```
 */
export declare class FileSystem extends pulumi.CustomResource {
    /**
     * Get an existing FileSystem 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?: FileSystemState, opts?: pulumi.CustomResourceOptions): FileSystem;
    /**
     * Returns true if the given object is an instance of FileSystem.  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 FileSystem;
    /**
     * (Updatable) Specifies the enforcement of quota rules on the file system.
     */
    readonly areQuotaRulesEnabled: pulumi.Output<boolean>;
    /**
     * The availability domain to create the file system in.  Example: `Uocm:PHX-AD-1`
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * Specifies whether the clone file system is attached to its parent file system. If the value is set to 'DETACH', then the file system will be created, which is deep copied from the snapshot specified by sourceSnapshotId, else will remain attached to its parent.
     */
    readonly cloneAttachStatus: pulumi.Output<string>;
    /**
     * Specifies the total number of children of a file system.
     */
    readonly cloneCount: pulumi.Output<number>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to create the file system in.
     */
    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) An optional property when incremented triggers Detach Clone. Could be set to any integer value.
     *
     *
     * ** 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 detachCloneTrigger: pulumi.Output<number | undefined>;
    /**
     * (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `My file system`
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated file system snapshot policy, which controls the frequency of snapshot creation and retention period of the taken snapshots.
     *
     * May be unset as a blank value.
     */
    readonly filesystemSnapshotPolicyId: pulumi.Output<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"}`
     */
    readonly freeformTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * Specifies whether the file system has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm).
     */
    readonly isCloneParent: pulumi.Output<boolean>;
    /**
     * Specifies whether the data has finished copying from the source to the clone. Hydration can take up to several hours to complete depending on the size of the source. The source and clone remain available during hydration, but there may be some performance impact. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm#hydration).
     */
    readonly isHydrated: pulumi.Output<boolean>;
    readonly isLockOverride: pulumi.Output<boolean>;
    /**
     * Specifies whether the file system can be used as a target file system for replication. The system sets this value to `true` if the file system is unexported, hasn't yet been specified as a target file system in any replication resource, and has no user snapshots. After the file system has been specified as a target in a replication, or if the file system contains user snapshots, the system sets this value to `false`. For more information, see [Using Replication](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/using-replication.htm).
     */
    readonly isTargetable: pulumi.Output<boolean>;
    /**
     * (Updatable) The OCID of KMS key used to encrypt the encryption keys associated with this file system. May be unset as a blank or deleted from the configuration to remove the KMS key.
     */
    readonly kmsKeyId: pulumi.Output<string | undefined>;
    /**
     * Additional information about the current 'lifecycleState'.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * Locks associated with this resource.
     */
    readonly locks: pulumi.Output<outputs.FileStorage.FileSystemLock[]>;
    /**
     * The number of bytes consumed by the file system, including any snapshots. This number reflects the metered size of the file system and is updated asynchronously with respect to updates to the file system. For more information, see [File System Usage and Metering](https://docs.cloud.oracle.com/iaas/Content/File/Concepts/FSutilization.htm).
     */
    readonly meteredBytes: pulumi.Output<string>;
    /**
     * Displays the state of enforcement of quota rules on the file system.
     */
    readonly quotaEnforcementState: pulumi.Output<string>;
    /**
     * Specifies the total number of replications for which this file system is a source.
     */
    readonly replicationSourceCount: pulumi.Output<number>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target associated with the file system. Empty if the file system is not being used as target in a replication.
     */
    readonly replicationTargetId: pulumi.Output<string>;
    /**
     * Source information for the file system.
     */
    readonly sourceDetails: pulumi.Output<outputs.FileStorage.FileSystemSourceDetail[]>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm).
     */
    readonly sourceSnapshotId: pulumi.Output<string>;
    /**
     * The current state of the file system.
     */
    readonly state: pulumi.Output<string>;
    /**
     * System tags for this resource. System tags are applied to resources by internal Oracle Cloud Infrastructure services.
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The date and time the file system was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format.  Example: `2016-08-25T21:10:29.600Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * Create a FileSystem 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: FileSystemArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering FileSystem resources.
 */
export interface FileSystemState {
    /**
     * (Updatable) Specifies the enforcement of quota rules on the file system.
     */
    areQuotaRulesEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The availability domain to create the file system in.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * Specifies whether the clone file system is attached to its parent file system. If the value is set to 'DETACH', then the file system will be created, which is deep copied from the snapshot specified by sourceSnapshotId, else will remain attached to its parent.
     */
    cloneAttachStatus?: pulumi.Input<string | undefined>;
    /**
     * Specifies the total number of children of a file system.
     */
    cloneCount?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to create the file system in.
     */
    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) An optional property when incremented triggers Detach Clone. Could be set to any integer value.
     *
     *
     * ** 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
     */
    detachCloneTrigger?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `My file system`
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated file system snapshot policy, which controls the frequency of snapshot creation and retention period of the taken snapshots.
     *
     * May be unset as a blank value.
     */
    filesystemSnapshotPolicyId?: 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 file system has been cloned. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm).
     */
    isCloneParent?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies whether the data has finished copying from the source to the clone. Hydration can take up to several hours to complete depending on the size of the source. The source and clone remain available during hydration, but there may be some performance impact. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm#hydration).
     */
    isHydrated?: pulumi.Input<boolean | undefined>;
    isLockOverride?: pulumi.Input<boolean | undefined>;
    /**
     * Specifies whether the file system can be used as a target file system for replication. The system sets this value to `true` if the file system is unexported, hasn't yet been specified as a target file system in any replication resource, and has no user snapshots. After the file system has been specified as a target in a replication, or if the file system contains user snapshots, the system sets this value to `false`. For more information, see [Using Replication](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/using-replication.htm).
     */
    isTargetable?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The OCID of KMS key used to encrypt the encryption keys associated with this file system. May be unset as a blank or deleted from the configuration to remove the KMS key.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * Additional information about the current 'lifecycleState'.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * Locks associated with this resource.
     */
    locks?: pulumi.Input<pulumi.Input<inputs.FileStorage.FileSystemLock>[] | undefined>;
    /**
     * The number of bytes consumed by the file system, including any snapshots. This number reflects the metered size of the file system and is updated asynchronously with respect to updates to the file system. For more information, see [File System Usage and Metering](https://docs.cloud.oracle.com/iaas/Content/File/Concepts/FSutilization.htm).
     */
    meteredBytes?: pulumi.Input<string | undefined>;
    /**
     * Displays the state of enforcement of quota rules on the file system.
     */
    quotaEnforcementState?: pulumi.Input<string | undefined>;
    /**
     * Specifies the total number of replications for which this file system is a source.
     */
    replicationSourceCount?: pulumi.Input<number | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the replication target associated with the file system. Empty if the file system is not being used as target in a replication.
     */
    replicationTargetId?: pulumi.Input<string | undefined>;
    /**
     * Source information for the file system.
     */
    sourceDetails?: pulumi.Input<pulumi.Input<inputs.FileStorage.FileSystemSourceDetail>[] | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm).
     */
    sourceSnapshotId?: pulumi.Input<string | undefined>;
    /**
     * The current state of the file system.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * System tags for this resource. System tags are applied to resources by internal Oracle Cloud Infrastructure services.
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The date and time the file system was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format.  Example: `2016-08-25T21:10:29.600Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a FileSystem resource.
 */
export interface FileSystemArgs {
    /**
     * (Updatable) Specifies the enforcement of quota rules on the file system.
     */
    areQuotaRulesEnabled?: pulumi.Input<boolean | undefined>;
    /**
     * The availability domain to create the file system in.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain: pulumi.Input<string>;
    /**
     * Specifies whether the clone file system is attached to its parent file system. If the value is set to 'DETACH', then the file system will be created, which is deep copied from the snapshot specified by sourceSnapshotId, else will remain attached to its parent.
     */
    cloneAttachStatus?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment to create the file system in.
     */
    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) An optional property when incremented triggers Detach Clone. Could be set to any integer value.
     *
     *
     * ** 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
     */
    detachCloneTrigger?: pulumi.Input<number | undefined>;
    /**
     * (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `My file system`
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the associated file system snapshot policy, which controls the frequency of snapshot creation and retention period of the taken snapshots.
     *
     * May be unset as a blank value.
     */
    filesystemSnapshotPolicyId?: 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>;
    isLockOverride?: pulumi.Input<boolean | undefined>;
    /**
     * (Updatable) The OCID of KMS key used to encrypt the encryption keys associated with this file system. May be unset as a blank or deleted from the configuration to remove the KMS key.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * Locks associated with this resource.
     */
    locks?: pulumi.Input<pulumi.Input<inputs.FileStorage.FileSystemLock>[] | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the snapshot used to create a cloned file system. See [Cloning a File System](https://docs.cloud.oracle.com/iaas/Content/File/Tasks/cloningFS.htm).
     */
    sourceSnapshotId?: pulumi.Input<string | undefined>;
}
//# sourceMappingURL=fileSystem.d.ts.map