<reponame>lbrlabs/pulumi-ovh// *** 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 Lbrlabs.PulumiPackage.Ovh.IpLoadBalancing
{
    public static class GetIpLoadBalancing
    {
        /// <summary>
        /// Use this data source to retrieve information about an IP Load Balancing product
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using System.Linq;
        /// using Pulumi;
        /// using Ovh = Pulumi.Ovh;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var lb = Ovh.IpLoadBalancing.GetIpLoadBalancing.Invoke(new()
        ///     {
        ///         ServiceName = "XXXXXX",
        ///         State = "ok",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetIpLoadBalancingResult> InvokeAsync(GetIpLoadBalancingArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetIpLoadBalancingResult>("ovh:IpLoadBalancing/getIpLoadBalancing:getIpLoadBalancing", args ?? new GetIpLoadBalancingArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to retrieve information about an IP Load Balancing product
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using System.Linq;
        /// using Pulumi;
        /// using Ovh = Pulumi.Ovh;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var lb = Ovh.IpLoadBalancing.GetIpLoadBalancing.Invoke(new()
        ///     {
        ///         ServiceName = "XXXXXX",
        ///         State = "ok",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetIpLoadBalancingResult> Invoke(GetIpLoadBalancingInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetIpLoadBalancingResult>("ovh:IpLoadBalancing/getIpLoadBalancing:getIpLoadBalancing", args ?? new GetIpLoadBalancingInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetIpLoadBalancingArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// the name displayed in ManagerV6 for your iplb (max 50 chars)
        /// </summary>
        [Input("displayName")]
        public string? DisplayName { get; set; }

        /// <summary>
        /// Your IP load balancing
        /// </summary>
        [Input("ipLoadbalancing")]
        public string? IpLoadbalancing { get; set; }

        /// <summary>
        /// The IPV4 associated to your IP load balancing
        /// </summary>
        [Input("ipv4")]
        public string? Ipv4 { get; set; }

        /// <summary>
        /// The IPV6 associated to your IP load balancing
        /// </summary>
        [Input("ipv6")]
        public string? Ipv6 { get; set; }

        /// <summary>
        /// The offer of your IP load balancing
        /// </summary>
        [Input("offer")]
        public string? Offer { get; set; }

        /// <summary>
        /// The internal name of your IP load balancing
        /// </summary>
        [Input("serviceName")]
        public string? ServiceName { get; set; }

        /// <summary>
        /// Modern oldest compatible clients : Firefox 27, Chrome 30,
        /// IE 11 on Windows 7, Edge, Opera 17, Safari 9, Android 5.0, and Java 8.
        /// Intermediate oldest compatible clients : Firefox 1, Chrome 1, IE 7, Opera 5,
        /// Safari 1, Windows XP IE8, Android 2.3, Java 7.
        /// Can take any of the following value: "intermediate", "modern"
        /// </summary>
        [Input("sslConfiguration")]
        public string? SslConfiguration { get; set; }

        /// <summary>
        /// Current state of your IP. Can take any of the following value:
        /// "blacklisted", "deleted", "free", "ok", "quarantined", "suspended"
        /// </summary>
        [Input("state")]
        public string? State { get; set; }

        /// <summary>
        /// Vrack eligibility. Takes a boolean value.
        /// </summary>
        [Input("vrackEligibility")]
        public bool? VrackEligibility { get; set; }

        /// <summary>
        /// Name of the vRack on which the current Load Balancer is
        /// attached to, as it is named on vRack product
        /// </summary>
        [Input("vrackName")]
        public string? VrackName { get; set; }

        [Input("zones")]
        private List<string>? _zones;

        /// <summary>
        /// Location where your service is. This takes an array of values.
        /// </summary>
        public List<string> Zones
        {
            get => _zones ?? (_zones = new List<string>());
            set => _zones = value;
        }

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

    public sealed class GetIpLoadBalancingInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// the name displayed in ManagerV6 for your iplb (max 50 chars)
        /// </summary>
        [Input("displayName")]
        public Input<string>? DisplayName { get; set; }

        /// <summary>
        /// Your IP load balancing
        /// </summary>
        [Input("ipLoadbalancing")]
        public Input<string>? IpLoadbalancing { get; set; }

        /// <summary>
        /// The IPV4 associated to your IP load balancing
        /// </summary>
        [Input("ipv4")]
        public Input<string>? Ipv4 { get; set; }

        /// <summary>
        /// The IPV6 associated to your IP load balancing
        /// </summary>
        [Input("ipv6")]
        public Input<string>? Ipv6 { get; set; }

        /// <summary>
        /// The offer of your IP load balancing
        /// </summary>
        [Input("offer")]
        public Input<string>? Offer { get; set; }

        /// <summary>
        /// The internal name of your IP load balancing
        /// </summary>
        [Input("serviceName")]
        public Input<string>? ServiceName { get; set; }

        /// <summary>
        /// Modern oldest compatible clients : Firefox 27, Chrome 30,
        /// IE 11 on Windows 7, Edge, Opera 17, Safari 9, Android 5.0, and Java 8.
        /// Intermediate oldest compatible clients : Firefox 1, Chrome 1, IE 7, Opera 5,
        /// Safari 1, Windows XP IE8, Android 2.3, Java 7.
        /// Can take any of the following value: "intermediate", "modern"
        /// </summary>
        [Input("sslConfiguration")]
        public Input<string>? SslConfiguration { get; set; }

        /// <summary>
        /// Current state of your IP. Can take any of the following value:
        /// "blacklisted", "deleted", "free", "ok", "quarantined", "suspended"
        /// </summary>
        [Input("state")]
        public Input<string>? State { get; set; }

        /// <summary>
        /// Vrack eligibility. Takes a boolean value.
        /// </summary>
        [Input("vrackEligibility")]
        public Input<bool>? VrackEligibility { get; set; }

        /// <summary>
        /// Name of the vRack on which the current Load Balancer is
        /// attached to, as it is named on vRack product
        /// </summary>
        [Input("vrackName")]
        public Input<string>? VrackName { get; set; }

        [Input("zones")]
        private InputList<string>? _zones;

        /// <summary>
        /// Location where your service is. This takes an array of values.
        /// </summary>
        public InputList<string> Zones
        {
            get => _zones ?? (_zones = new InputList<string>());
            set => _zones = value;
        }

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


    [OutputType]
    public sealed class GetIpLoadBalancingResult
    {
        public readonly string DisplayName;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly string IpLoadbalancing;
        public readonly string Ipv4;
        public readonly string Ipv6;
        /// <summary>
        /// The metrics token associated with your IP load balancing
        /// This attribute is sensitive.
        /// </summary>
        public readonly string MetricsToken;
        public readonly string Offer;
        /// <summary>
        /// Available additional zone for your Load Balancer
        /// </summary>
        public readonly ImmutableArray<Outputs.GetIpLoadBalancingOrderableZoneResult> OrderableZones;
        public readonly string ServiceName;
        public readonly string SslConfiguration;
        public readonly string State;
        public readonly bool VrackEligibility;
        public readonly string VrackName;
        public readonly ImmutableArray<string> Zones;

        [OutputConstructor]
        private GetIpLoadBalancingResult(
            string displayName,

            string id,

            string ipLoadbalancing,

            string ipv4,

            string ipv6,

            string metricsToken,

            string offer,

            ImmutableArray<Outputs.GetIpLoadBalancingOrderableZoneResult> orderableZones,

            string serviceName,

            string sslConfiguration,

            string state,

            bool vrackEligibility,

            string vrackName,

            ImmutableArray<string> zones)
        {
            DisplayName = displayName;
            Id = id;
            IpLoadbalancing = ipLoadbalancing;
            Ipv4 = ipv4;
            Ipv6 = ipv6;
            MetricsToken = metricsToken;
            Offer = offer;
            OrderableZones = orderableZones;
            ServiceName = serviceName;
            SslConfiguration = sslConfiguration;
            State = state;
            VrackEligibility = vrackEligibility;
            VrackName = vrackName;
            Zones = zones;
        }
    }
}
