<filename>sdk/dotnet/IcapServer.cs<gh_stars>0// *** 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>
    /// Configure ICAP servers.
    /// 
    /// ## 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.IcapServer("trname", new()
    ///     {
    ///         Ip6Address = "::",
    ///         IpAddress = "1.1.1.1",
    ///         IpVersion = "4",
    ///         MaxConnections = 100,
    ///         Port = 22,
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// Icap Server can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/icapServer:IcapServer labelname {{name}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/icapServer:IcapServer labelname {{name}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/icapServer:IcapServer")]
    public partial class IcapServer : global::Pulumi.CustomResource
    {
        /// <summary>
        /// Address type of the remote ICAP server: IPv4, IPv6 or FQDN. Valid values: `ip4`, `ip6`, `fqdn`.
        /// </summary>
        [Output("addrType")]
        public Output<string> AddrType { get; private set; } = null!;

        /// <summary>
        /// ICAP remote server Fully Qualified Domain Name (FQDN).
        /// </summary>
        [Output("fqdn")]
        public Output<string> Fqdn { get; private set; } = null!;

        /// <summary>
        /// Enable/disable ICAP remote server health checking. Attempts to connect to the remote ICAP server to verify that the server is operating normally. Valid values: `disable`, `enable`.
        /// </summary>
        [Output("healthcheck")]
        public Output<string> Healthcheck { get; private set; } = null!;

        /// <summary>
        /// ICAP Service name to use for health checks.
        /// </summary>
        [Output("healthcheckService")]
        public Output<string> HealthcheckService { get; private set; } = null!;

        /// <summary>
        /// IPv6 address of the ICAP server.
        /// </summary>
        [Output("ip6Address")]
        public Output<string> Ip6Address { get; private set; } = null!;

        /// <summary>
        /// IPv4 address of the ICAP server.
        /// </summary>
        [Output("ipAddress")]
        public Output<string> IpAddress { get; private set; } = null!;

        /// <summary>
        /// IP version. Valid values: `4`, `6`.
        /// </summary>
        [Output("ipVersion")]
        public Output<string> IpVersion { get; private set; } = null!;

        /// <summary>
        /// Maximum number of concurrent connections to ICAP server.
        /// </summary>
        [Output("maxConnections")]
        public Output<int> MaxConnections { get; private set; } = null!;

        /// <summary>
        /// Server name.
        /// </summary>
        [Output("name")]
        public Output<string> Name { get; private set; } = null!;

        /// <summary>
        /// ICAP server port.
        /// </summary>
        [Output("port")]
        public Output<int> Port { get; private set; } = null!;

        /// <summary>
        /// Enable/disable secure connection to ICAP server. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("secure")]
        public Output<string> Secure { get; private set; } = null!;

        /// <summary>
        /// CA certificate name.
        /// </summary>
        [Output("sslCert")]
        public Output<string> SslCert { 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 IcapServer 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 IcapServer(string name, IcapServerArgs? args = null, CustomResourceOptions? options = null)
            : base("fortios:index/icapServer:IcapServer", name, args ?? new IcapServerArgs(), MakeResourceOptions(options, ""))
        {
        }

        private IcapServer(string name, Input<string> id, IcapServerState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/icapServer:IcapServer", 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 IcapServer 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 IcapServer Get(string name, Input<string> id, IcapServerState? state = null, CustomResourceOptions? options = null)
        {
            return new IcapServer(name, id, state, options);
        }
    }

    public sealed class IcapServerArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Address type of the remote ICAP server: IPv4, IPv6 or FQDN. Valid values: `ip4`, `ip6`, `fqdn`.
        /// </summary>
        [Input("addrType")]
        public Input<string>? AddrType { get; set; }

        /// <summary>
        /// ICAP remote server Fully Qualified Domain Name (FQDN).
        /// </summary>
        [Input("fqdn")]
        public Input<string>? Fqdn { get; set; }

        /// <summary>
        /// Enable/disable ICAP remote server health checking. Attempts to connect to the remote ICAP server to verify that the server is operating normally. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("healthcheck")]
        public Input<string>? Healthcheck { get; set; }

        /// <summary>
        /// ICAP Service name to use for health checks.
        /// </summary>
        [Input("healthcheckService")]
        public Input<string>? HealthcheckService { get; set; }

        /// <summary>
        /// IPv6 address of the ICAP server.
        /// </summary>
        [Input("ip6Address")]
        public Input<string>? Ip6Address { get; set; }

        /// <summary>
        /// IPv4 address of the ICAP server.
        /// </summary>
        [Input("ipAddress")]
        public Input<string>? IpAddress { get; set; }

        /// <summary>
        /// IP version. Valid values: `4`, `6`.
        /// </summary>
        [Input("ipVersion")]
        public Input<string>? IpVersion { get; set; }

        /// <summary>
        /// Maximum number of concurrent connections to ICAP server.
        /// </summary>
        [Input("maxConnections")]
        public Input<int>? MaxConnections { get; set; }

        /// <summary>
        /// Server name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// ICAP server port.
        /// </summary>
        [Input("port")]
        public Input<int>? Port { get; set; }

        /// <summary>
        /// Enable/disable secure connection to ICAP server. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("secure")]
        public Input<string>? Secure { get; set; }

        /// <summary>
        /// CA certificate name.
        /// </summary>
        [Input("sslCert")]
        public Input<string>? SslCert { 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 IcapServerArgs()
        {
        }
        public static new IcapServerArgs Empty => new IcapServerArgs();
    }

    public sealed class IcapServerState : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Address type of the remote ICAP server: IPv4, IPv6 or FQDN. Valid values: `ip4`, `ip6`, `fqdn`.
        /// </summary>
        [Input("addrType")]
        public Input<string>? AddrType { get; set; }

        /// <summary>
        /// ICAP remote server Fully Qualified Domain Name (FQDN).
        /// </summary>
        [Input("fqdn")]
        public Input<string>? Fqdn { get; set; }

        /// <summary>
        /// Enable/disable ICAP remote server health checking. Attempts to connect to the remote ICAP server to verify that the server is operating normally. Valid values: `disable`, `enable`.
        /// </summary>
        [Input("healthcheck")]
        public Input<string>? Healthcheck { get; set; }

        /// <summary>
        /// ICAP Service name to use for health checks.
        /// </summary>
        [Input("healthcheckService")]
        public Input<string>? HealthcheckService { get; set; }

        /// <summary>
        /// IPv6 address of the ICAP server.
        /// </summary>
        [Input("ip6Address")]
        public Input<string>? Ip6Address { get; set; }

        /// <summary>
        /// IPv4 address of the ICAP server.
        /// </summary>
        [Input("ipAddress")]
        public Input<string>? IpAddress { get; set; }

        /// <summary>
        /// IP version. Valid values: `4`, `6`.
        /// </summary>
        [Input("ipVersion")]
        public Input<string>? IpVersion { get; set; }

        /// <summary>
        /// Maximum number of concurrent connections to ICAP server.
        /// </summary>
        [Input("maxConnections")]
        public Input<int>? MaxConnections { get; set; }

        /// <summary>
        /// Server name.
        /// </summary>
        [Input("name")]
        public Input<string>? Name { get; set; }

        /// <summary>
        /// ICAP server port.
        /// </summary>
        [Input("port")]
        public Input<int>? Port { get; set; }

        /// <summary>
        /// Enable/disable secure connection to ICAP server. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("secure")]
        public Input<string>? Secure { get; set; }

        /// <summary>
        /// CA certificate name.
        /// </summary>
        [Input("sslCert")]
        public Input<string>? SslCert { 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 IcapServerState()
        {
        }
        public static new IcapServerState Empty => new IcapServerState();
    }
}
