<filename>sdk/dotnet/GetFirewallshaperPeripshaper.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 GetFirewallshaperPeripshaper
    {
        /// <summary>
        /// Use this data source to get information on an fortios firewallshaper peripshaper
        /// </summary>
        public static Task<GetFirewallshaperPeripshaperResult> InvokeAsync(GetFirewallshaperPeripshaperArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetFirewallshaperPeripshaperResult>("fortios:index/getFirewallshaperPeripshaper:getFirewallshaperPeripshaper", args ?? new GetFirewallshaperPeripshaperArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get information on an fortios firewallshaper peripshaper
        /// </summary>
        public static Output<GetFirewallshaperPeripshaperResult> Invoke(GetFirewallshaperPeripshaperInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetFirewallshaperPeripshaperResult>("fortios:index/getFirewallshaperPeripshaper:getFirewallshaperPeripshaper", args ?? new GetFirewallshaperPeripshaperInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetFirewallshaperPeripshaperArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired firewallshaper peripshaper.
        /// </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 GetFirewallshaperPeripshaperArgs()
        {
        }
        public static new GetFirewallshaperPeripshaperArgs Empty => new GetFirewallshaperPeripshaperArgs();
    }

    public sealed class GetFirewallshaperPeripshaperInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Specify the name of the desired firewallshaper peripshaper.
        /// </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 GetFirewallshaperPeripshaperInvokeArgs()
        {
        }
        public static new GetFirewallshaperPeripshaperInvokeArgs Empty => new GetFirewallshaperPeripshaperInvokeArgs();
    }


    [OutputType]
    public sealed class GetFirewallshaperPeripshaperResult
    {
        /// <summary>
        /// Unit of measurement for maximum bandwidth for this shaper (Kbps, Mbps or Gbps).
        /// </summary>
        public readonly string BandwidthUnit;
        /// <summary>
        /// Enable/disable changing the Forward (original) DiffServ setting applied to traffic accepted by this shaper.
        /// </summary>
        public readonly string DiffservForward;
        /// <summary>
        /// Enable/disable changing the Reverse (reply) DiffServ setting applied to traffic accepted by this shaper.
        /// </summary>
        public readonly string DiffservReverse;
        /// <summary>
        /// Forward (original) DiffServ setting to be applied to traffic accepted by this shaper.
        /// </summary>
        public readonly string DiffservcodeForward;
        /// <summary>
        /// Reverse (reply) DiffServ setting to be applied to traffic accepted by this shaper.
        /// </summary>
        public readonly string DiffservcodeRev;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// Upper bandwidth limit enforced by this shaper (0 - 16776000). 0 means no limit. Units depend on the bandwidth-unit setting.
        /// </summary>
        public readonly int MaxBandwidth;
        /// <summary>
        /// Maximum number of concurrent sessions allowed by this shaper (0 - 2097000). 0 means no limit.
        /// </summary>
        public readonly int MaxConcurrentSession;
        /// <summary>
        /// Maximum number of concurrent TCP sessions allowed by this shaper (0 - 2097000). 0 means no limit.
        /// </summary>
        public readonly int MaxConcurrentTcpSession;
        /// <summary>
        /// Maximum number of concurrent UDP sessions allowed by this shaper (0 - 2097000). 0 means no limit.
        /// </summary>
        public readonly int MaxConcurrentUdpSession;
        /// <summary>
        /// Traffic shaper name.
        /// </summary>
        public readonly string Name;
        public readonly string? Vdomparam;

        [OutputConstructor]
        private GetFirewallshaperPeripshaperResult(
            string bandwidthUnit,

            string diffservForward,

            string diffservReverse,

            string diffservcodeForward,

            string diffservcodeRev,

            string id,

            int maxBandwidth,

            int maxConcurrentSession,

            int maxConcurrentTcpSession,

            int maxConcurrentUdpSession,

            string name,

            string? vdomparam)
        {
            BandwidthUnit = bandwidthUnit;
            DiffservForward = diffservForward;
            DiffservReverse = diffservReverse;
            DiffservcodeForward = diffservcodeForward;
            DiffservcodeRev = diffservcodeRev;
            Id = id;
            MaxBandwidth = maxBandwidth;
            MaxConcurrentSession = maxConcurrentSession;
            MaxConcurrentTcpSession = maxConcurrentTcpSession;
            MaxConcurrentUdpSession = maxConcurrentUdpSession;
            Name = name;
            Vdomparam = vdomparam;
        }
    }
}
