// *** 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.Vcd
{
    public static class GetNsxtAlbPool
    {
        public static Task<GetNsxtAlbPoolResult> InvokeAsync(GetNsxtAlbPoolArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetNsxtAlbPoolResult>("vcd:index/getNsxtAlbPool:getNsxtAlbPool", args ?? new GetNsxtAlbPoolArgs(), options.WithDefaults());

        public static Output<GetNsxtAlbPoolResult> Invoke(GetNsxtAlbPoolInvokeArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetNsxtAlbPoolResult>("vcd:index/getNsxtAlbPool:getNsxtAlbPool", args ?? new GetNsxtAlbPoolInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetNsxtAlbPoolArgs : global::Pulumi.InvokeArgs
    {
        [Input("associatedVirtualServiceIds")]
        private List<string>? _associatedVirtualServiceIds;
        public List<string> AssociatedVirtualServiceIds
        {
            get => _associatedVirtualServiceIds ?? (_associatedVirtualServiceIds = new List<string>());
            set => _associatedVirtualServiceIds = value;
        }

        [Input("edgeGatewayId", required: true)]
        public string EdgeGatewayId { get; set; } = null!;

        [Input("name", required: true)]
        public string Name { get; set; } = null!;

        [Input("org")]
        public string? Org { get; set; }

        [Input("passiveMonitoringEnabled")]
        public bool? PassiveMonitoringEnabled { get; set; }

        [Input("vdc")]
        public string? Vdc { get; set; }

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

    public sealed class GetNsxtAlbPoolInvokeArgs : global::Pulumi.InvokeArgs
    {
        [Input("associatedVirtualServiceIds")]
        private InputList<string>? _associatedVirtualServiceIds;
        public InputList<string> AssociatedVirtualServiceIds
        {
            get => _associatedVirtualServiceIds ?? (_associatedVirtualServiceIds = new InputList<string>());
            set => _associatedVirtualServiceIds = value;
        }

        [Input("edgeGatewayId", required: true)]
        public Input<string> EdgeGatewayId { get; set; } = null!;

        [Input("name", required: true)]
        public Input<string> Name { get; set; } = null!;

        [Input("org")]
        public Input<string>? Org { get; set; }

        [Input("passiveMonitoringEnabled")]
        public Input<bool>? PassiveMonitoringEnabled { get; set; }

        [Input("vdc")]
        public Input<string>? Vdc { get; set; }

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


    [OutputType]
    public sealed class GetNsxtAlbPoolResult
    {
        public readonly string Algorithm;
        public readonly ImmutableArray<string> AssociatedVirtualServiceIds;
        public readonly ImmutableArray<string> AssociatedVirtualServices;
        public readonly ImmutableArray<string> CaCertificateIds;
        public readonly bool CnCheckEnabled;
        public readonly int DefaultPort;
        public readonly string Description;
        public readonly ImmutableArray<string> DomainNames;
        public readonly string EdgeGatewayId;
        public readonly bool Enabled;
        public readonly int EnabledMemberCount;
        public readonly int GracefulTimeoutPeriod;
        public readonly string HealthMessage;
        public readonly ImmutableArray<Outputs.GetNsxtAlbPoolHealthMonitorResult> HealthMonitors;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly int MemberCount;
        public readonly ImmutableArray<Outputs.GetNsxtAlbPoolMemberResult> Members;
        public readonly string Name;
        public readonly string? Org;
        public readonly bool? PassiveMonitoringEnabled;
        public readonly ImmutableArray<Outputs.GetNsxtAlbPoolPersistenceProfileResult> PersistenceProfiles;
        public readonly int UpMemberCount;
        public readonly string Vdc;

        [OutputConstructor]
        private GetNsxtAlbPoolResult(
            string algorithm,

            ImmutableArray<string> associatedVirtualServiceIds,

            ImmutableArray<string> associatedVirtualServices,

            ImmutableArray<string> caCertificateIds,

            bool cnCheckEnabled,

            int defaultPort,

            string description,

            ImmutableArray<string> domainNames,

            string edgeGatewayId,

            bool enabled,

            int enabledMemberCount,

            int gracefulTimeoutPeriod,

            string healthMessage,

            ImmutableArray<Outputs.GetNsxtAlbPoolHealthMonitorResult> healthMonitors,

            string id,

            int memberCount,

            ImmutableArray<Outputs.GetNsxtAlbPoolMemberResult> members,

            string name,

            string? org,

            bool? passiveMonitoringEnabled,

            ImmutableArray<Outputs.GetNsxtAlbPoolPersistenceProfileResult> persistenceProfiles,

            int upMemberCount,

            string vdc)
        {
            Algorithm = algorithm;
            AssociatedVirtualServiceIds = associatedVirtualServiceIds;
            AssociatedVirtualServices = associatedVirtualServices;
            CaCertificateIds = caCertificateIds;
            CnCheckEnabled = cnCheckEnabled;
            DefaultPort = defaultPort;
            Description = description;
            DomainNames = domainNames;
            EdgeGatewayId = edgeGatewayId;
            Enabled = enabled;
            EnabledMemberCount = enabledMemberCount;
            GracefulTimeoutPeriod = gracefulTimeoutPeriod;
            HealthMessage = healthMessage;
            HealthMonitors = healthMonitors;
            Id = id;
            MemberCount = memberCount;
            Members = members;
            Name = name;
            Org = org;
            PassiveMonitoringEnabled = passiveMonitoringEnabled;
            PersistenceProfiles = persistenceProfiles;
            UpMemberCount = upMemberCount;
            Vdc = vdc;
        }
    }
}
