<filename>sdk/dotnet/DlpSettings.cs// *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

using System;
using System.Collections.Generic;
using System.Collections.Immutable;
using System.Threading.Tasks;
using Pulumi.Serialization;
using Pulumi;

namespace Pulumiverse.Fortios
{
    /// <summary>
    /// Designate logical storage for DLP fingerprint database.
    /// 
    /// ## Example Usage
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Fortios = Pulumiverse.Fortios;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var trname = new Fortios.DlpSettings("trname", new()
    ///     {
    ///         CacheMemPercent = 2,
    ///         ChunkSize = 2800,
    ///         DbMode = "stop-adding",
    ///         Size = 16,
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// Dlp Settings can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/dlpSettings:DlpSettings labelname DlpSettings
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/dlpSettings:DlpSettings labelname DlpSettings
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/dlpSettings:DlpSettings")]
    public partial class DlpSettings : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Maximum percentage of available memory allocated to caching (1 - 15%).
        /// </summary>
        [Output("cacheMemPercent")]
        public Output<int> CacheMemPercent { get; private set; } = null!;

        /// <summary>
        /// Maximum fingerprint chunk size.  **Changing will flush the entire database**.
        /// </summary>
        [Output("chunkSize")]
        public Output<int> ChunkSize { get; private set; } = null!;

        /// <summary>
        /// Behaviour when the maximum size is reached. Valid values: `stop-adding`, `remove-modified-then-oldest`, `remove-oldest`.
        /// </summary>
        [Output("dbMode")]
        public Output<string> DbMode { get; private set; } = null!;

        /// <summary>
        /// Maximum total size of files within the storage (MB).
        /// </summary>
        [Output("size")]
        public Output<int> Size { get; private set; } = null!;

        /// <summary>
        /// Storage device name.
        /// </summary>
        [Output("storageDevice")]
        public Output<string> StorageDevice { get; private set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;


        /// <summary>
        /// Create a DlpSettings resource with the given unique name, arguments, and options.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resource</param>
        /// <param name="args">The arguments used to populate this resource's properties</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public DlpSettings(string name, DlpSettingsArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/dlpSettings:DlpSettings", name, args ?? new DlpSettingsArgs(), MakeResourceOptions(options, ""))
        {
        }

        private DlpSettings(string name, Input<string> id, DlpSettingsState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/dlpSettings:DlpSettings", name, state, MakeResourceOptions(options, id))
        {
        }

        private static CustomResourceOptions MakeResourceOptions(CustomResourceOptions? options, Input<string>? id)
        {
            var defaultOptions = new CustomResourceOptions
            {
                Version = Utilities.Version,
                PluginDownloadURL = "github://api.github.com/pulumiverse/pulumi-fortios",
            };
            var merged = CustomResourceOptions.Merge(defaultOptions, options);
            // Override the ID if one was specified for consistency with other language SDKs.
            merged.Id = id ?? merged.Id;
            return merged;
        }
        /// <summary>
        /// Get an existing DlpSettings resource's state with the given name, ID, and optional extra
        /// properties used to qualify the lookup.
        /// </summary>
        ///
        /// <param name="name">The unique name of the resulting resource.</param>
        /// <param name="id">The unique provider ID of the resource to lookup.</param>
        /// <param name="state">Any extra arguments used during the lookup.</param>
        /// <param name="options">A bag of options that control this resource's behavior</param>
        public static DlpSettings Get(string name, Input<string> id, DlpSettingsState? state = null, CustomResourceOptions? options = null)
        {
            return new DlpSettings(name, id, state, options);
        }
    }

    public sealed class DlpSettingsArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Maximum percentage of available memory allocated to caching (1 - 15%).
        /// </summary>
        [Input("cacheMemPercent")]
        public Input<int>? CacheMemPercent { get; set; }

        /// <summary>
        /// Maximum fingerprint chunk size.  **Changing will flush the entire database**.
        /// </summary>
        [Input("chunkSize")]
        public Input<int>? ChunkSize { get; set; }

        /// <summary>
        /// Behaviour when the maximum size is reached. Valid values: `stop-adding`, `remove-modified-then-oldest`, `remove-oldest`.
        /// </summary>
        [Input("dbMode")]
        public Input<string>? DbMode { get; set; }

        /// <summary>
        /// Maximum total size of files within the storage (MB).
        /// </summary>
        [Input("size")]
        public Input<int>? Size { get; set; }

        /// <summary>
        /// Storage device name.
        /// </summary>
        [Input("storageDevice")]
        public Input<string>? StorageDevice { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        public DlpSettingsArgs()
        {
        }
        public static new DlpSettingsArgs Empty => new DlpSettingsArgs();
    }

    public sealed class DlpSettingsState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Maximum percentage of available memory allocated to caching (1 - 15%).
        /// </summary>
        [Input("cacheMemPercent")]
        public Input<int>? CacheMemPercent { get; set; }

        /// <summary>
        /// Maximum fingerprint chunk size.  **Changing will flush the entire database**.
        /// </summary>
        [Input("chunkSize")]
        public Input<int>? ChunkSize { get; set; }

        /// <summary>
        /// Behaviour when the maximum size is reached. Valid values: `stop-adding`, `remove-modified-then-oldest`, `remove-oldest`.
        /// </summary>
        [Input("dbMode")]
        public Input<string>? DbMode { get; set; }

        /// <summary>
        /// Maximum total size of files within the storage (MB).
        /// </summary>
        [Input("size")]
        public Input<int>? Size { get; set; }

        /// <summary>
        /// Storage device name.
        /// </summary>
        [Input("storageDevice")]
        public Input<string>? StorageDevice { get; set; }

        /// <summary>
        /// Specifies the vdom to which the resource will be applied when the FortiGate unit is running in VDOM mode. Only one vdom can be specified. If you want to inherit the vdom configuration of the provider, please do not set this parameter.
        /// </summary>
        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        public DlpSettingsState()
        {
        }
        public static new DlpSettingsState Empty => new DlpSettingsState();
    }
}
