<filename>sdk/dotnet/GetSystemClustersync.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
{
    public static class GetSystemClustersync
    {
        /// <summary>
        /// Use this data source to get information on an fortios system clustersync
        /// </summary>
        public static Task<GetSystemClustersyncResult> InvokeAsync(GetSystemClustersyncArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemClustersyncResult>("fortios:index/getSystemClustersync:getSystemClustersync", args ?? new GetSystemClustersyncArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios system clustersync
        /// </summary>
        public static Output<GetSystemClustersyncResult> Invoke(GetSystemClustersyncInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetSystemClustersyncResult>("fortios:index/getSystemClustersync:getSystemClustersync", args ?? new GetSystemClustersyncInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetSystemClustersyncArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the sync_id of the desired system clustersync.
        /// </summary>
        [Input("syncId", required: true)]
        public int SyncId { get; set; }

        /// <summary>
        /// Specifies the vdom to which the data source 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 string? Vdomparam { get; set; }

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

    public sealed class GetSystemClustersyncInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the sync_id of the desired system clustersync.
        /// </summary>
        [Input("syncId", required: true)]
        public Input<int> SyncId { get; set; } = null!;

        /// <summary>
        /// Specifies the vdom to which the data source 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 GetSystemClustersyncInvokeArgs()
        {
        }
        public static new GetSystemClustersyncInvokeArgs Empty => new GetSystemClustersyncInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemClustersyncResult
    {
        /// <summary>
        /// List of interfaces to be turned down before session synchronization is complete. The structure of `down_intfs_before_sess_sync` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemClustersyncDownIntfsBeforeSessSyncResult> DownIntfsBeforeSessSyncs;
        /// <summary>
        /// Heartbeat interval (1 - 10 sec).
        /// </summary>
        public readonly int HbInterval;
        /// <summary>
        /// Lost heartbeat threshold (1 - 10).
        /// </summary>
        public readonly int HbLostThreshold;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// IKE heartbeat interval (1 - 60 secs).
        /// </summary>
        public readonly int IkeHeartbeatInterval;
        /// <summary>
        /// Enable/disable IKE HA monitor.
        /// </summary>
        public readonly string IkeMonitor;
        /// <summary>
        /// IKE HA monitor interval (10 - 300 secs).
        /// </summary>
        public readonly int IkeMonitorInterval;
        /// <summary>
        /// Enable/disable IPsec tunnel synchronization.
        /// </summary>
        public readonly string IpsecTunnelSync;
        /// <summary>
        /// IP address of the interface on the peer unit that is used for the session synchronization link.
        /// </summary>
        public readonly string Peerip;
        /// <summary>
        /// VDOM that contains the session synchronization link interface on the peer unit. Usually both peers would have the same peervd.
        /// </summary>
        public readonly string Peervd;
        /// <summary>
        /// Enable/disable IKE route announcement on the backup unit.
        /// </summary>
        public readonly string SecondaryAddIpsecRoutes;
        /// <summary>
        /// Add one or more filters if you only want to synchronize some sessions. Use the filter to configure the types of sessions to synchronize. The structure of `session_sync_filter` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemClustersyncSessionSyncFilterResult> SessionSyncFilters;
        /// <summary>
        /// Enable/disable IKE route announcement on the backup unit.
        /// </summary>
        public readonly string SlaveAddIkeRoutes;
        /// <summary>
        /// Sync ID.
        /// </summary>
        public readonly int SyncId;
        /// <summary>
        /// Sessions from these VDOMs are synchronized using this session synchronization configuration. The structure of `syncvd` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemClustersyncSyncvdResult> Syncvds;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetSystemClustersyncResult(
            ImmutableArray<Outputs.GetSystemClustersyncDownIntfsBeforeSessSyncResult> downIntfsBeforeSessSyncs,

            int hbInterval,

            int hbLostThreshold,

            string id,

            int ikeHeartbeatInterval,

            string ikeMonitor,

            int ikeMonitorInterval,

            string ipsecTunnelSync,

            string peerip,

            string peervd,

            string secondaryAddIpsecRoutes,

            ImmutableArray<Outputs.GetSystemClustersyncSessionSyncFilterResult> sessionSyncFilters,

            string slaveAddIkeRoutes,

            int syncId,

            ImmutableArray<Outputs.GetSystemClustersyncSyncvdResult> syncvds,

            string? vdomparam)
        {
            DownIntfsBeforeSessSyncs = downIntfsBeforeSessSyncs;
            HbInterval = hbInterval;
            HbLostThreshold = hbLostThreshold;
            Id = id;
            IkeHeartbeatInterval = ikeHeartbeatInterval;
            IkeMonitor = ikeMonitor;
            IkeMonitorInterval = ikeMonitorInterval;
            IpsecTunnelSync = ipsecTunnelSync;
            Peerip = peerip;
            Peervd = peervd;
            SecondaryAddIpsecRoutes = secondaryAddIpsecRoutes;
            SessionSyncFilters = sessionSyncFilters;
            SlaveAddIkeRoutes = slaveAddIkeRoutes;
            SyncId = syncId;
            Syncvds = syncvds;
            Vdomparam = vdomparam;
        }
    }
}
