import * as pulumi from "@pulumi/pulumi";
import * as inputs from "../types/input";
import * as outputs from "../types/output";
/**
 * This resource provides the Lustre File System resource in Oracle Cloud Infrastructure Lustre File Storage service.
 * Api doc link for the resource: https://docs.oracle.com/iaas/api/#/en/lustre/latest/LustreFileSystem
 *
 * Example terraform configs related to the resource : https://github.com/oracle/terraform-provider-oci/tree/master/examples/lustre_file_storage
 *
 * Creates a Lustre file system.
 *
 * ## Example Usage
 *
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as oci from "@pulumi/oci";
 *
 * const testLustreFileSystem = new oci.lustre.FileStorageLustreFileSystem("test_lustre_file_system", {
 *     availabilityDomain: lustreFileSystemAvailabilityDomain,
 *     capacityInGbs: Number(lustreFileSystemCapacityInGbs),
 *     compartmentId: compartmentId,
 *     fileSystemName: testFileSystem.name,
 *     performanceTier: lustreFileSystemPerformanceTier,
 *     rootSquashConfiguration: {
 *         clientExceptions: lustreFileSystemRootSquashConfigurationClientExceptions,
 *         identitySquash: lustreFileSystemRootSquashConfigurationIdentitySquash,
 *         squashGid: lustreFileSystemRootSquashConfigurationSquashGid,
 *         squashUid: lustreFileSystemRootSquashConfigurationSquashUid,
 *     },
 *     subnetId: testSubnet.id,
 *     clusterPlacementGroupId: testClusterPlacementGroup.id,
 *     definedTags: {
 *         "Operations.CostCenter": "42",
 *     },
 *     displayName: lustreFileSystemDisplayName,
 *     fileSystemDescription: lustreFileSystemFileSystemDescription,
 *     freeformTags: {
 *         Department: "Finance",
 *     },
 *     kmsKeyId: testKey.id,
 *     maintenanceWindows: [{
 *         dayOfWeek: lustreFileSystemMaintenanceWindowDayOfWeek,
 *         timeStart: lustreFileSystemMaintenanceWindowTimeStart,
 *     }],
 *     nsgIds: lustreFileSystemNsgIds,
 * });
 * ```
 *
 * ## Import
 *
 * LustreFileSystems can be imported using the `id`, e.g.
 *
 * ```sh
 * $ pulumi import oci:Lustre/fileStorageLustreFileSystem:FileStorageLustreFileSystem test_lustre_file_system "id"
 * ```
 */
