<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
{
    public static class GetSystemLinkmonitor
    {
        /// <summary>
        /// Use this data source to get information on an fortios system linkmonitor
        /// </summary>
        public static Task<GetSystemLinkmonitorResult> InvokeAsync(GetSystemLinkmonitorArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetSystemLinkmonitorResult>("fortios:index/getSystemLinkmonitor:getSystemLinkmonitor", args ?? new GetSystemLinkmonitorArgs(), options.WithDefaults());

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


    public sealed class GetSystemLinkmonitorArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired system linkmonitor.
        /// </summary>
        [Input("name", required: true)]
        public string Name { 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 string? Vdomparam { get; set; }

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

    public sealed class GetSystemLinkmonitorInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired system linkmonitor.
        /// </summary>
        [Input("name", required: true)]
        public Input<string> Name { 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 GetSystemLinkmonitorInvokeArgs()
        {
        }
        public static new GetSystemLinkmonitorInvokeArgs Empty => new GetSystemLinkmonitorInvokeArgs();
    }


    [OutputType]
    public sealed class GetSystemLinkmonitorResult
    {
        /// <summary>
        /// Address mode (IPv4 or IPv6).
        /// </summary>
        public readonly string AddrMode;
        /// <summary>
        /// Traffic class ID.
        /// </summary>
        public readonly int ClassId;
        /// <summary>
        /// Differentiated services code point (DSCP) in the IP header of the probe packet.
        /// </summary>
        public readonly string Diffservcode;
        /// <summary>
        /// Threshold weight to trigger link failure alert.
        /// </summary>
        public readonly int FailWeight;
        /// <summary>
        /// Number of retry attempts before the server is considered down (1 - 10, default = 5)
        /// </summary>
        public readonly int Failtime;
        /// <summary>
        /// Gateway IP address used to probe the server.
        /// </summary>
        public readonly string GatewayIp;
        /// <summary>
        /// Gateway IPv6 address used to probe the server.
        /// </summary>
        public readonly string GatewayIp6;
        /// <summary>
        /// HA election priority (1 - 50).
        /// </summary>
        public readonly int HaPriority;
        /// <summary>
        /// String in the http-agent field in the HTTP header.
        /// </summary>
        public readonly string HttpAgent;
        /// <summary>
        /// If you are monitoring an HTML server you can send an HTTP-GET request with a custom string. Use this option to define the string.
        /// </summary>
        public readonly string HttpGet;
        /// <summary>
        /// String that you expect to see in the HTTP-GET requests of the traffic to be monitored.
        /// </summary>
        public readonly string HttpMatch;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Detection interval (1 - 3600 sec, default = 5).
        /// </summary>
        public readonly int Interval;
        /// <summary>
        /// Link monitor name.
        /// </summary>
        public readonly string Name;
        /// <summary>
        /// Packet size of a twamp test session,
        /// </summary>
        public readonly int PacketSize;
        /// <summary>
        /// Twamp controller password in authentication mode
        /// </summary>
        public readonly string Password;
        /// <summary>
        /// Port number of the traffic to be used to monitor the server.
        /// </summary>
        public readonly int Port;
        /// <summary>
        /// Number of most recent probes that should be used to calculate latency and jitter (5 - 30, default = 30).
        /// </summary>
        public readonly int ProbeCount;
        /// <summary>
        /// Time to wait before a probe packet is considered lost (500 - 5000 msec, default = 500).
        /// </summary>
        public readonly int ProbeTimeout;
        /// <summary>
        /// Protocols used to monitor the server.
        /// </summary>
        public readonly string Protocol;
        /// <summary>
        /// Number of successful responses received before server is considered recovered (1 - 10, default = 5).
        /// </summary>
        public readonly int Recoverytime;
        /// <summary>
        /// Subnet to monitor. The structure of `route` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemLinkmonitorRouteResult> Routes;
        /// <summary>
        /// Twamp controller security mode.
        /// </summary>
        public readonly string SecurityMode;
        /// <summary>
        /// Mode of server configuration.
        /// </summary>
        public readonly string ServerConfig;
        /// <summary>
        /// Servers for link-monitor to monitor. The structure of `server_list` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemLinkmonitorServerListResult> ServerLists;
        /// <summary>
        /// Server type (static or dynamic).
        /// </summary>
        public readonly string ServerType;
        /// <summary>
        /// IP address of the server(s) to be monitored. The structure of `server` block is documented below.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetSystemLinkmonitorServerResult> Servers;
        /// <summary>
        /// Only use monitor to read quality values. If enabled, static routes and cascade interfaces will not be updated.
        /// </summary>
        public readonly string ServiceDetection;
        /// <summary>
        /// Source IP address used in packet to the server.
        /// </summary>
        public readonly string SourceIp;
        /// <summary>
        /// Source IPv6 address used in packet to the server.
        /// </summary>
        public readonly string SourceIp6;
        /// <summary>
        /// Interface that receives the traffic to be monitored.
        /// </summary>
        public readonly string Srcintf;
        /// <summary>
        /// Enable/disable this link monitor.
        /// </summary>
        public readonly string Status;
        /// <summary>
        /// Enable/disable update cascade interface.
        /// </summary>
        public readonly string UpdateCascadeInterface;
        /// <summary>
        /// Enable/disable updating the policy route.
        /// </summary>
        public readonly string UpdatePolicyRoute;
        /// <summary>
        /// Enable/disable updating the static route.
        /// </summary>
        public readonly string UpdateStaticRoute;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetSystemLinkmonitorResult(
            string addrMode,

            int classId,

            string diffservcode,

            int failWeight,

            int failtime,

            string gatewayIp,

            string gatewayIp6,

            int haPriority,

            string httpAgent,

            string httpGet,

            string httpMatch,

            string id,

            int interval,

            string name,

            int packetSize,

            string password,

            int port,

            int probeCount,

            int probeTimeout,

            string protocol,

            int recoverytime,

            ImmutableArray<Outputs.GetSystemLinkmonitorRouteResult> routes,

            string securityMode,

            string serverConfig,

            ImmutableArray<Outputs.GetSystemLinkmonitorServerListResult> serverLists,

            string serverType,

            ImmutableArray<Outputs.GetSystemLinkmonitorServerResult> servers,

            string serviceDetection,

            string sourceIp,

            string sourceIp6,

            string srcintf,

            string status,

            string updateCascadeInterface,

            string updatePolicyRoute,

            string updateStaticRoute,

            string? vdomparam)
        {
            AddrMode = addrMode;
            ClassId = classId;
            Diffservcode = diffservcode;
            FailWeight = failWeight;
            Failtime = failtime;
            GatewayIp = gatewayIp;
            GatewayIp6 = gatewayIp6;
            HaPriority = haPriority;
            HttpAgent = httpAgent;
            HttpGet = httpGet;
            HttpMatch = httpMatch;
            Id = id;
            Interval = interval;
            Name = name;
            PacketSize = packetSize;
            Password = password;
            Port = port;
            ProbeCount = probeCount;
            ProbeTimeout = probeTimeout;
            Protocol = protocol;
            Recoverytime = recoverytime;
            Routes = routes;
            SecurityMode = securityMode;
            ServerConfig = serverConfig;
            ServerLists = serverLists;
            ServerType = serverType;
            Servers = servers;
            ServiceDetection = serviceDetection;
            SourceIp = sourceIp;
            SourceIp6 = sourceIp6;
            Srcintf = srcintf;
            Status = status;
            UpdateCascadeInterface = updateCascadeInterface;
            UpdatePolicyRoute = updatePolicyRoute;
            UpdateStaticRoute = updateStaticRoute;
            Vdomparam = vdomparam;
        }
    }
}
