<reponame>astipkovits/pulumi-aviatrix// *** 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;

namespace Pulumi.Aviatrix
{
    public static class GetAviatrixTransitGateway
    {
        /// <summary>
        /// The **aviatrix_transit_gateway** data source provides details about a specific transit gateway created by the Aviatrix Controller.
        /// 
        /// This data source can prove useful when a module accepts a transit gateway's detail as an input variable. For example, requiring the transit gateway's name for a spoke gateway's attachment.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Aviatrix = Pulumi.Aviatrix;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var foo = Aviatrix.GetAviatrixTransitGateway.Invoke(new()
        ///     {
        ///         GwName = "gatewayname",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetAviatrixTransitGatewayResult> InvokeAsync(GetAviatrixTransitGatewayArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.InvokeAsync<GetAviatrixTransitGatewayResult>("aviatrix:index/getAviatrixTransitGateway:getAviatrixTransitGateway", args ?? new GetAviatrixTransitGatewayArgs(), options.WithDefaults());

        /// <summary>
        /// The **aviatrix_transit_gateway** data source provides details about a specific transit gateway created by the Aviatrix Controller.
        /// 
        /// This data source can prove useful when a module accepts a transit gateway's detail as an input variable. For example, requiring the transit gateway's name for a spoke gateway's attachment.
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using System.Collections.Generic;
        /// using Pulumi;
        /// using Aviatrix = Pulumi.Aviatrix;
        /// 
        /// return await Deployment.RunAsync(() =&gt; 
        /// {
        ///     var foo = Aviatrix.GetAviatrixTransitGateway.Invoke(new()
        ///     {
        ///         GwName = "gatewayname",
        ///     });
        /// 
        /// });
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetAviatrixTransitGatewayResult> Invoke(GetAviatrixTransitGatewayInvokeArgs args, InvokeOptions? options = null)
            => global::Pulumi.Deployment.Instance.Invoke<GetAviatrixTransitGatewayResult>("aviatrix:index/getAviatrixTransitGateway:getAviatrixTransitGateway", args ?? new GetAviatrixTransitGatewayInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetAviatrixTransitGatewayArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Transit gateway name.
        /// </summary>
        [Input("gwName", required: true)]
        public string GwName { get; set; } = null!;

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

    public sealed class GetAviatrixTransitGatewayInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// Transit gateway name.
        /// </summary>
        [Input("gwName", required: true)]
        public Input<string> GwName { get; set; } = null!;

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


    [OutputType]
    public sealed class GetAviatrixTransitGatewayResult
    {
        /// <summary>
        /// Aviatrix account name.
        /// </summary>
        public readonly string AccountName;
        /// <summary>
        /// When value is false, an idle address in Elastic IP pool is reused for this gateway. Otherwise, a new Elastic IP is allocated and used for this gateway.
        /// </summary>
        public readonly bool AllocateNewEip;
        /// <summary>
        /// Approved learned CIDRs.
        /// </summary>
        public readonly ImmutableArray<string> ApprovedLearnedCidrs;
        /// <summary>
        /// Availability domain for OCI.
        /// </summary>
        public readonly string AvailabilityDomain;
        /// <summary>
        /// The name of the public IP address and its resource group in Azure to assign to this Transit Gateway.
        /// </summary>
        public readonly string AzureEipNameResourceGroup;
        /// <summary>
        /// Status of Equal Cost Multi Path (ECMP) routing for the next hop.
        /// </summary>
        public readonly bool BgpEcmp;
        /// <summary>
        /// BGP Hold Time.
        /// </summary>
        public readonly int BgpHoldTime;
        /// <summary>
        /// Interfaces to run BGP protocol on top of the ethernet interface, to connect to the onprem/remote peer.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetAviatrixTransitGatewayBgpLanInterfaceResult> BgpLanInterfaces;
        /// <summary>
        /// List of available BGP LAN interface IPs for transit external device connection creation. Only supports GCP and Azure.
        /// </summary>
        public readonly ImmutableArray<string> BgpLanIpLists;
        /// <summary>
        /// Intended CIDR list to advertise to VGW.
        /// </summary>
        public readonly string BgpManualSpokeAdvertiseCidrs;
        /// <summary>
        /// BGP route polling time.
        /// </summary>
        public readonly string BgpPollingTime;
        /// <summary>
        /// Instance ID of the transit gateway.
        /// </summary>
        public readonly string CloudInstanceId;
        /// <summary>
        /// Type of cloud service provider.
        /// * `connected_transit"` -  Status of Connected Transit of transit gateway.
        /// </summary>
        public readonly int CloudType;
        public readonly bool ConnectedTransit;
        /// <summary>
        /// A list of comma separated CIDRs to be customized for the spoke VPC routes.
        /// </summary>
        public readonly string CustomizedSpokeVpcRoutes;
        /// <summary>
        /// A list of CIDRs to be customized for the transit VPC routes.
        /// </summary>
        public readonly ImmutableArray<string> CustomizedTransitVpcRoutes;
        /// <summary>
        /// The EIP address of the Transit Gateway.
        /// </summary>
        public readonly string Eip;
        /// <summary>
        /// Status of Active-Standby Mode.
        /// </summary>
        public readonly bool EnableActiveStandby;
        /// <summary>
        /// Status of Preemptive Mode for Active-Standby.
        /// </summary>
        public readonly bool EnableActiveStandbyPreemptive;
        /// <summary>
        /// Status of Advertise Transit VPC network CIDR of the transit gateway.
        /// </summary>
        public readonly bool EnableAdvertiseTransitCidr;
        /// <summary>
        /// Status of BGP over LAN functionality.
        /// </summary>
        public readonly bool EnableBgpOverLan;
        /// <summary>
        /// Status of Egress Transit FireNet being enabled on the gateway.
        /// </summary>
        public readonly bool EnableEgressTransitFirenet;
        /// <summary>
        /// Status of Encrypt Gateway EBS Volume of the transit gateway.
        /// </summary>
        public readonly bool EnableEncryptVolume;
        /// <summary>
        /// Status of FireNet Interfaces of the transit gateway.
        /// </summary>
        public readonly bool EnableFirenet;
        /// <summary>
        /// Status of AWS Gateway Load Balancer.
        /// </summary>
        public readonly bool EnableGatewayLoadBalancer;
        /// <summary>
        /// Sign of readiness for TGW connection.
        /// </summary>
        public readonly bool EnableHybridConnection;
        /// <summary>
        /// Status of jumbo frame support.
        /// </summary>
        public readonly bool EnableJumboFrame;
        /// <summary>
        /// Status of Encrypted Transit Approval for transit gateway.
        /// </summary>
        public readonly bool EnableLearnedCidrsApproval;
        /// <summary>
        /// Status of monitor gateway subnets.
        /// </summary>
        public readonly bool EnableMonitorGatewaySubnets;
        /// <summary>
        /// Status of multi-tier transit mode on transit gateway.
        /// </summary>
        public readonly bool EnableMultiTierTransit;
        /// <summary>
        /// Status of private OOB for the transit gateway.
        /// </summary>
        public readonly bool EnablePrivateOob;
        /// <summary>
        /// Status of segmentation.
        /// </summary>
        public readonly bool EnableSegmentation;
        /// <summary>
        /// Status of spot instance.
        /// </summary>
        public readonly bool EnableSpotInstance;
        /// <summary>
        /// Status of Transit FireNet Interfaces of the transit gateway.
        /// </summary>
        public readonly bool EnableTransitFirenet;
        /// <summary>
        /// Status of transit summarize CIDR to TGW.
        /// </summary>
        public readonly bool EnableTransitSummarizeCidrToTgw;
        /// <summary>
        /// Status of Vpc Dns Server of the transit Gateway.
        /// </summary>
        public readonly bool EnableVpcDnsServer;
        /// <summary>
        /// A list of comma separated CIDRs to be advertised to on-prem as "Excluded CIDR List".
        /// </summary>
        public readonly string ExcludedAdvertisedSpokeRoutes;
        /// <summary>
        /// Fault domain for OCI.
        /// </summary>
        public readonly string FaultDomain;
        /// <summary>
        /// A list of comma separated CIDRs to be filtered from the spoke VPC route table.
        /// </summary>
        public readonly string FilteredSpokeVpcRoutes;
        /// <summary>
        /// Aviatrix transit gateway name.
        /// </summary>
        public readonly string GwName;
        /// <summary>
        /// Size of transit gateway instance.
        /// </summary>
        public readonly string GwSize;
        /// <summary>
        /// HA gateway availability domain for OCI.
        /// </summary>
        public readonly string HaAvailabilityDomain;
        /// <summary>
        /// The name of the public IP address and its resource group in Azure to assign to the HA Transit Gateway.
        /// </summary>
        public readonly string HaAzureEipNameResourceGroup;
        /// <summary>
        /// Interfaces to run BGP protocol on top of the ethernet interface, to connect to the onprem/remote peer. Only available for GCP HA Transit.
        /// </summary>
        public readonly ImmutableArray<Outputs.GetAviatrixTransitGatewayHaBgpLanInterfaceResult> HaBgpLanInterfaces;
        /// <summary>
        /// List of available BGP LAN interface IPs for transit external device HA connection creation. Only supports GCP and Azure.
        /// </summary>
        public readonly ImmutableArray<string> HaBgpLanIpLists;
        /// <summary>
        /// Cloud instance ID of HA transit gateway.
        /// </summary>
        public readonly string HaCloudInstanceId;
        /// <summary>
        /// The EIP address of the HA Transit Gateway.
        /// </summary>
        public readonly string HaEip;
        /// <summary>
        /// HA gateway fault domain for OCI.
        /// </summary>
        public readonly string HaFaultDomain;
        /// <summary>
        /// Aviatrix transit gateway unique name of HA transit gateway.
        /// * `ha_gw_size"` - HA Gateway Size.
        /// </summary>
        public readonly string HaGwName;
        public readonly string HaGwSize;
        /// <summary>
        /// The image version of the HA gateway.
        /// </summary>
        public readonly string HaImageVersion;
        /// <summary>
        /// AZ of subnet being created for Insane Mode Transit HA Gateway.
        /// </summary>
        public readonly string HaInsaneModeAz;
        /// <summary>
        /// Transit gateway lan interface cidr for the HA gateway.
        /// </summary>
        public readonly string HaLanInterfaceCidr;
        /// <summary>
        /// HA OOB availability zone.
        /// </summary>
        public readonly string HaOobAvailabilityZone;
        /// <summary>
        /// HA OOB management subnet.
        /// </summary>
        public readonly string HaOobManagementSubnet;
        /// <summary>
        /// Private IP address that assigned to the HA Transit Gateway.
        /// </summary>
        public readonly string HaPrivateIp;
        /// <summary>
        /// Public IP address that assigned to the HA Transit Gateway.
        /// </summary>
        public readonly string HaPublicIp;
        /// <summary>
        /// HA security group used for the transit gateway.
        /// </summary>
        public readonly string HaSecurityGroupId;
        /// <summary>
        /// The software version of the HA gateway.
        /// </summary>
        public readonly string HaSoftwareVersion;
        /// <summary>
        /// HA Subnet.
        /// </summary>
        public readonly string HaSubnet;
        /// <summary>
        /// HA Zone.
        /// </summary>
        public readonly string HaZone;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        /// <summary>
        /// The image version of the gateway.
        /// </summary>
        public readonly string ImageVersion;
        /// <summary>
        /// Status of Insane Mode of the transit gateway.
        /// </summary>
        public readonly bool InsaneMode;
        /// <summary>
        /// AZ of subnet being created for Insane Mode transit gateway.
        /// </summary>
        public readonly string InsaneModeAz;
        /// <summary>
        /// Transit gateway lan interface cidr.
        /// </summary>
        public readonly string LanInterfaceCidr;
        /// <summary>
        /// LAN Private Subnet for GCP Transit FireNet.
        /// </summary>
        public readonly string LanPrivateSubnet;
        /// <summary>
        /// LAN VPC ID for GCP Transit FireNet.
        /// </summary>
        public readonly string LanVpcId;
        /// <summary>
        /// Learned CIDRs approval mode.
        /// </summary>
        public readonly string LearnedCidrsApprovalMode;
        /// <summary>
        /// Local ASN number.
        /// </summary>
        public readonly string LocalAsNumber;
        /// <summary>
        /// A set of monitored instance IDs.
        /// </summary>
        public readonly ImmutableArray<string> MonitorExcludeLists;
        /// <summary>
        /// OOB availability zone.
        /// </summary>
        public readonly string OobAvailabilityZone;
        /// <summary>
        /// OOB management subnet.
        /// </summary>
        public readonly string OobManagementSubnet;
        /// <summary>
        /// List of AS numbers to populate BGP AP_PATH field when it advertises to VGW or peer devices.
        /// </summary>
        public readonly ImmutableArray<string> PrependAsPaths;
        /// <summary>
        /// Private IP address of the transit gateway created.
        /// </summary>
        public readonly string PrivateIp;
        /// <summary>
        /// Public IP address of the Transit Gateway created.
        /// </summary>
        public readonly string PublicIp;
        /// <summary>
        /// Security group used for the transit gateway.
        /// </summary>
        public readonly string SecurityGroupId;
        /// <summary>
        /// Status of Single AZ HA of transit gateway.
        /// </summary>
        public readonly bool SingleAzHa;
        /// <summary>
        /// Status of Single IP Source Nat mode of the transit gateway.
        /// </summary>
        public readonly bool SingleIpSnat;
        /// <summary>
        /// The software version of the gateway.
        /// </summary>
        public readonly string SoftwareVersion;
        /// <summary>
        /// Price for spot instance.
        /// </summary>
        public readonly string SpotPrice;
        /// <summary>
        /// Subnet Info.
        /// </summary>
        public readonly string Subnet;
        /// <summary>
        /// Instance tag of cloud provider.
        /// </summary>
        public readonly ImmutableArray<string> TagLists;
        public readonly ImmutableDictionary<string, string> Tags;
        public readonly int TunnelDetectionTime;
        /// <summary>
        /// VPC-ID of GCP cloud provider.
        /// </summary>
        public readonly string VpcId;
        /// <summary>
        /// Region of cloud provider.
        /// </summary>
        public readonly string VpcReg;
        /// <summary>
        /// Availability Zone for Azure.
        /// </summary>
        public readonly string Zone;

        [OutputConstructor]
        private GetAviatrixTransitGatewayResult(
            string accountName,

            bool allocateNewEip,

            ImmutableArray<string> approvedLearnedCidrs,

            string availabilityDomain,

            string azureEipNameResourceGroup,

            bool bgpEcmp,

            int bgpHoldTime,

            ImmutableArray<Outputs.GetAviatrixTransitGatewayBgpLanInterfaceResult> bgpLanInterfaces,

            ImmutableArray<string> bgpLanIpLists,

            string bgpManualSpokeAdvertiseCidrs,

            string bgpPollingTime,

            string cloudInstanceId,

            int cloudType,

            bool connectedTransit,

            string customizedSpokeVpcRoutes,

            ImmutableArray<string> customizedTransitVpcRoutes,

            string eip,

            bool enableActiveStandby,

            bool enableActiveStandbyPreemptive,

            bool enableAdvertiseTransitCidr,

            bool enableBgpOverLan,

            bool enableEgressTransitFirenet,

            bool enableEncryptVolume,

            bool enableFirenet,

            bool enableGatewayLoadBalancer,

            bool enableHybridConnection,

            bool enableJumboFrame,

            bool enableLearnedCidrsApproval,

            bool enableMonitorGatewaySubnets,

            bool enableMultiTierTransit,

            bool enablePrivateOob,

            bool enableSegmentation,

            bool enableSpotInstance,

            bool enableTransitFirenet,

            bool enableTransitSummarizeCidrToTgw,

            bool enableVpcDnsServer,

            string excludedAdvertisedSpokeRoutes,

            string faultDomain,

            string filteredSpokeVpcRoutes,

            string gwName,

            string gwSize,

            string haAvailabilityDomain,

            string haAzureEipNameResourceGroup,

            ImmutableArray<Outputs.GetAviatrixTransitGatewayHaBgpLanInterfaceResult> haBgpLanInterfaces,

            ImmutableArray<string> haBgpLanIpLists,

            string haCloudInstanceId,

            string haEip,

            string haFaultDomain,

            string haGwName,

            string haGwSize,

            string haImageVersion,

            string haInsaneModeAz,

            string haLanInterfaceCidr,

            string haOobAvailabilityZone,

            string haOobManagementSubnet,

            string haPrivateIp,

            string haPublicIp,

            string haSecurityGroupId,

            string haSoftwareVersion,

            string haSubnet,

            string haZone,

            string id,

            string imageVersion,

            bool insaneMode,

            string insaneModeAz,

            string lanInterfaceCidr,

            string lanPrivateSubnet,

            string lanVpcId,

            string learnedCidrsApprovalMode,

            string localAsNumber,

            ImmutableArray<string> monitorExcludeLists,

            string oobAvailabilityZone,

            string oobManagementSubnet,

            ImmutableArray<string> prependAsPaths,

            string privateIp,

            string publicIp,

            string securityGroupId,

            bool singleAzHa,

            bool singleIpSnat,

            string softwareVersion,

            string spotPrice,

            string subnet,

            ImmutableArray<string> tagLists,

            ImmutableDictionary<string, string> tags,

            int tunnelDetectionTime,

            string vpcId,

            string vpcReg,

            string zone)
        {
            AccountName = accountName;
            AllocateNewEip = allocateNewEip;
            ApprovedLearnedCidrs = approvedLearnedCidrs;
            AvailabilityDomain = availabilityDomain;
            AzureEipNameResourceGroup = azureEipNameResourceGroup;
            BgpEcmp = bgpEcmp;
            BgpHoldTime = bgpHoldTime;
            BgpLanInterfaces = bgpLanInterfaces;
            BgpLanIpLists = bgpLanIpLists;
            BgpManualSpokeAdvertiseCidrs = bgpManualSpokeAdvertiseCidrs;
            BgpPollingTime = bgpPollingTime;
            CloudInstanceId = cloudInstanceId;
            CloudType = cloudType;
            ConnectedTransit = connectedTransit;
            CustomizedSpokeVpcRoutes = customizedSpokeVpcRoutes;
            CustomizedTransitVpcRoutes = customizedTransitVpcRoutes;
            Eip = eip;
            EnableActiveStandby = enableActiveStandby;
            EnableActiveStandbyPreemptive = enableActiveStandbyPreemptive;
            EnableAdvertiseTransitCidr = enableAdvertiseTransitCidr;
            EnableBgpOverLan = enableBgpOverLan;
            EnableEgressTransitFirenet = enableEgressTransitFirenet;
            EnableEncryptVolume = enableEncryptVolume;
            EnableFirenet = enableFirenet;
            EnableGatewayLoadBalancer = enableGatewayLoadBalancer;
            EnableHybridConnection = enableHybridConnection;
            EnableJumboFrame = enableJumboFrame;
            EnableLearnedCidrsApproval = enableLearnedCidrsApproval;
            EnableMonitorGatewaySubnets = enableMonitorGatewaySubnets;
            EnableMultiTierTransit = enableMultiTierTransit;
            EnablePrivateOob = enablePrivateOob;
            EnableSegmentation = enableSegmentation;
            EnableSpotInstance = enableSpotInstance;
            EnableTransitFirenet = enableTransitFirenet;
            EnableTransitSummarizeCidrToTgw = enableTransitSummarizeCidrToTgw;
            EnableVpcDnsServer = enableVpcDnsServer;
            ExcludedAdvertisedSpokeRoutes = excludedAdvertisedSpokeRoutes;
            FaultDomain = faultDomain;
            FilteredSpokeVpcRoutes = filteredSpokeVpcRoutes;
            GwName = gwName;
            GwSize = gwSize;
            HaAvailabilityDomain = haAvailabilityDomain;
            HaAzureEipNameResourceGroup = haAzureEipNameResourceGroup;
            HaBgpLanInterfaces = haBgpLanInterfaces;
            HaBgpLanIpLists = haBgpLanIpLists;
            HaCloudInstanceId = haCloudInstanceId;
            HaEip = haEip;
            HaFaultDomain = haFaultDomain;
            HaGwName = haGwName;
            HaGwSize = haGwSize;
            HaImageVersion = haImageVersion;
            HaInsaneModeAz = haInsaneModeAz;
            HaLanInterfaceCidr = haLanInterfaceCidr;
            HaOobAvailabilityZone = haOobAvailabilityZone;
            HaOobManagementSubnet = haOobManagementSubnet;
            HaPrivateIp = haPrivateIp;
            HaPublicIp = haPublicIp;
            HaSecurityGroupId = haSecurityGroupId;
            HaSoftwareVersion = haSoftwareVersion;
            HaSubnet = haSubnet;
            HaZone = haZone;
            Id = id;
            ImageVersion = imageVersion;
            InsaneMode = insaneMode;
            InsaneModeAz = insaneModeAz;
            LanInterfaceCidr = lanInterfaceCidr;
            LanPrivateSubnet = lanPrivateSubnet;
            LanVpcId = lanVpcId;
            LearnedCidrsApprovalMode = learnedCidrsApprovalMode;
            LocalAsNumber = localAsNumber;
            MonitorExcludeLists = monitorExcludeLists;
            OobAvailabilityZone = oobAvailabilityZone;
            OobManagementSubnet = oobManagementSubnet;
            PrependAsPaths = prependAsPaths;
            PrivateIp = privateIp;
            PublicIp = publicIp;
            SecurityGroupId = securityGroupId;
            SingleAzHa = singleAzHa;
            SingleIpSnat = singleIpSnat;
            SoftwareVersion = softwareVersion;
            SpotPrice = spotPrice;
            Subnet = subnet;
            TagLists = tagLists;
            Tags = tags;
            TunnelDetectionTime = tunnelDetectionTime;
            VpcId = vpcId;
            VpcReg = vpcReg;
            Zone = zone;
        }
    }
}