export declare class FileStorageLustreFileSystem extends pulumi.CustomResource {
    /**
     * Get an existing FileStorageLustreFileSystem 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?: FileStorageLustreFileSystemState, opts?: pulumi.CustomResourceOptions): FileStorageLustreFileSystem;
    /**
     * Returns true if the given object is an instance of FileStorageLustreFileSystem.  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 FileStorageLustreFileSystem;
    /**
     * The availability domain the file system is in. May be unset as a blank or NULL value.  Example: `Uocm:PHX-AD-1`
     */
    readonly availabilityDomain: pulumi.Output<string>;
    /**
     * (Updatable) Capacity of the Lustre file system in GB. You can increase capacity only in multiples of 5 TB.
     */
    readonly capacityInGbs: pulumi.Output<number>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster placement group in which the Lustre file system exists.
     */
    readonly clusterPlacementGroupId: pulumi.Output<string>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the Lustre file system.
     */
    readonly compartmentId: pulumi.Output<string>;
    readonly dateTimeDetails: pulumi.Output<outputs.Lustre.FileStorageLustreFileSystemDateTimeDetails | 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"}`
     */
    readonly definedTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * (Updatable) A user-friendly name. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `My Lustre file system`
     */
    readonly displayName: pulumi.Output<string>;
    /**
     * (Updatable) Short description of the Lustre file system. Avoid entering confidential information.
     */
    readonly fileSystemDescription: pulumi.Output<string>;
    /**
     * The Lustre file system name. This is used in mount commands and other aspects of the client command line interface. The file system name is limited to 8 characters. Allowed characters are lower and upper case English letters, numbers, and '_'. If you have multiple Lustre file systems mounted on the same clients, this name can help distinguish them.
     */
    readonly fileSystemName: 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) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the KMS key used to encrypt the encryption keys associated with this file system.
     */
    readonly kmsKeyId: pulumi.Output<string>;
    /**
     * A message that describes the current state of the Lustre file system in more detail. For example, can be used to provide actionable information for a resource in the Failed state.
     */
    readonly lifecycleDetails: pulumi.Output<string>;
    /**
     * Type of network used by clients to mount the file system.   Example: `tcp`
     */
    readonly lnet: pulumi.Output<string>;
    /**
     * The meta-data for maintenance window.
     */
    readonly maintenanceWindowMetadatas: pulumi.Output<outputs.Lustre.FileStorageLustreFileSystemMaintenanceWindowMetadata[]>;
    /**
     * (Updatable) The preferred day and time to perform maintenance.
     */
    readonly maintenanceWindows: pulumi.Output<outputs.Lustre.FileStorageLustreFileSystemMaintenanceWindow[]>;
    /**
     * Major version of Lustre running in the Lustre file system.  Example: `2.15`
     */
    readonly majorVersion: pulumi.Output<string>;
    /**
     * The IPv4 address of MGS (Lustre Management Service) used by clients to mount the file system. For example '10.0.0.4'.
     */
    readonly managementServiceAddress: pulumi.Output<string>;
    /**
     * (Updatable) A list of Network Security Group [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this lustre file system. A maximum of 5 is allowed. Setting this to an empty array after the list is created removes the lustre file system from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm).
     */
    readonly nsgIds: pulumi.Output<string[]>;
    /**
     * (Updatable) An optional property when incremented triggers Override Maintenance. 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 overrideMaintenanceTrigger: pulumi.Output<number | undefined>;
    /**
     * The Lustre file system performance tier. A value of `MBPS_PER_TB_125` represents 125 megabytes per second per terabyte.
     */
    readonly performanceTier: pulumi.Output<string>;
    /**
     * (Updatable) An administrative feature that allows you to restrict root level access from clients that try to access your Lustre file system as root.
     */
    readonly rootSquashConfiguration: pulumi.Output<outputs.Lustre.FileStorageLustreFileSystemRootSquashConfiguration>;
    /**
     * The current state of the Lustre file system.
     */
    readonly state: pulumi.Output<string>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet the Lustre file system is in.
     */
    readonly subnetId: pulumi.Output<string>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    readonly systemTags: pulumi.Output<{
        [key: string]: string;
    }>;
    /**
     * The date and time that the current billing cycle for the file system will end, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. After the current cycle ends, this date is updated automatically to the next timestamp, which is 30 days later. File systems deleted earlier than this time will still incur charges until the billing cycle ends.  Example: `2016-08-25T21:10:29.600Z`
     */
    readonly timeBillingCycleEnd: pulumi.Output<string>;
    /**
     * The date and time the Lustre file system was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format.  Example: `2024-04-25T21:10:29.600Z`
     */
    readonly timeCreated: pulumi.Output<string>;
    /**
     * The date and time the Lustre file system was updated, in the format defined by [RFC 3339](https://tools.ietf.org/html/rfc3339).  Example: `2024-04-25T21:10:29.600Z`
     */
    readonly timeUpdated: pulumi.Output<string>;
    /**
     * Create a FileStorageLustreFileSystem 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: FileStorageLustreFileSystemArgs, opts?: pulumi.CustomResourceOptions);
}
/**
 * Input properties used for looking up and filtering FileStorageLustreFileSystem resources.
 */
export interface FileStorageLustreFileSystemState {
    /**
     * The availability domain the file system is in. May be unset as a blank or NULL value.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Capacity of the Lustre file system in GB. You can increase capacity only in multiples of 5 TB.
     */
    capacityInGbs?: pulumi.Input<number | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster placement group in which the Lustre file system exists.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the Lustre file system.
     */
    compartmentId?: pulumi.Input<string | undefined>;
    dateTimeDetails?: pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemDateTimeDetails | 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. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `My Lustre file system`
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Short description of the Lustre file system. Avoid entering confidential information.
     */
    fileSystemDescription?: pulumi.Input<string | undefined>;
    /**
     * The Lustre file system name. This is used in mount commands and other aspects of the client command line interface. The file system name is limited to 8 characters. Allowed characters are lower and upper case English letters, numbers, and '_'. If you have multiple Lustre file systems mounted on the same clients, this name can help distinguish them.
     */
    fileSystemName?: 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) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the KMS key used to encrypt the encryption keys associated with this file system.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * A message that describes the current state of the Lustre file system in more detail. For example, can be used to provide actionable information for a resource in the Failed state.
     */
    lifecycleDetails?: pulumi.Input<string | undefined>;
    /**
     * Type of network used by clients to mount the file system.   Example: `tcp`
     */
    lnet?: pulumi.Input<string | undefined>;
    /**
     * The meta-data for maintenance window.
     */
    maintenanceWindowMetadatas?: pulumi.Input<pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemMaintenanceWindowMetadata>[] | undefined>;
    /**
     * (Updatable) The preferred day and time to perform maintenance.
     */
    maintenanceWindows?: pulumi.Input<pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemMaintenanceWindow>[] | undefined>;
    /**
     * Major version of Lustre running in the Lustre file system.  Example: `2.15`
     */
    majorVersion?: pulumi.Input<string | undefined>;
    /**
     * The IPv4 address of MGS (Lustre Management Service) used by clients to mount the file system. For example '10.0.0.4'.
     */
    managementServiceAddress?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) A list of Network Security Group [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this lustre file system. A maximum of 5 is allowed. Setting this to an empty array after the list is created removes the lustre file system from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm).
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) An optional property when incremented triggers Override Maintenance. 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
     */
    overrideMaintenanceTrigger?: pulumi.Input<number | undefined>;
    /**
     * The Lustre file system performance tier. A value of `MBPS_PER_TB_125` represents 125 megabytes per second per terabyte.
     */
    performanceTier?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) An administrative feature that allows you to restrict root level access from clients that try to access your Lustre file system as root.
     */
    rootSquashConfiguration?: pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemRootSquashConfiguration | undefined>;
    /**
     * The current state of the Lustre file system.
     */
    state?: pulumi.Input<string | undefined>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet the Lustre file system is in.
     */
    subnetId?: pulumi.Input<string | undefined>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * The date and time that the current billing cycle for the file system will end, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format. After the current cycle ends, this date is updated automatically to the next timestamp, which is 30 days later. File systems deleted earlier than this time will still incur charges until the billing cycle ends.  Example: `2016-08-25T21:10:29.600Z`
     */
    timeBillingCycleEnd?: pulumi.Input<string | undefined>;
    /**
     * The date and time the Lustre file system was created, expressed in [RFC 3339](https://tools.ietf.org/rfc/rfc3339) timestamp format.  Example: `2024-04-25T21:10:29.600Z`
     */
    timeCreated?: pulumi.Input<string | undefined>;
    /**
     * The date and time the Lustre file system was updated, in the format defined by [RFC 3339](https://tools.ietf.org/html/rfc3339).  Example: `2024-04-25T21:10:29.600Z`
     */
    timeUpdated?: pulumi.Input<string | undefined>;
}
/**
 * The set of arguments for constructing a FileStorageLustreFileSystem resource.
 */
