// *** 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 HA.
    /// 
    /// By design considerations, the feature is using the fortios.SystemAutoscript resource as documented below.
    /// 
    /// ## Example1
    /// 
    /// ```csharp
    /// using System.Collections.Generic;
    /// using System.Linq;
    /// using Pulumi;
    /// using Fortios = Pulumiverse.Fortios;
    /// 
    /// return await Deployment.RunAsync(() =&gt; 
    /// {
    ///     var trname = new Fortios.SystemAutoscript("trname", new()
    ///     {
    ///         Interval = 1,
    ///         OutputSize = 10,
    ///         Repeat = 1,
    ///         Script = @"config system ha
    ///     set session-pickup enable
    ///     set session-pickup-connectionless enable
    ///     set session-pickup-expectation enable
    ///     set session-pickup-nat enable
    ///     set override disable
    /// end
    /// 
    /// 
    /// ",
    ///         Start = "auto",
    ///     });
    /// 
    /// });
    /// ```
    /// </summary>
    [FortiosResourceType("fortios:index/systemHa:SystemHa")]
    public partial class SystemHa : global::Pulumi.CustomResource
    {
        [Output("arps")]
        public Output<int> Arps { get; private set; } = null!;

        [Output("arpsInterval")]
        public Output<int> ArpsInterval { get; private set; } = null!;

        [Output("authentication")]
        public Output<string> Authentication { get; private set; } = null!;

        [Output("cpuThreshold")]
        public Output<string> CpuThreshold { get; private set; } = null!;

        [Output("dynamicSortSubtable")]
        public Output<string?> DynamicSortSubtable { get; private set; } = null!;

        [Output("encryption")]
        public Output<string> Encryption { get; private set; } = null!;

        [Output("failoverHoldTime")]
        public Output<int> FailoverHoldTime { get; private set; } = null!;

        [Output("ftpProxyThreshold")]
        public Output<string> FtpProxyThreshold { get; private set; } = null!;

        [Output("gratuitousArps")]
        public Output<string> GratuitousArps { get; private set; } = null!;

        [Output("groupId")]
        public Output<int> GroupId { get; private set; } = null!;

        [Output("groupName")]
        public Output<string> GroupName { get; private set; } = null!;

        [Output("haDirect")]
        public Output<string> HaDirect { get; private set; } = null!;

        [Output("haEthType")]
        public Output<string> HaEthType { get; private set; } = null!;

        [Output("haMgmtInterfaces")]
        public Output<ImmutableArray<Outputs.SystemHaHaMgmtInterface>> HaMgmtInterfaces { get; private set; } = null!;

        [Output("haMgmtStatus")]
        public Output<string> HaMgmtStatus { get; private set; } = null!;

        [Output("haUptimeDiffMargin")]
        public Output<int> HaUptimeDiffMargin { get; private set; } = null!;

        [Output("hbInterval")]
        public Output<int> HbInterval { get; private set; } = null!;

        [Output("hbIntervalInMilliseconds")]
        public Output<string> HbIntervalInMilliseconds { get; private set; } = null!;

        [Output("hbLostThreshold")]
        public Output<int> HbLostThreshold { get; private set; } = null!;

        [Output("hbdev")]
        public Output<string> Hbdev { get; private set; } = null!;

        [Output("hcEthType")]
        public Output<string> HcEthType { get; private set; } = null!;

        [Output("helloHolddown")]
        public Output<int> HelloHolddown { get; private set; } = null!;

        [Output("httpProxyThreshold")]
        public Output<string> HttpProxyThreshold { get; private set; } = null!;

        [Output("imapProxyThreshold")]
        public Output<string> ImapProxyThreshold { get; private set; } = null!;

        [Output("interClusterSessionSync")]
        public Output<string> InterClusterSessionSync { get; private set; } = null!;

        [Output("key")]
        public Output<string?> Key { get; private set; } = null!;

        [Output("l2epEthType")]
        public Output<string> L2epEthType { get; private set; } = null!;

        [Output("linkFailedSignal")]
        public Output<string> LinkFailedSignal { get; private set; } = null!;

        [Output("loadBalanceAll")]
        public Output<string> LoadBalanceAll { get; private set; } = null!;

        [Output("logicalSn")]
        public Output<string> LogicalSn { get; private set; } = null!;

        [Output("memoryBasedFailover")]
        public Output<string> MemoryBasedFailover { get; private set; } = null!;

        [Output("memoryCompatibleMode")]
        public Output<string> MemoryCompatibleMode { get; private set; } = null!;

        [Output("memoryFailoverFlipTimeout")]
        public Output<int> MemoryFailoverFlipTimeout { get; private set; } = null!;

        [Output("memoryFailoverMonitorPeriod")]
        public Output<int> MemoryFailoverMonitorPeriod { get; private set; } = null!;

        [Output("memoryFailoverSampleRate")]
        public Output<int> MemoryFailoverSampleRate { get; private set; } = null!;

        [Output("memoryFailoverThreshold")]
        public Output<int> MemoryFailoverThreshold { get; private set; } = null!;

        [Output("memoryThreshold")]
        public Output<string> MemoryThreshold { get; private set; } = null!;

        [Output("mode")]
        public Output<string> Mode { get; private set; } = null!;

        [Output("monitor")]
        public Output<string> Monitor { get; private set; } = null!;

        [Output("multicastTtl")]
        public Output<int> MulticastTtl { get; private set; } = null!;

        [Output("nntpProxyThreshold")]
        public Output<string> NntpProxyThreshold { get; private set; } = null!;

        [Output("override")]
        public Output<string> Override { get; private set; } = null!;

        [Output("overrideWaitTime")]
        public Output<int> OverrideWaitTime { get; private set; } = null!;

        [Output("password")]
        public Output<string?> Password { get; private set; } = null!;

        [Output("pingserverFailoverThreshold")]
        public Output<int> PingserverFailoverThreshold { get; private set; } = null!;

        [Output("pingserverFlipTimeout")]
        public Output<int> PingserverFlipTimeout { get; private set; } = null!;

        [Output("pingserverMonitorInterface")]
        public Output<string> PingserverMonitorInterface { get; private set; } = null!;

        [Output("pingserverSecondaryForceReset")]
        public Output<string> PingserverSecondaryForceReset { get; private set; } = null!;

        [Output("pingserverSlaveForceReset")]
        public Output<string> PingserverSlaveForceReset { get; private set; } = null!;

        [Output("pop3ProxyThreshold")]
        public Output<string> Pop3ProxyThreshold { get; private set; } = null!;

        [Output("priority")]
        public Output<int> Priority { get; private set; } = null!;

        [Output("routeHold")]
        public Output<int> RouteHold { get; private set; } = null!;

        [Output("routeTtl")]
        public Output<int> RouteTtl { get; private set; } = null!;

        [Output("routeWait")]
        public Output<int> RouteWait { get; private set; } = null!;

        [Output("schedule")]
        public Output<string> Schedule { get; private set; } = null!;

        [Output("secondaryVcluster")]
        public Output<Outputs.SystemHaSecondaryVcluster> SecondaryVcluster { get; private set; } = null!;

        [Output("sessionPickup")]
        public Output<string> SessionPickup { get; private set; } = null!;

        [Output("sessionPickupConnectionless")]
        public Output<string> SessionPickupConnectionless { get; private set; } = null!;

        [Output("sessionPickupDelay")]
        public Output<string> SessionPickupDelay { get; private set; } = null!;

        [Output("sessionPickupExpectation")]
        public Output<string> SessionPickupExpectation { get; private set; } = null!;

        [Output("sessionPickupNat")]
        public Output<string> SessionPickupNat { get; private set; } = null!;

        [Output("sessionSyncDev")]
        public Output<string> SessionSyncDev { get; private set; } = null!;

        [Output("smtpProxyThreshold")]
        public Output<string> SmtpProxyThreshold { get; private set; } = null!;

        [Output("ssdFailover")]
        public Output<string> SsdFailover { get; private set; } = null!;

        [Output("standaloneConfigSync")]
        public Output<string> StandaloneConfigSync { get; private set; } = null!;

        [Output("standaloneMgmtVdom")]
        public Output<string> StandaloneMgmtVdom { get; private set; } = null!;

        [Output("syncConfig")]
        public Output<string> SyncConfig { get; private set; } = null!;

        [Output("syncPacketBalance")]
        public Output<string> SyncPacketBalance { get; private set; } = null!;

        [Output("unicastGateway")]
        public Output<string> UnicastGateway { get; private set; } = null!;

        [Output("unicastHb")]
        public Output<string> UnicastHb { get; private set; } = null!;

        [Output("unicastHbNetmask")]
        public Output<string> UnicastHbNetmask { get; private set; } = null!;

        [Output("unicastHbPeerip")]
        public Output<string> UnicastHbPeerip { get; private set; } = null!;

        [Output("unicastPeers")]
        public Output<ImmutableArray<Outputs.SystemHaUnicastPeer>> UnicastPeers { get; private set; } = null!;

        [Output("unicastStatus")]
        public Output<string> UnicastStatus { get; private set; } = null!;

        [Output("uninterruptiblePrimaryWait")]
        public Output<int> UninterruptiblePrimaryWait { get; private set; } = null!;

        [Output("uninterruptibleUpgrade")]
        public Output<string> UninterruptibleUpgrade { get; private set; } = null!;

        [Output("vcluster2")]
        public Output<string> Vcluster2 { get; private set; } = null!;

        [Output("vclusterId")]
        public Output<int> VclusterId { get; private set; } = null!;

        [Output("vclusterStatus")]
        public Output<string> VclusterStatus { get; private set; } = null!;

        [Output("vclusters")]
        public Output<ImmutableArray<Outputs.SystemHaVcluster>> Vclusters { get; private set; } = null!;

        [Output("vdom")]
        public Output<string> Vdom { get; private set; } = null!;

        [Output("vdomparam")]
        public Output<string?> Vdomparam { get; private set; } = null!;

        [Output("weight")]
        public Output<string> Weight { get; private set; } = null!;


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

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

    public sealed class SystemHaArgs : global::Pulumi.ResourceArgs
    {
        [Input("arps")]
        public Input<int>? Arps { get; set; }

        [Input("arpsInterval")]
        public Input<int>? ArpsInterval { get; set; }

        [Input("authentication")]
        public Input<string>? Authentication { get; set; }

        [Input("cpuThreshold")]
        public Input<string>? CpuThreshold { get; set; }

        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        [Input("encryption")]
        public Input<string>? Encryption { get; set; }

        [Input("failoverHoldTime")]
        public Input<int>? FailoverHoldTime { get; set; }

        [Input("ftpProxyThreshold")]
        public Input<string>? FtpProxyThreshold { get; set; }

        [Input("gratuitousArps")]
        public Input<string>? GratuitousArps { get; set; }

        [Input("groupId")]
        public Input<int>? GroupId { get; set; }

        [Input("groupName")]
        public Input<string>? GroupName { get; set; }

        [Input("haDirect")]
        public Input<string>? HaDirect { get; set; }

        [Input("haEthType")]
        public Input<string>? HaEthType { get; set; }

        [Input("haMgmtInterfaces")]
        private InputList<Inputs.SystemHaHaMgmtInterfaceArgs>? _haMgmtInterfaces;
        public InputList<Inputs.SystemHaHaMgmtInterfaceArgs> HaMgmtInterfaces
        {
            get => _haMgmtInterfaces ?? (_haMgmtInterfaces = new InputList<Inputs.SystemHaHaMgmtInterfaceArgs>());
            set => _haMgmtInterfaces = value;
        }

        [Input("haMgmtStatus")]
        public Input<string>? HaMgmtStatus { get; set; }

        [Input("haUptimeDiffMargin")]
        public Input<int>? HaUptimeDiffMargin { get; set; }

        [Input("hbInterval")]
        public Input<int>? HbInterval { get; set; }

        [Input("hbIntervalInMilliseconds")]
        public Input<string>? HbIntervalInMilliseconds { get; set; }

        [Input("hbLostThreshold")]
        public Input<int>? HbLostThreshold { get; set; }

        [Input("hbdev")]
        public Input<string>? Hbdev { get; set; }

        [Input("hcEthType")]
        public Input<string>? HcEthType { get; set; }

        [Input("helloHolddown")]
        public Input<int>? HelloHolddown { get; set; }

        [Input("httpProxyThreshold")]
        public Input<string>? HttpProxyThreshold { get; set; }

        [Input("imapProxyThreshold")]
        public Input<string>? ImapProxyThreshold { get; set; }

        [Input("interClusterSessionSync")]
        public Input<string>? InterClusterSessionSync { get; set; }

        [Input("key")]
        private Input<string>? _key;
        public Input<string>? Key
        {
            get => _key;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _key = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        [Input("l2epEthType")]
        public Input<string>? L2epEthType { get; set; }

        [Input("linkFailedSignal")]
        public Input<string>? LinkFailedSignal { get; set; }

        [Input("loadBalanceAll")]
        public Input<string>? LoadBalanceAll { get; set; }

        [Input("logicalSn")]
        public Input<string>? LogicalSn { get; set; }

        [Input("memoryBasedFailover")]
        public Input<string>? MemoryBasedFailover { get; set; }

        [Input("memoryCompatibleMode")]
        public Input<string>? MemoryCompatibleMode { get; set; }

        [Input("memoryFailoverFlipTimeout")]
        public Input<int>? MemoryFailoverFlipTimeout { get; set; }

        [Input("memoryFailoverMonitorPeriod")]
        public Input<int>? MemoryFailoverMonitorPeriod { get; set; }

        [Input("memoryFailoverSampleRate")]
        public Input<int>? MemoryFailoverSampleRate { get; set; }

        [Input("memoryFailoverThreshold")]
        public Input<int>? MemoryFailoverThreshold { get; set; }

        [Input("memoryThreshold")]
        public Input<string>? MemoryThreshold { get; set; }

        [Input("mode")]
        public Input<string>? Mode { get; set; }

        [Input("monitor")]
        public Input<string>? Monitor { get; set; }

        [Input("multicastTtl")]
        public Input<int>? MulticastTtl { get; set; }

        [Input("nntpProxyThreshold")]
        public Input<string>? NntpProxyThreshold { get; set; }

        [Input("override")]
        public Input<string>? Override { get; set; }

        [Input("overrideWaitTime")]
        public Input<int>? OverrideWaitTime { get; set; }

        [Input("password")]
        private Input<string>? _password;
        public Input<string>? Password
        {
            get => _password;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        [Input("pingserverFailoverThreshold")]
        public Input<int>? PingserverFailoverThreshold { get; set; }

        [Input("pingserverFlipTimeout")]
        public Input<int>? PingserverFlipTimeout { get; set; }

        [Input("pingserverMonitorInterface")]
        public Input<string>? PingserverMonitorInterface { get; set; }

        [Input("pingserverSecondaryForceReset")]
        public Input<string>? PingserverSecondaryForceReset { get; set; }

        [Input("pingserverSlaveForceReset")]
        public Input<string>? PingserverSlaveForceReset { get; set; }

        [Input("pop3ProxyThreshold")]
        public Input<string>? Pop3ProxyThreshold { get; set; }

        [Input("priority")]
        public Input<int>? Priority { get; set; }

        [Input("routeHold")]
        public Input<int>? RouteHold { get; set; }

        [Input("routeTtl")]
        public Input<int>? RouteTtl { get; set; }

        [Input("routeWait")]
        public Input<int>? RouteWait { get; set; }

        [Input("schedule")]
        public Input<string>? Schedule { get; set; }

        [Input("secondaryVcluster")]
        public Input<Inputs.SystemHaSecondaryVclusterArgs>? SecondaryVcluster { get; set; }

        [Input("sessionPickup")]
        public Input<string>? SessionPickup { get; set; }

        [Input("sessionPickupConnectionless")]
        public Input<string>? SessionPickupConnectionless { get; set; }

        [Input("sessionPickupDelay")]
        public Input<string>? SessionPickupDelay { get; set; }

        [Input("sessionPickupExpectation")]
        public Input<string>? SessionPickupExpectation { get; set; }

        [Input("sessionPickupNat")]
        public Input<string>? SessionPickupNat { get; set; }

        [Input("sessionSyncDev")]
        public Input<string>? SessionSyncDev { get; set; }

        [Input("smtpProxyThreshold")]
        public Input<string>? SmtpProxyThreshold { get; set; }

        [Input("ssdFailover")]
        public Input<string>? SsdFailover { get; set; }

        [Input("standaloneConfigSync")]
        public Input<string>? StandaloneConfigSync { get; set; }

        [Input("standaloneMgmtVdom")]
        public Input<string>? StandaloneMgmtVdom { get; set; }

        [Input("syncConfig")]
        public Input<string>? SyncConfig { get; set; }

        [Input("syncPacketBalance")]
        public Input<string>? SyncPacketBalance { get; set; }

        [Input("unicastGateway")]
        public Input<string>? UnicastGateway { get; set; }

        [Input("unicastHb")]
        public Input<string>? UnicastHb { get; set; }

        [Input("unicastHbNetmask")]
        public Input<string>? UnicastHbNetmask { get; set; }

        [Input("unicastHbPeerip")]
        public Input<string>? UnicastHbPeerip { get; set; }

        [Input("unicastPeers")]
        private InputList<Inputs.SystemHaUnicastPeerArgs>? _unicastPeers;
        public InputList<Inputs.SystemHaUnicastPeerArgs> UnicastPeers
        {
            get => _unicastPeers ?? (_unicastPeers = new InputList<Inputs.SystemHaUnicastPeerArgs>());
            set => _unicastPeers = value;
        }

        [Input("unicastStatus")]
        public Input<string>? UnicastStatus { get; set; }

        [Input("uninterruptiblePrimaryWait")]
        public Input<int>? UninterruptiblePrimaryWait { get; set; }

        [Input("uninterruptibleUpgrade")]
        public Input<string>? UninterruptibleUpgrade { get; set; }

        [Input("vcluster2")]
        public Input<string>? Vcluster2 { get; set; }

        [Input("vclusterId")]
        public Input<int>? VclusterId { get; set; }

        [Input("vclusterStatus")]
        public Input<string>? VclusterStatus { get; set; }

        [Input("vclusters")]
        private InputList<Inputs.SystemHaVclusterArgs>? _vclusters;
        public InputList<Inputs.SystemHaVclusterArgs> Vclusters
        {
            get => _vclusters ?? (_vclusters = new InputList<Inputs.SystemHaVclusterArgs>());
            set => _vclusters = value;
        }

        [Input("vdom")]
        public Input<string>? Vdom { get; set; }

        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        [Input("weight")]
        public Input<string>? Weight { get; set; }

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

    public sealed class SystemHaState : global::Pulumi.ResourceArgs
    {
        [Input("arps")]
        public Input<int>? Arps { get; set; }

        [Input("arpsInterval")]
        public Input<int>? ArpsInterval { get; set; }

        [Input("authentication")]
        public Input<string>? Authentication { get; set; }

        [Input("cpuThreshold")]
        public Input<string>? CpuThreshold { get; set; }

        [Input("dynamicSortSubtable")]
        public Input<string>? DynamicSortSubtable { get; set; }

        [Input("encryption")]
        public Input<string>? Encryption { get; set; }

        [Input("failoverHoldTime")]
        public Input<int>? FailoverHoldTime { get; set; }

        [Input("ftpProxyThreshold")]
        public Input<string>? FtpProxyThreshold { get; set; }

        [Input("gratuitousArps")]
        public Input<string>? GratuitousArps { get; set; }

        [Input("groupId")]
        public Input<int>? GroupId { get; set; }

        [Input("groupName")]
        public Input<string>? GroupName { get; set; }

        [Input("haDirect")]
        public Input<string>? HaDirect { get; set; }

        [Input("haEthType")]
        public Input<string>? HaEthType { get; set; }

        [Input("haMgmtInterfaces")]
        private InputList<Inputs.SystemHaHaMgmtInterfaceGetArgs>? _haMgmtInterfaces;
        public InputList<Inputs.SystemHaHaMgmtInterfaceGetArgs> HaMgmtInterfaces
        {
            get => _haMgmtInterfaces ?? (_haMgmtInterfaces = new InputList<Inputs.SystemHaHaMgmtInterfaceGetArgs>());
            set => _haMgmtInterfaces = value;
        }

        [Input("haMgmtStatus")]
        public Input<string>? HaMgmtStatus { get; set; }

        [Input("haUptimeDiffMargin")]
        public Input<int>? HaUptimeDiffMargin { get; set; }

        [Input("hbInterval")]
        public Input<int>? HbInterval { get; set; }

        [Input("hbIntervalInMilliseconds")]
        public Input<string>? HbIntervalInMilliseconds { get; set; }

        [Input("hbLostThreshold")]
        public Input<int>? HbLostThreshold { get; set; }

        [Input("hbdev")]
        public Input<string>? Hbdev { get; set; }

        [Input("hcEthType")]
        public Input<string>? HcEthType { get; set; }

        [Input("helloHolddown")]
        public Input<int>? HelloHolddown { get; set; }

        [Input("httpProxyThreshold")]
        public Input<string>? HttpProxyThreshold { get; set; }

        [Input("imapProxyThreshold")]
        public Input<string>? ImapProxyThreshold { get; set; }

        [Input("interClusterSessionSync")]
        public Input<string>? InterClusterSessionSync { get; set; }

        [Input("key")]
        private Input<string>? _key;
        public Input<string>? Key
        {
            get => _key;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _key = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        [Input("l2epEthType")]
        public Input<string>? L2epEthType { get; set; }

        [Input("linkFailedSignal")]
        public Input<string>? LinkFailedSignal { get; set; }

        [Input("loadBalanceAll")]
        public Input<string>? LoadBalanceAll { get; set; }

        [Input("logicalSn")]
        public Input<string>? LogicalSn { get; set; }

        [Input("memoryBasedFailover")]
        public Input<string>? MemoryBasedFailover { get; set; }

        [Input("memoryCompatibleMode")]
        public Input<string>? MemoryCompatibleMode { get; set; }

        [Input("memoryFailoverFlipTimeout")]
        public Input<int>? MemoryFailoverFlipTimeout { get; set; }

        [Input("memoryFailoverMonitorPeriod")]
        public Input<int>? MemoryFailoverMonitorPeriod { get; set; }

        [Input("memoryFailoverSampleRate")]
        public Input<int>? MemoryFailoverSampleRate { get; set; }

        [Input("memoryFailoverThreshold")]
        public Input<int>? MemoryFailoverThreshold { get; set; }

        [Input("memoryThreshold")]
        public Input<string>? MemoryThreshold { get; set; }

        [Input("mode")]
        public Input<string>? Mode { get; set; }

        [Input("monitor")]
        public Input<string>? Monitor { get; set; }

        [Input("multicastTtl")]
        public Input<int>? MulticastTtl { get; set; }

        [Input("nntpProxyThreshold")]
        public Input<string>? NntpProxyThreshold { get; set; }

        [Input("override")]
        public Input<string>? Override { get; set; }

        [Input("overrideWaitTime")]
        public Input<int>? OverrideWaitTime { get; set; }

        [Input("password")]
        private Input<string>? _password;
        public Input<string>? Password
        {
            get => _password;
            set
            {
                var emptySecret = Output.CreateSecret(0);
                _password = Output.Tuple<Input<string>?, int>(value, emptySecret).Apply(t => t.Item1);
            }
        }

        [Input("pingserverFailoverThreshold")]
        public Input<int>? PingserverFailoverThreshold { get; set; }

        [Input("pingserverFlipTimeout")]
        public Input<int>? PingserverFlipTimeout { get; set; }

        [Input("pingserverMonitorInterface")]
        public Input<string>? PingserverMonitorInterface { get; set; }

        [Input("pingserverSecondaryForceReset")]
        public Input<string>? PingserverSecondaryForceReset { get; set; }

        [Input("pingserverSlaveForceReset")]
        public Input<string>? PingserverSlaveForceReset { get; set; }

        [Input("pop3ProxyThreshold")]
        public Input<string>? Pop3ProxyThreshold { get; set; }

        [Input("priority")]
        public Input<int>? Priority { get; set; }

        [Input("routeHold")]
        public Input<int>? RouteHold { get; set; }

        [Input("routeTtl")]
        public Input<int>? RouteTtl { get; set; }

        [Input("routeWait")]
        public Input<int>? RouteWait { get; set; }

        [Input("schedule")]
        public Input<string>? Schedule { get; set; }

        [Input("secondaryVcluster")]
        public Input<Inputs.SystemHaSecondaryVclusterGetArgs>? SecondaryVcluster { get; set; }

        [Input("sessionPickup")]
        public Input<string>? SessionPickup { get; set; }

        [Input("sessionPickupConnectionless")]
        public Input<string>? SessionPickupConnectionless { get; set; }

        [Input("sessionPickupDelay")]
        public Input<string>? SessionPickupDelay { get; set; }

        [Input("sessionPickupExpectation")]
        public Input<string>? SessionPickupExpectation { get; set; }

        [Input("sessionPickupNat")]
        public Input<string>? SessionPickupNat { get; set; }

        [Input("sessionSyncDev")]
        public Input<string>? SessionSyncDev { get; set; }

        [Input("smtpProxyThreshold")]
        public Input<string>? SmtpProxyThreshold { get; set; }

        [Input("ssdFailover")]
        public Input<string>? SsdFailover { get; set; }

        [Input("standaloneConfigSync")]
        public Input<string>? StandaloneConfigSync { get; set; }

        [Input("standaloneMgmtVdom")]
        public Input<string>? StandaloneMgmtVdom { get; set; }

        [Input("syncConfig")]
        public Input<string>? SyncConfig { get; set; }

        [Input("syncPacketBalance")]
        public Input<string>? SyncPacketBalance { get; set; }

        [Input("unicastGateway")]
        public Input<string>? UnicastGateway { get; set; }

        [Input("unicastHb")]
        public Input<string>? UnicastHb { get; set; }

        [Input("unicastHbNetmask")]
        public Input<string>? UnicastHbNetmask { get; set; }

        [Input("unicastHbPeerip")]
        public Input<string>? UnicastHbPeerip { get; set; }

        [Input("unicastPeers")]
        private InputList<Inputs.SystemHaUnicastPeerGetArgs>? _unicastPeers;
        public InputList<Inputs.SystemHaUnicastPeerGetArgs> UnicastPeers
        {
            get => _unicastPeers ?? (_unicastPeers = new InputList<Inputs.SystemHaUnicastPeerGetArgs>());
            set => _unicastPeers = value;
        }

        [Input("unicastStatus")]
        public Input<string>? UnicastStatus { get; set; }

        [Input("uninterruptiblePrimaryWait")]
        public Input<int>? UninterruptiblePrimaryWait { get; set; }

        [Input("uninterruptibleUpgrade")]
        public Input<string>? UninterruptibleUpgrade { get; set; }

        [Input("vcluster2")]
        public Input<string>? Vcluster2 { get; set; }

        [Input("vclusterId")]
        public Input<int>? VclusterId { get; set; }

        [Input("vclusterStatus")]
        public Input<string>? VclusterStatus { get; set; }

        [Input("vclusters")]
        private InputList<Inputs.SystemHaVclusterGetArgs>? _vclusters;
        public InputList<Inputs.SystemHaVclusterGetArgs> Vclusters
        {
            get => _vclusters ?? (_vclusters = new InputList<Inputs.SystemHaVclusterGetArgs>());
            set => _vclusters = value;
        }

        [Input("vdom")]
        public Input<string>? Vdom { get; set; }

        [Input("vdomparam")]
        public Input<string>? Vdomparam { get; set; }

        [Input("weight")]
        public Input<string>? Weight { get; set; }

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