// *** 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 zscaler.PulumiPackage.Zia.TrafficForwarding
{
    public static class GetTrafficForwardingNodeVIPs
    {
        /// <summary>
        /// Use the **zia_traffic_forwarding_public_node_vips** data source to retrieve a paginated list of virtual IP addresses (VIPs) available in the Zscaler cloud.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zia = Pulumi.Zia;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var yvr1 = Zia.TrafficForwarding.GetTrafficForwardingNodeVIPs.Invoke(new()
        ///     {
        ///         Datacenter = "YVR1",
        ///     });
        /// 
        ///     return new Dictionary&lt;string, object?&gt;
        ///     {
        ///         ["ziaTrafficForwardingPublicNodeVipsYvr1"] = yvr1.Apply(getTrafficForwardingNodeVIPsResult =&gt; getTrafficForwardingNodeVIPsResult),
        ///     };
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetTrafficForwardingNodeVIPsResult> InvokeAsync(GetTrafficForwardingNodeVIPsArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetTrafficForwardingNodeVIPsResult>("zia:TrafficForwarding/getTrafficForwardingNodeVIPs:getTrafficForwardingNodeVIPs", args ?? new GetTrafficForwardingNodeVIPsArgs(), options.WithDefaults());

        /// <summary>
        /// Use the **zia_traffic_forwarding_public_node_vips** data source to retrieve a paginated list of virtual IP addresses (VIPs) available in the Zscaler cloud.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Zia = Pulumi.Zia;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var yvr1 = Zia.TrafficForwarding.GetTrafficForwardingNodeVIPs.Invoke(new()
        ///     {
        ///         Datacenter = "YVR1",
        ///     });
        /// 
        ///     return new Dictionary&lt;string, object?&gt;
        ///     {
        ///         ["ziaTrafficForwardingPublicNodeVipsYvr1"] = yvr1.Apply(getTrafficForwardingNodeVIPsResult =&gt; getTrafficForwardingNodeVIPsResult),
        ///     };
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetTrafficForwardingNodeVIPsResult> Invoke(GetTrafficForwardingNodeVIPsInvokeArgs? args = null, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetTrafficForwardingNodeVIPsResult>("zia:TrafficForwarding/getTrafficForwardingNodeVIPs:getTrafficForwardingNodeVIPs", args ?? new GetTrafficForwardingNodeVIPsInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetTrafficForwardingNodeVIPsArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Data-center Name
        /// </summary>
        [Input("datacenter")]
        public string? Datacenter { get; set; }

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

    public sealed class GetTrafficForwardingNodeVIPsInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Data-center Name
        /// </summary>
        [Input("datacenter")]
        public Input<string>? Datacenter { get; set; }

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


    [OutputType]
    public sealed class GetTrafficForwardingNodeVIPsResult
    {
        public readonly string City;
        public readonly string CloudName;
        public readonly string? Datacenter;
        public readonly string GreDomainName;
        public readonly ImmutableArray<string> GreIps;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly string Location;
        public readonly string PacDomainName;
        public readonly ImmutableArray<string> PacIps;
        public readonly string Region;
        public readonly string VpnDomainName;
        public readonly ImmutableArray<string> VpnIps;

        [OutputConstructor]
        private GetTrafficForwardingNodeVIPsResult(
            string city,

            string cloudName,

            string? datacenter,

            string greDomainName,

            ImmutableArray<string> greIps,

            string id,

            string location,

            string pacDomainName,

            ImmutableArray<string> pacIps,

            string region,

            string vpnDomainName,

            ImmutableArray<string> vpnIps)
        {
            City = city;
            CloudName = cloudName;
            Datacenter = datacenter;
            GreDomainName = greDomainName;
            GreIps = greIps;
            Id = id;
            Location = location;
            PacDomainName = pacDomainName;
            PacIps = pacIps;
            Region = region;
            VpnDomainName = vpnDomainName;
            VpnIps = vpnIps;
        }
    }
}
