// *** 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 GetMetalReservedIPBlock
    {
        /// <summary>
        /// Use this data source to find IP address blocks in Equinix Metal. You can use IP address or a block
        /// ID for lookup.
        /// 
        /// &gt; VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.
        /// </summary>
        public static Task<GetMetalReservedIPBlockResult> InvokeAsync(GetMetalReservedIPBlockArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetMetalReservedIPBlockResult>("equinix:index/getMetalReservedIPBlock:GetMetalReservedIPBlock", args ?? new GetMetalReservedIPBlockArgs(), options.WithDefaults());

        /// <summary>
        /// Use this data source to find IP address blocks in Equinix Metal. You can use IP address or a block
        /// ID for lookup.
        /// 
        /// &gt; VRF features are not generally available. The interfaces related to VRF resources may change ahead of general availability.
        /// </summary>
        public static Output<GetMetalReservedIPBlockResult> Invoke(GetMetalReservedIPBlockInvokeArgs? args = null, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetMetalReservedIPBlockResult>("equinix:index/getMetalReservedIPBlock:GetMetalReservedIPBlock", args ?? new GetMetalReservedIPBlockInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetMetalReservedIPBlockArgs : Pulumi.InvokeArgs
    {
        /// <summary>
        /// UUID of the IP address block to look up.
        /// </summary>
        [Input("id")]
        public string? Id { get; set; }

        /// <summary>
        /// Block containing this IP address will be returned.
        /// </summary>
        [Input("ipAddress")]
        public string? IpAddress { get; set; }

        /// <summary>
        /// UUID of the project where the searched block should be.
        /// </summary>
        [Input("projectId")]
        public string? ProjectId { get; set; }

        public GetMetalReservedIPBlockArgs()
        {
        }
    }

    public sealed class GetMetalReservedIPBlockInvokeArgs : Pulumi.InvokeArgs
    {
        /// <summary>
        /// UUID of the IP address block to look up.
        /// </summary>
        [Input("id")]
        public Input<string>? Id { get; set; }

        /// <summary>
        /// Block containing this IP address will be returned.
        /// </summary>
        [Input("ipAddress")]
        public Input<string>? IpAddress { get; set; }

        /// <summary>
        /// UUID of the project where the searched block should be.
        /// </summary>
        [Input("projectId")]
        public Input<string>? ProjectId { get; set; }

        public GetMetalReservedIPBlockInvokeArgs()
        {
        }
    }


    [OutputType]
    public sealed class GetMetalReservedIPBlockResult
    {
        public readonly string Address;
        public readonly int AddressFamily;
        public readonly int Cidr;
        public readonly string CidrNotation;
        public readonly string Facility;
        public readonly string Gateway;
        public readonly bool Global;
        public readonly string Id;
        public readonly string? IpAddress;
        public readonly bool Manageable;
        public readonly bool Management;
        public readonly string Metro;
        public readonly string Netmask;
        public readonly string Network;
        public readonly string ProjectId;
        public readonly bool Public;
        public readonly int Quantity;
        /// <summary>
        /// One of `global_ipv4`, `public_ipv4`, `private_ipv4`, `public_ipv6`,or `vrf`
        /// </summary>
        public readonly string Type;
        public readonly int VrfId;

        [OutputConstructor]
        private GetMetalReservedIPBlockResult(
            string address,

            int addressFamily,

            int cidr,

            string cidrNotation,

            string facility,

            string gateway,

            bool global,

            string id,

            string? ipAddress,

            bool manageable,

            bool management,

            string metro,

            string netmask,

            string network,

            string projectId,

            bool @public,

            int quantity,

            string type,

            int vrfId)
        {
            Address = address;
            AddressFamily = addressFamily;
            Cidr = cidr;
            CidrNotation = cidrNotation;
            Facility = facility;
            Gateway = gateway;
            Global = global;
            Id = id;
            IpAddress = ipAddress;
            Manageable = manageable;
            Management = management;
            Metro = metro;
            Netmask = netmask;
            Network = network;
            ProjectId = projectId;
            Public = @public;
            Quantity = quantity;
            Type = type;
            VrfId = vrfId;
        }
    }
}