export interface FileStorageLustreFileSystemArgs {
    /**
     * The availability domain the file system is in. May be unset as a blank or NULL value.  Example: `Uocm:PHX-AD-1`
     */
    availabilityDomain: pulumi.Input<string>;
    /**
     * (Updatable) Capacity of the Lustre file system in GB. You can increase capacity only in multiples of 5 TB.
     */
    capacityInGbs: pulumi.Input<number>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the cluster placement group in which the Lustre file system exists.
     */
    clusterPlacementGroupId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the compartment that contains the Lustre file system.
     */
    compartmentId: pulumi.Input<string>;
    dateTimeDetails?: pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemDateTimeDetails | 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. It does not have to be unique, and it is changeable. Avoid entering confidential information.  Example: `My Lustre file system`
     */
    displayName?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) Short description of the Lustre file system. Avoid entering confidential information.
     */
    fileSystemDescription?: pulumi.Input<string | undefined>;
    /**
     * The Lustre file system name. This is used in mount commands and other aspects of the client command line interface. The file system name is limited to 8 characters. Allowed characters are lower and upper case English letters, numbers, and '_'. If you have multiple Lustre file systems mounted on the same clients, this name can help distinguish them.
     */
    fileSystemName: pulumi.Input<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"}`
     */
    freeformTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
    /**
     * (Updatable) The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the KMS key used to encrypt the encryption keys associated with this file system.
     */
    kmsKeyId?: pulumi.Input<string | undefined>;
    /**
     * (Updatable) The preferred day and time to perform maintenance.
     */
    maintenanceWindows?: pulumi.Input<pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemMaintenanceWindow>[] | undefined>;
    /**
     * (Updatable) A list of Network Security Group [OCIDs](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) associated with this lustre file system. A maximum of 5 is allowed. Setting this to an empty array after the list is created removes the lustre file system from all NSGs. For more information about NSGs, see [Security Rules](https://docs.cloud.oracle.com/iaas/Content/Network/Concepts/securityrules.htm).
     */
    nsgIds?: pulumi.Input<pulumi.Input<string>[] | undefined>;
    /**
     * (Updatable) An optional property when incremented triggers Override Maintenance. 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
     */
    overrideMaintenanceTrigger?: pulumi.Input<number | undefined>;
    /**
     * The Lustre file system performance tier. A value of `MBPS_PER_TB_125` represents 125 megabytes per second per terabyte.
     */
    performanceTier: pulumi.Input<string>;
    /**
     * (Updatable) An administrative feature that allows you to restrict root level access from clients that try to access your Lustre file system as root.
     */
    rootSquashConfiguration: pulumi.Input<inputs.Lustre.FileStorageLustreFileSystemRootSquashConfiguration>;
    /**
     * The [OCID](https://docs.cloud.oracle.com/iaas/Content/General/Concepts/identifiers.htm) of the subnet the Lustre file system is in.
     */
    subnetId: pulumi.Input<string>;
    /**
     * System tags for this resource. Each key is predefined and scoped to a namespace.  Example: `{"orcl-cloud.free-tier-retained": "true"}`
     */
    systemTags?: pulumi.Input<{
        [key: string]: pulumi.Input<string>;
    } | undefined>;
}
//# sourceMappingURL=fileStorageLustreFileSystem.d.ts.map