<gh_stars>0// *** 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 Cuemby.Equinix
{
    public static class GetNetworkDevicePlatform
    {
        /// <summary>
        /// Use this data source to get Equinix Network Edge device platform configuration details
        /// for a given device type. For further details, check supported
        /// [Network Edge Vendors and Devices](https://docs.equinix.com/en-us/Content/Interconnection/NE/user-guide/NE-vendors-devices.htm).
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using Pulumi;
        /// using Equinix = Pulumi.Equinix;
        /// 
        /// class MyStack : Stack
        /// {
        ///     public MyStack()
        ///     {
        ///         var csrLarge = Output.Create(Equinix.GetNetworkDevicePlatform.InvokeAsync(new Equinix.GetNetworkDevicePlatformArgs
        ///         {
        ///             DeviceType = "CSR1000V",
        ///             Flavor = "large",
        ///             Packages = 
        ///             {
        ///                 "IPBASE",
        ///             },
        ///         }));
        ///     }
        /// 
        /// }
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Task<GetNetworkDevicePlatformResult> InvokeAsync(GetNetworkDevicePlatformArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetNetworkDevicePlatformResult>("equinix:index/getNetworkDevicePlatform:GetNetworkDevicePlatform", args ?? new GetNetworkDevicePlatformArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to get Equinix Network Edge device platform configuration details
        /// for a given device type. For further details, check supported
        /// [Network Edge Vendors and Devices](https://docs.equinix.com/en-us/Content/Interconnection/NE/user-guide/NE-vendors-devices.htm).
        /// 
        /// {{% examples %}}
        /// ## Example Usage
        /// {{% example %}}
        /// 
        /// ```csharp
        /// using Pulumi;
        /// using Equinix = Pulumi.Equinix;
        /// 
        /// class MyStack : Stack
        /// {
        ///     public MyStack()
        ///     {
        ///         var csrLarge = Output.Create(Equinix.GetNetworkDevicePlatform.InvokeAsync(new Equinix.GetNetworkDevicePlatformArgs
        ///         {
        ///             DeviceType = "CSR1000V",
        ///             Flavor = "large",
        ///             Packages = 
        ///             {
        ///                 "IPBASE",
        ///             },
        ///         }));
        ///     }
        /// 
        /// }
        /// ```
        /// {{% /example %}}
        /// {{% /examples %}}
        /// </summary>
        public static Output<GetNetworkDevicePlatformResult> Invoke(GetNetworkDevicePlatformInvokeArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetNetworkDevicePlatformResult>("equinix:index/getNetworkDevicePlatform:GetNetworkDevicePlatform", args ?? new GetNetworkDevicePlatformInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetNetworkDevicePlatformArgs : Pulumi.InvokeArgs
    {
        /// <summary>
        /// Number of CPU cores used to limit platform search results.
        /// </summary>
        [Input("coreCount")]
        public int? CoreCount { get; set; }

        /// <summary>
        /// Device type code
        /// </summary>
        [Input("deviceType", required: true)]
        public string DeviceType { get; set; } = null!;

        /// <summary>
        /// Device platform flavor that determines number of CPU cores and memory.
        /// Supported values are: `small`, `medium`, `large`, `xlarge`.
        /// </summary>
        [Input("flavor")]
        public string? Flavor { get; set; }

        [Input("licenseOptions")]
        private List<string>? _licenseOptions;

        /// <summary>
        /// List of device licensing options to limit platform search result.
        /// Supported values are: `BYOL` (for Bring Your Own License), `Sub` (for license subscription).
        /// </summary>
        public List<string> LicenseOptions
        {
            get => _licenseOptions ?? (_licenseOptions = new List<string>());
            set => _licenseOptions = value;
        }

        [Input("managementTypes")]
        private List<string>? _managementTypes;

        /// <summary>
        /// List of device management types to limit platform search results.
        /// Supported values are: `EQUINIX-CONFIGURED`, `SELF-CONFIGURED`.
        /// </summary>
        public List<string> ManagementTypes
        {
            get => _managementTypes ?? (_managementTypes = new List<string>());
            set => _managementTypes = value;
        }

        [Input("packages")]
        private List<string>? _packages;

        /// <summary>
        /// List of software package codes to limit platform search results.
        /// </summary>
        public List<string> Packages
        {
            get => _packages ?? (_packages = new List<string>());
            set => _packages = value;
        }

        public GetNetworkDevicePlatformArgs()
        {
        }
    }

    public sealed class GetNetworkDevicePlatformInvokeArgs : Pulumi.InvokeArgs
    {
        /// <summary>
        /// Number of CPU cores used to limit platform search results.
        /// </summary>
        [Input("coreCount")]
        public Input<int>? CoreCount { get; set; }

        /// <summary>
        /// Device type code
        /// </summary>
        [Input("deviceType", required: true)]
        public Input<string> DeviceType { get; set; } = null!;

        /// <summary>
        /// Device platform flavor that determines number of CPU cores and memory.
        /// Supported values are: `small`, `medium`, `large`, `xlarge`.
        /// </summary>
        [Input("flavor")]
        public Input<string>? Flavor { get; set; }

        [Input("licenseOptions")]
        private InputList<string>? _licenseOptions;

        /// <summary>
        /// List of device licensing options to limit platform search result.
        /// Supported values are: `BYOL` (for Bring Your Own License), `Sub` (for license subscription).
        /// </summary>
        public InputList<string> LicenseOptions
        {
            get => _licenseOptions ?? (_licenseOptions = new InputList<string>());
            set => _licenseOptions = value;
        }

        [Input("managementTypes")]
        private InputList<string>? _managementTypes;

        /// <summary>
        /// List of device management types to limit platform search results.
        /// Supported values are: `EQUINIX-CONFIGURED`, `SELF-CONFIGURED`.
        /// </summary>
        public InputList<string> ManagementTypes
        {
            get => _managementTypes ?? (_managementTypes = new InputList<string>());
            set => _managementTypes = value;
        }

        [Input("packages")]
        private InputList<string>? _packages;

        /// <summary>
        /// List of software package codes to limit platform search results.
        /// </summary>
        public InputList<string> Packages
        {
            get => _packages ?? (_packages = new InputList<string>());
            set => _packages = value;
        }

        public GetNetworkDevicePlatformInvokeArgs()
        {
        }
    }


    [OutputType]
    public sealed class GetNetworkDevicePlatformResult
    {
        public readonly int CoreCount;
        public readonly string DeviceType;
        public readonly string Flavor;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly ImmutableArray<string> LicenseOptions;
        public readonly ImmutableArray<string> ManagementTypes;
        /// <summary>
        /// The amount of memory provided by device platform.
        /// </summary>
        public readonly int Memory;
        /// <summary>
        /// Unit of memory provider by device platform.
        /// </summary>
        public readonly string MemoryUnit;
        public readonly ImmutableArray<string> Packages;

        [OutputConstructor]
        private GetNetworkDevicePlatformResult(
            int coreCount,

            string deviceType,

            string flavor,

            string id,

            ImmutableArray<string> licenseOptions,

            ImmutableArray<string> managementTypes,

            int memory,

            string memoryUnit,

            ImmutableArray<string> packages)
        {
            CoreCount = coreCount;
            DeviceType = deviceType;
            Flavor = flavor;
            Id = id;
            LicenseOptions = licenseOptions;
            ManagementTypes = managementTypes;
            Memory = memory;
            MemoryUnit = memoryUnit;
            Packages = packages;
        }
    }
}
