<filename>sdk/dotnet/ExtendercontrollerExtender.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>
    /// Extender controller configuration.
    /// 
    /// &gt; The resource applies to FortiOS Version &lt; 6.4.2. For FortiOS Version &gt;= 6.4.2, see `fortios.ExtendercontrollerExtender1`.
    /// 
    /// ## 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.ExtendercontrollerExtender("trname", new()
    ///     {
    ///         Admin = "disable",
    ///         BillingStartDay = 1,
    ///         ConnStatus = 0,
    ///         DialMode = "always-connect",
    ///         DialStatus = 0,
    ///         ExtName = "332",
    ///         Fosid = "1",
    ///         InitiatedUpdate = "disable",
    ///         Mode = "standalone",
    ///         ModemType = "gsm/lte",
    ///         MultiMode = "auto",
    ///         PppAuthProtocol = "auto",
    ///         PppEchoRequest = "disable",
    ///         QuotaLimitMb = 0,
    ///         Redial = "none",
    ///         Roaming = "disable",
    ///         Role = "primary",
    ///         Vdom = 0,
    ///         WimaxAuthProtocol = "tls",
    ///     });
    /// 
    /// });
    /// ```
    /// 
    /// ## Import
    /// 
    /// ExtenderController Extender can be imported using any of these accepted formats
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/extendercontrollerExtender:ExtendercontrollerExtender labelname {{fosid}}
    /// ```
    /// 
    ///  If you do not want to import arguments of block$ export "FORTIOS_IMPORT_TABLE"="false"
    /// 
    /// ```sh
    ///  $ pulumi import fortios:index/extendercontrollerExtender:ExtendercontrollerExtender labelname {{fosid}}
    /// ```
    /// 
    ///  $ unset "FORTIOS_IMPORT_TABLE"
    /// </summary>
    [FortiosResourceType("fortios:index/extendercontrollerExtender:ExtendercontrollerExtender")]
    public partial class ExtendercontrollerExtender : global::Pulumi.CustomResource
    {
        /// <summary>
        /// AAA shared secret.
        /// </summary>
        [Output("aaaSharedSecret")]
        public Output<string?> AaaSharedSecret { get; private set; } = null!;

        /// <summary>
        /// Access point name(APN).
        /// </summary>
        [Output("accessPointName")]
        public Output<string> AccessPointName { get; private set; } = null!;

        /// <summary>
        /// FortiExtender Administration (enable or disable). Valid values: `disable`, `discovered`, `enable`.
        /// </summary>
        [Output("admin")]
        public Output<string> Admin { get; private set; } = null!;

        /// <summary>
        /// Control management access to the managed extender. Separate entries with a space. Valid values: `ping`, `telnet`, `http`, `https`, `ssh`, `snmp`.
        /// </summary>
        [Output("allowaccess")]
        public Output<string> Allowaccess { get; private set; } = null!;

        /// <summary>
        /// Initialization AT commands specific to the MODEM.
        /// </summary>
        [Output("atDialScript")]
        public Output<string> AtDialScript { get; private set; } = null!;

        /// <summary>
        /// FortiExtender Administration (enable or disable). Valid values: `disable`, `enable`.
        /// </summary>
        [Output("authorized")]
        public Output<string> Authorized { get; private set; } = null!;

        /// <summary>
        /// FortiExtender LAN extension bandwidth limit (Mbps).
        /// </summary>
        [Output("bandwidthLimit")]
        public Output<int> BandwidthLimit { get; private set; } = null!;

        /// <summary>
        /// Billing start day.
        /// </summary>
        [Output("billingStartDay")]
        public Output<int> BillingStartDay { get; private set; } = null!;

        /// <summary>
        /// CDMA AAA SPI.
        /// </summary>
        [Output("cdmaAaaSpi")]
        public Output<string> CdmaAaaSpi { get; private set; } = null!;

        /// <summary>
        /// CDMA HA SPI.
        /// </summary>
        [Output("cdmaHaSpi")]
        public Output<string> CdmaHaSpi { get; private set; } = null!;

        /// <summary>
        /// NAI for CDMA MODEMS.
        /// </summary>
        [Output("cdmaNai")]
        public Output<string> CdmaNai { get; private set; } = null!;

        /// <summary>
        /// Connection status.
        /// </summary>
        [Output("connStatus")]
        public Output<int> ConnStatus { get; private set; } = null!;

        /// <summary>
        /// FortiExtender controller report configuration. The structure of `controller_report` block is documented below.
        /// </summary>
        [Output("controllerReport")]
        public Output<Outputs.ExtendercontrollerExtenderControllerReport> ControllerReport { get; private set; } = null!;

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

        /// <summary>
        /// device-id
        /// </summary>
        [Output("deviceId")]
        public Output<int> DeviceId { get; private set; } = null!;

        /// <summary>
        /// Dial mode (dial-on-demand or always-connect). Valid values: `dial-on-demand`, `always-connect`.
        /// </summary>
        [Output("dialMode")]
        public Output<string> DialMode { get; private set; } = null!;

        /// <summary>
        /// Dial status.
        /// </summary>
        [Output("dialStatus")]
        public Output<int> DialStatus { get; private set; } = null!;

        /// <summary>
        /// Enable/disable enforcement of bandwidth on LAN extension interface. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("enforceBandwidth")]
        public Output<string> EnforceBandwidth { get; private set; } = null!;

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

        /// <summary>
        /// Extension type for this FortiExtender. Valid values: `wan-extension`, `lan-extension`.
        /// </summary>
        [Output("extensionType")]
        public Output<string> ExtensionType { get; private set; } = null!;

        /// <summary>
        /// FortiExtender serial number.
        /// </summary>
        [Output("fosid")]
        public Output<string> Fosid { get; private set; } = null!;

        /// <summary>
        /// HA shared secret.
        /// </summary>
        [Output("haSharedSecret")]
        public Output<string?> HaSharedSecret { get; private set; } = null!;

        /// <summary>
        /// FortiExtender interface name.
        /// </summary>
        [Output("ifname")]
        public Output<string> Ifname { get; private set; } = null!;

        /// <summary>
        /// Allow/disallow network initiated updates to the MODEM. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("initiatedUpdate")]
        public Output<string> InitiatedUpdate { get; private set; } = null!;

        /// <summary>
        /// FortiExtender login password.
        /// </summary>
        [Output("loginPassword")]
        public Output<string?> LoginPassword { get; private set; } = null!;

        /// <summary>
        /// Change or reset the administrator password of a managed extender (yes, default, or no, default = no). Valid values: `yes`, `default`, `no`.
        /// </summary>
        [Output("loginPasswordChange")]
        public Output<string> LoginPasswordChange { get; private set; } = null!;

        /// <summary>
        /// FortiExtender mode. Valid values: `standalone`, `redundant`.
        /// </summary>
        [Output("mode")]
        public Output<string> Mode { get; private set; } = null!;

        /// <summary>
        /// Configuration options for modem 1. The structure of `modem1` block is documented below.
        /// </summary>
        [Output("modem1")]
        public Output<Outputs.ExtendercontrollerExtenderModem1> Modem1 { get; private set; } = null!;

        /// <summary>
        /// Configuration options for modem 2. The structure of `modem2` block is documented below.
        /// </summary>
        [Output("modem2")]
        public Output<Outputs.ExtendercontrollerExtenderModem2> Modem2 { get; private set; } = null!;

        /// <summary>
        /// MODEM password.
        /// </summary>
        [Output("modemPasswd")]
        public Output<string?> ModemPasswd { get; private set; } = null!;

        /// <summary>
        /// MODEM type (CDMA, GSM/LTE or WIMAX). Valid values: `cdma`, `gsm/lte`, `wimax`.
        /// </summary>
        [Output("modemType")]
        public Output<string> ModemType { get; private set; } = null!;

        /// <summary>
        /// MODEM mode of operation(3G,LTE,etc). Valid values: `auto`, `auto-3g`, `force-lte`, `force-3g`, `force-2g`.
        /// </summary>
        [Output("multiMode")]
        public Output<string> MultiMode { get; private set; } = null!;

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

        /// <summary>
        /// Enable to override the extender profile management access configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideAllowaccess")]
        public Output<string> OverrideAllowaccess { get; private set; } = null!;

        /// <summary>
        /// Enable to override the extender profile enforce-bandwidth setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideEnforceBandwidth")]
        public Output<string> OverrideEnforceBandwidth { get; private set; } = null!;

        /// <summary>
        /// Enable to override the extender profile login-password (administrator password) setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("overrideLoginPasswordChange")]
        public Output<string> OverrideLoginPasswordChange { get; private set; } = null!;

        /// <summary>
        /// PPP authentication protocol (PAP,CHAP or auto). Valid values: `auto`, `pap`, `chap`.
        /// </summary>
        [Output("pppAuthProtocol")]
        public Output<string> PppAuthProtocol { get; private set; } = null!;

        /// <summary>
        /// Enable/disable PPP echo request. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("pppEchoRequest")]
        public Output<string> PppEchoRequest { get; private set; } = null!;

        /// <summary>
        /// PPP password.
        /// </summary>
        [Output("pppPassword")]
        public Output<string?> PppPassword { get; private set; } = null!;

        /// <summary>
        /// PPP username.
        /// </summary>
        [Output("pppUsername")]
        public Output<string> PppUsername { get; private set; } = null!;

        /// <summary>
        /// Primary HA.
        /// </summary>
        [Output("primaryHa")]
        public Output<string> PrimaryHa { get; private set; } = null!;

        /// <summary>
        /// FortiExtender profile configuration.
        /// </summary>
        [Output("profile")]
        public Output<string> Profile { get; private set; } = null!;

        /// <summary>
        /// Monthly quota limit (MB).
        /// </summary>
        [Output("quotaLimitMb")]
        public Output<int> QuotaLimitMb { get; private set; } = null!;

        /// <summary>
        /// Number of redials allowed based on failed attempts. Valid values: `none`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`.
        /// </summary>
        [Output("redial")]
        public Output<string> Redial { get; private set; } = null!;

        /// <summary>
        /// Redundant interface.
        /// </summary>
        [Output("redundantIntf")]
        public Output<string> RedundantIntf { get; private set; } = null!;

        /// <summary>
        /// Enable/disable MODEM roaming. Valid values: `enable`, `disable`.
        /// </summary>
        [Output("roaming")]
        public Output<string> Roaming { get; private set; } = null!;

        /// <summary>
        /// FortiExtender work role(Primary, Secondary, None). Valid values: `none`, `primary`, `secondary`.
        /// </summary>
        [Output("role")]
        public Output<string> Role { get; private set; } = null!;

        /// <summary>
        /// Secondary HA.
        /// </summary>
        [Output("secondaryHa")]
        public Output<string> SecondaryHa { get; private set; } = null!;

        /// <summary>
        /// SIM PIN.
        /// </summary>
        [Output("simPin")]
        public Output<string?> SimPin { get; private set; } = null!;

        /// <summary>
        /// VDOM
        /// </summary>
        [Output("vdom")]
        public Output<int> Vdom { 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>
        /// FortiExtender wan extension configuration. The structure of `wan_extension` block is documented below.
        /// </summary>
        [Output("wanExtension")]
        public Output<Outputs.ExtendercontrollerExtenderWanExtension> WanExtension { get; private set; } = null!;

        /// <summary>
        /// WiMax authentication protocol(TLS or TTLS). Valid values: `tls`, `ttls`.
        /// </summary>
        [Output("wimaxAuthProtocol")]
        public Output<string> WimaxAuthProtocol { get; private set; } = null!;

        /// <summary>
        /// WiMax carrier.
        /// </summary>
        [Output("wimaxCarrier")]
        public Output<string> WimaxCarrier { get; private set; } = null!;

        /// <summary>
        /// WiMax realm.
        /// </summary>
        [Output("wimaxRealm")]
        public Output<string> WimaxRealm { get; private set; } = null!;


        /// <summary>
        /// Create a ExtendercontrollerExtender 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 ExtendercontrollerExtender(string name, ExtendercontrollerExtenderArgs args, CustomResourceOptions? options = null)
            : base("fortios:index/extendercontrollerExtender:ExtendercontrollerExtender", name, args ?? new ExtendercontrollerExtenderArgs(), MakeResourceOptions(options, ""))
        {
        }

        private ExtendercontrollerExtender(string name, Input<string> id, ExtendercontrollerExtenderState? state = null, CustomResourceOptions? options = null)
            : base("fortios:index/extendercontrollerExtender:ExtendercontrollerExtender", 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",
                AdditionalSecretOutputs =
                {
                    "aaaSharedSecret",
                    "haSharedSecret",
                    "modemPasswd",
                    "pppPassword",
                    "simPin",
                },
            };
            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 ExtendercontrollerExtender 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 ExtendercontrollerExtender Get(string name, Input<string> id, ExtendercontrollerExtenderState? state = null, CustomResourceOptions? options = null)
        {
            return new ExtendercontrollerExtender(name, id, state, options);
        }
    }

    public sealed class ExtendercontrollerExtenderArgs : global::Pulumi.ResourceArgs
    {
        [Input("aaaSharedSecret")]
        private Input<string>? _aaaSharedSecret;

        /// <summary>
        /// AAA shared secret.
        /// </summary>
        public Input<string>? AaaSharedSecret
        {
            get => _aaaSharedSecret;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _aaaSharedSecret = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// Access point name(APN).
        /// </summary>
        [Input("accessPointName")]
        public Input<string>? AccessPointName { get; set; }

        /// <summary>
        /// FortiExtender Administration (enable or disable). Valid values: `disable`, `discovered`, `enable`.
        /// </summary>
        [Input("admin", required: true)]
        public Input<string> Admin { get; set; } = null!;

        /// <summary>
        /// Control management access to the managed extender. Separate entries with a space. Valid values: `ping`, `telnet`, `http`, `https`, `ssh`, `snmp`.
        /// </summary>
        [Input("allowaccess")]
        public Input<string>? Allowaccess { get; set; }

        /// <summary>
        /// Initialization AT commands specific to the MODEM.
        /// </summary>
        [Input("atDialScript")]
        public Input<string>? AtDialScript { get; set; }

        /// <summary>
        /// FortiExtender Administration (enable or disable). Valid values: `disable`, `enable`.
        /// </summary>
        [Input("authorized")]
        public Input<string>? Authorized { get; set; }

        /// <summary>
        /// FortiExtender LAN extension bandwidth limit (Mbps).
        /// </summary>
        [Input("bandwidthLimit")]
        public Input<int>? BandwidthLimit { get; set; }

        /// <summary>
        /// Billing start day.
        /// </summary>
        [Input("billingStartDay")]
        public Input<int>? BillingStartDay { get; set; }

        /// <summary>
        /// CDMA AAA SPI.
        /// </summary>
        [Input("cdmaAaaSpi")]
        public Input<string>? CdmaAaaSpi { get; set; }

        /// <summary>
        /// CDMA HA SPI.
        /// </summary>
        [Input("cdmaHaSpi")]
        public Input<string>? CdmaHaSpi { get; set; }

        /// <summary>
        /// NAI for CDMA MODEMS.
        /// </summary>
        [Input("cdmaNai")]
        public Input<string>? CdmaNai { get; set; }

        /// <summary>
        /// Connection status.
        /// </summary>
        [Input("connStatus")]
        public Input<int>? ConnStatus { get; set; }

        /// <summary>
        /// FortiExtender controller report configuration. The structure of `controller_report` block is documented below.
        /// </summary>
        [Input("controllerReport")]
        public Input<Inputs.ExtendercontrollerExtenderControllerReportArgs>? ControllerReport { get; set; }

        /// <summary>
        /// Description.
        /// </summary>
        [Input("description")]
        public Input<string>? Description { get; set; }

        /// <summary>
        /// device-id
        /// </summary>
        [Input("deviceId")]
        public Input<int>? DeviceId { get; set; }

        /// <summary>
        /// Dial mode (dial-on-demand or always-connect). Valid values: `dial-on-demand`, `always-connect`.
        /// </summary>
        [Input("dialMode")]
        public Input<string>? DialMode { get; set; }

        /// <summary>
        /// Dial status.
        /// </summary>
        [Input("dialStatus")]
        public Input<int>? DialStatus { get; set; }

        /// <summary>
        /// Enable/disable enforcement of bandwidth on LAN extension interface. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("enforceBandwidth")]
        public Input<string>? EnforceBandwidth { get; set; }

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

        /// <summary>
        /// Extension type for this FortiExtender. Valid values: `wan-extension`, `lan-extension`.
        /// </summary>
        [Input("extensionType")]
        public Input<string>? ExtensionType { get; set; }

        /// <summary>
        /// FortiExtender serial number.
        /// </summary>
        [Input("fosid", required: true)]
        public Input<string> Fosid { get; set; } = null!;

        [Input("haSharedSecret")]
        private Input<string>? _haSharedSecret;

        /// <summary>
        /// HA shared secret.
        /// </summary>
        public Input<string>? HaSharedSecret
        {
            get => _haSharedSecret;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _haSharedSecret = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// FortiExtender interface name.
        /// </summary>
        [Input("ifname")]
        public Input<string>? Ifname { get; set; }

        /// <summary>
        /// Allow/disallow network initiated updates to the MODEM. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("initiatedUpdate")]
        public Input<string>? InitiatedUpdate { get; set; }

        /// <summary>
        /// FortiExtender login password.
        /// </summary>
        [Input("loginPassword")]
        public Input<string>? LoginPassword { get; set; }

        /// <summary>
        /// Change or reset the administrator password of a managed extender (yes, default, or no, default = no). Valid values: `yes`, `default`, `no`.
        /// </summary>
        [Input("loginPasswordChange")]
        public Input<string>? LoginPasswordChange { get; set; }

        /// <summary>
        /// FortiExtender mode. Valid values: `standalone`, `redundant`.
        /// </summary>
        [Input("mode")]
        public Input<string>? Mode { get; set; }

        /// <summary>
        /// Configuration options for modem 1. The structure of `modem1` block is documented below.
        /// </summary>
        [Input("modem1")]
        public Input<Inputs.ExtendercontrollerExtenderModem1Args>? Modem1 { get; set; }

        /// <summary>
        /// Configuration options for modem 2. The structure of `modem2` block is documented below.
        /// </summary>
        [Input("modem2")]
        public Input<Inputs.ExtendercontrollerExtenderModem2Args>? Modem2 { get; set; }

        [Input("modemPasswd")]
        private Input<string>? _modemPasswd;

        /// <summary>
        /// MODEM password.
        /// </summary>
        public Input<string>? ModemPasswd
        {
            get => _modemPasswd;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _modemPasswd = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// MODEM type (CDMA, GSM/LTE or WIMAX). Valid values: `cdma`, `gsm/lte`, `wimax`.
        /// </summary>
        [Input("modemType")]
        public Input<string>? ModemType { get; set; }

        /// <summary>
        /// MODEM mode of operation(3G,LTE,etc). Valid values: `auto`, `auto-3g`, `force-lte`, `force-3g`, `force-2g`.
        /// </summary>
        [Input("multiMode")]
        public Input<string>? MultiMode { get; set; }

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

        /// <summary>
        /// Enable to override the extender profile management access configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideAllowaccess")]
        public Input<string>? OverrideAllowaccess { get; set; }

        /// <summary>
        /// Enable to override the extender profile enforce-bandwidth setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideEnforceBandwidth")]
        public Input<string>? OverrideEnforceBandwidth { get; set; }

        /// <summary>
        /// Enable to override the extender profile login-password (administrator password) setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLoginPasswordChange")]
        public Input<string>? OverrideLoginPasswordChange { get; set; }

        /// <summary>
        /// PPP authentication protocol (PAP,CHAP or auto). Valid values: `auto`, `pap`, `chap`.
        /// </summary>
        [Input("pppAuthProtocol")]
        public Input<string>? PppAuthProtocol { get; set; }

        /// <summary>
        /// Enable/disable PPP echo request. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest")]
        public Input<string>? PppEchoRequest { get; set; }

        [Input("pppPassword")]
        private Input<string>? _pppPassword;

        /// <summary>
        /// PPP password.
        /// </summary>
        public Input<string>? PppPassword
        {
            get => _pppPassword;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _pppPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// PPP username.
        /// </summary>
        [Input("pppUsername")]
        public Input<string>? PppUsername { get; set; }

        /// <summary>
        /// Primary HA.
        /// </summary>
        [Input("primaryHa")]
        public Input<string>? PrimaryHa { get; set; }

        /// <summary>
        /// FortiExtender profile configuration.
        /// </summary>
        [Input("profile")]
        public Input<string>? Profile { get; set; }

        /// <summary>
        /// Monthly quota limit (MB).
        /// </summary>
        [Input("quotaLimitMb")]
        public Input<int>? QuotaLimitMb { get; set; }

        /// <summary>
        /// Number of redials allowed based on failed attempts. Valid values: `none`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`.
        /// </summary>
        [Input("redial")]
        public Input<string>? Redial { get; set; }

        /// <summary>
        /// Redundant interface.
        /// </summary>
        [Input("redundantIntf")]
        public Input<string>? RedundantIntf { get; set; }

        /// <summary>
        /// Enable/disable MODEM roaming. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("roaming")]
        public Input<string>? Roaming { get; set; }

        /// <summary>
        /// FortiExtender work role(Primary, Secondary, None). Valid values: `none`, `primary`, `secondary`.
        /// </summary>
        [Input("role", required: true)]
        public Input<string> Role { get; set; } = null!;

        /// <summary>
        /// Secondary HA.
        /// </summary>
        [Input("secondaryHa")]
        public Input<string>? SecondaryHa { get; set; }

        [Input("simPin")]
        private Input<string>? _simPin;

        /// <summary>
        /// SIM PIN.
        /// </summary>
        public Input<string>? SimPin
        {
            get => _simPin;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _simPin = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// VDOM
        /// </summary>
        [Input("vdom")]
        public Input<int>? Vdom { 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; }

        /// <summary>
        /// FortiExtender wan extension configuration. The structure of `wan_extension` block is documented below.
        /// </summary>
        [Input("wanExtension")]
        public Input<Inputs.ExtendercontrollerExtenderWanExtensionArgs>? WanExtension { get; set; }

        /// <summary>
        /// WiMax authentication protocol(TLS or TTLS). Valid values: `tls`, `ttls`.
        /// </summary>
        [Input("wimaxAuthProtocol")]
        public Input<string>? WimaxAuthProtocol { get; set; }

        /// <summary>
        /// WiMax carrier.
        /// </summary>
        [Input("wimaxCarrier")]
        public Input<string>? WimaxCarrier { get; set; }

        /// <summary>
        /// WiMax realm.
        /// </summary>
        [Input("wimaxRealm")]
        public Input<string>? WimaxRealm { get; set; }

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

    public sealed class ExtendercontrollerExtenderState : global::Pulumi.ResourceArgs
    {
        [Input("aaaSharedSecret")]
        private Input<string>? _aaaSharedSecret;

        /// <summary>
        /// AAA shared secret.
        /// </summary>
        public Input<string>? AaaSharedSecret
        {
            get => _aaaSharedSecret;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _aaaSharedSecret = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// Access point name(APN).
        /// </summary>
        [Input("accessPointName")]
        public Input<string>? AccessPointName { get; set; }

        /// <summary>
        /// FortiExtender Administration (enable or disable). Valid values: `disable`, `discovered`, `enable`.
        /// </summary>
        [Input("admin")]
        public Input<string>? Admin { get; set; }

        /// <summary>
        /// Control management access to the managed extender. Separate entries with a space. Valid values: `ping`, `telnet`, `http`, `https`, `ssh`, `snmp`.
        /// </summary>
        [Input("allowaccess")]
        public Input<string>? Allowaccess { get; set; }

        /// <summary>
        /// Initialization AT commands specific to the MODEM.
        /// </summary>
        [Input("atDialScript")]
        public Input<string>? AtDialScript { get; set; }

        /// <summary>
        /// FortiExtender Administration (enable or disable). Valid values: `disable`, `enable`.
        /// </summary>
        [Input("authorized")]
        public Input<string>? Authorized { get; set; }

        /// <summary>
        /// FortiExtender LAN extension bandwidth limit (Mbps).
        /// </summary>
        [Input("bandwidthLimit")]
        public Input<int>? BandwidthLimit { get; set; }

        /// <summary>
        /// Billing start day.
        /// </summary>
        [Input("billingStartDay")]
        public Input<int>? BillingStartDay { get; set; }

        /// <summary>
        /// CDMA AAA SPI.
        /// </summary>
        [Input("cdmaAaaSpi")]
        public Input<string>? CdmaAaaSpi { get; set; }

        /// <summary>
        /// CDMA HA SPI.
        /// </summary>
        [Input("cdmaHaSpi")]
        public Input<string>? CdmaHaSpi { get; set; }

        /// <summary>
        /// NAI for CDMA MODEMS.
        /// </summary>
        [Input("cdmaNai")]
        public Input<string>? CdmaNai { get; set; }

        /// <summary>
        /// Connection status.
        /// </summary>
        [Input("connStatus")]
        public Input<int>? ConnStatus { get; set; }

        /// <summary>
        /// FortiExtender controller report configuration. The structure of `controller_report` block is documented below.
        /// </summary>
        [Input("controllerReport")]
        public Input<Inputs.ExtendercontrollerExtenderControllerReportGetArgs>? ControllerReport { get; set; }

        /// <summary>
        /// Description.
        /// </summary>
        [Input("description")]
        public Input<string>? Description { get; set; }

        /// <summary>
        /// device-id
        /// </summary>
        [Input("deviceId")]
        public Input<int>? DeviceId { get; set; }

        /// <summary>
        /// Dial mode (dial-on-demand or always-connect). Valid values: `dial-on-demand`, `always-connect`.
        /// </summary>
        [Input("dialMode")]
        public Input<string>? DialMode { get; set; }

        /// <summary>
        /// Dial status.
        /// </summary>
        [Input("dialStatus")]
        public Input<int>? DialStatus { get; set; }

        /// <summary>
        /// Enable/disable enforcement of bandwidth on LAN extension interface. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("enforceBandwidth")]
        public Input<string>? EnforceBandwidth { get; set; }

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

        /// <summary>
        /// Extension type for this FortiExtender. Valid values: `wan-extension`, `lan-extension`.
        /// </summary>
        [Input("extensionType")]
        public Input<string>? ExtensionType { get; set; }

        /// <summary>
        /// FortiExtender serial number.
        /// </summary>
        [Input("fosid")]
        public Input<string>? Fosid { get; set; }

        [Input("haSharedSecret")]
        private Input<string>? _haSharedSecret;

        /// <summary>
        /// HA shared secret.
        /// </summary>
        public Input<string>? HaSharedSecret
        {
            get => _haSharedSecret;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _haSharedSecret = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// FortiExtender interface name.
        /// </summary>
        [Input("ifname")]
        public Input<string>? Ifname { get; set; }

        /// <summary>
        /// Allow/disallow network initiated updates to the MODEM. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("initiatedUpdate")]
        public Input<string>? InitiatedUpdate { get; set; }

        /// <summary>
        /// FortiExtender login password.
        /// </summary>
        [Input("loginPassword")]
        public Input<string>? LoginPassword { get; set; }

        /// <summary>
        /// Change or reset the administrator password of a managed extender (yes, default, or no, default = no). Valid values: `yes`, `default`, `no`.
        /// </summary>
        [Input("loginPasswordChange")]
        public Input<string>? LoginPasswordChange { get; set; }

        /// <summary>
        /// FortiExtender mode. Valid values: `standalone`, `redundant`.
        /// </summary>
        [Input("mode")]
        public Input<string>? Mode { get; set; }

        /// <summary>
        /// Configuration options for modem 1. The structure of `modem1` block is documented below.
        /// </summary>
        [Input("modem1")]
        public Input<Inputs.ExtendercontrollerExtenderModem1GetArgs>? Modem1 { get; set; }

        /// <summary>
        /// Configuration options for modem 2. The structure of `modem2` block is documented below.
        /// </summary>
        [Input("modem2")]
        public Input<Inputs.ExtendercontrollerExtenderModem2GetArgs>? Modem2 { get; set; }

        [Input("modemPasswd")]
        private Input<string>? _modemPasswd;

        /// <summary>
        /// MODEM password.
        /// </summary>
        public Input<string>? ModemPasswd
        {
            get => _modemPasswd;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _modemPasswd = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// MODEM type (CDMA, GSM/LTE or WIMAX). Valid values: `cdma`, `gsm/lte`, `wimax`.
        /// </summary>
        [Input("modemType")]
        public Input<string>? ModemType { get; set; }

        /// <summary>
        /// MODEM mode of operation(3G,LTE,etc). Valid values: `auto`, `auto-3g`, `force-lte`, `force-3g`, `force-2g`.
        /// </summary>
        [Input("multiMode")]
        public Input<string>? MultiMode { get; set; }

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

        /// <summary>
        /// Enable to override the extender profile management access configuration. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideAllowaccess")]
        public Input<string>? OverrideAllowaccess { get; set; }

        /// <summary>
        /// Enable to override the extender profile enforce-bandwidth setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideEnforceBandwidth")]
        public Input<string>? OverrideEnforceBandwidth { get; set; }

        /// <summary>
        /// Enable to override the extender profile login-password (administrator password) setting. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("overrideLoginPasswordChange")]
        public Input<string>? OverrideLoginPasswordChange { get; set; }

        /// <summary>
        /// PPP authentication protocol (PAP,CHAP or auto). Valid values: `auto`, `pap`, `chap`.
        /// </summary>
        [Input("pppAuthProtocol")]
        public Input<string>? PppAuthProtocol { get; set; }

        /// <summary>
        /// Enable/disable PPP echo request. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("pppEchoRequest")]
        public Input<string>? PppEchoRequest { get; set; }

        [Input("pppPassword")]
        private Input<string>? _pppPassword;

        /// <summary>
        /// PPP password.
        /// </summary>
        public Input<string>? PppPassword
        {
            get => _pppPassword;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _pppPassword = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// PPP username.
        /// </summary>
        [Input("pppUsername")]
        public Input<string>? PppUsername { get; set; }

        /// <summary>
        /// Primary HA.
        /// </summary>
        [Input("primaryHa")]
        public Input<string>? PrimaryHa { get; set; }

        /// <summary>
        /// FortiExtender profile configuration.
        /// </summary>
        [Input("profile")]
        public Input<string>? Profile { get; set; }

        /// <summary>
        /// Monthly quota limit (MB).
        /// </summary>
        [Input("quotaLimitMb")]
        public Input<int>? QuotaLimitMb { get; set; }

        /// <summary>
        /// Number of redials allowed based on failed attempts. Valid values: `none`, `1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`, `9`, `10`.
        /// </summary>
        [Input("redial")]
        public Input<string>? Redial { get; set; }

        /// <summary>
        /// Redundant interface.
        /// </summary>
        [Input("redundantIntf")]
        public Input<string>? RedundantIntf { get; set; }

        /// <summary>
        /// Enable/disable MODEM roaming. Valid values: `enable`, `disable`.
        /// </summary>
        [Input("roaming")]
        public Input<string>? Roaming { get; set; }

        /// <summary>
        /// FortiExtender work role(Primary, Secondary, None). Valid values: `none`, `primary`, `secondary`.
        /// </summary>
        [Input("role")]
        public Input<string>? Role { get; set; }

        /// <summary>
        /// Secondary HA.
        /// </summary>
        [Input("secondaryHa")]
        public Input<string>? SecondaryHa { get; set; }

        [Input("simPin")]
        private Input<string>? _simPin;

        /// <summary>
        /// SIM PIN.
        /// </summary>
        public Input<string>? SimPin
        {
            get => _simPin;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _simPin = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        /// <summary>
        /// VDOM
        /// </summary>
        [Input("vdom")]
        public Input<int>? Vdom { 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; }

        /// <summary>
        /// FortiExtender wan extension configuration. The structure of `wan_extension` block is documented below.
        /// </summary>
        [Input("wanExtension")]
        public Input<Inputs.ExtendercontrollerExtenderWanExtensionGetArgs>? WanExtension { get; set; }

        /// <summary>
        /// WiMax authentication protocol(TLS or TTLS). Valid values: `tls`, `ttls`.
        /// </summary>
        [Input("wimaxAuthProtocol")]
        public Input<string>? WimaxAuthProtocol { get; set; }

        /// <summary>
        /// WiMax carrier.
        /// </summary>
        [Input("wimaxCarrier")]
        public Input<string>? WimaxCarrier { get; set; }

        /// <summary>
        /// WiMax realm.
        /// </summary>
        [Input("wimaxRealm")]
        public Input<string>? WimaxRealm { get; set; }

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