<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 PiersKarsenbarg.Nutanix
{
    public static class GetHost
    {
        /// <summary>
        /// Describes a Host
        /// </summary>
        public static Task<GetHostResult> InvokeAsync(GetHostArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetHostResult>("nutanix:index/getHost:getHost", args ?? new GetHostArgs(), options.WithDefaults());

        /// <summary>
        /// Describes a Host
        /// </summary>
        public static Output<GetHostResult> Invoke(GetHostInvokeArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetHostResult>("nutanix:index/getHost:getHost", args ?? new GetHostInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetHostArgs : Pulumi.InvokeArgs
    {
        [Input("categories")]
        private List<Inputs.GetHostCategoryArgs>? _categories;
        public List<Inputs.GetHostCategoryArgs> Categories
        {
            get => _categories ?? (_categories = new List<Inputs.GetHostCategoryArgs>());
            set => _categories = value;
        }

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

        public GetHostArgs()
        {
        }
    }

    public sealed class GetHostInvokeArgs : Pulumi.InvokeArgs
    {
        [Input("categories")]
        private InputList<Inputs.GetHostCategoryInputArgs>? _categories;
        public InputList<Inputs.GetHostCategoryInputArgs> Categories
        {
            get => _categories ?? (_categories = new InputList<Inputs.GetHostCategoryInputArgs>());
            set => _categories = value;
        }

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

        public GetHostInvokeArgs()
        {
        }
    }


    [OutputType]
    public sealed class GetHostResult
    {
        /// <summary>
        /// The API version.
        /// * `gpu_driver_version`: - Host GPU driver version.
        /// * `failover_cluster`: - Hyper-V failover cluster.
        /// * `ipmi`: - Host IPMI info.
        /// * `cpu_model`: - Host CPU model.
        /// * `host_nics_id_list`: - Host NICs.
        /// * `num_cpu_sockets`: - Number of CPU sockets.
        /// * `windows_domain`: - The name of the node to be renamed to during domain-join. If not given,a new name will be automatically assigned.
        /// * `gpu_list`: - List of GPUs on the host.
        /// * `serial_number`: - Node serial number.
        /// * `cpu_capacity_hz`: - Host CPU capacity.
        /// * `memory_capacity_mib`: - Host memory capacity in MiB.
        /// * `host_disks_reference_list`: - The reference to a disk.
        /// * `monitoring_state`: - Host monitoring status.
        /// * `hypervisor`: - Host Hypervisor information.
        /// * `host_type`: - Host type.
        /// * `num_cpu_cores`: - Number of CPU cores on Host.
        /// * `rackable_unit_reference`: - The reference to a rackable_unit.
        /// * `controller_vm`: - Host controller vm information.
        /// * `block`: - Host block config info.
        /// </summary>
        public readonly string ApiVersion;
        public readonly ImmutableDictionary<string, string> Block;
        public readonly ImmutableArray<Outputs.GetHostCategoryResult> Categories;
        public readonly ImmutableDictionary<string, string> ClusterReference;
        public readonly ImmutableDictionary<string, string> ControllerVm;
        public readonly int CpuCapacityHz;
        public readonly string CpuModel;
        public readonly ImmutableDictionary<string, string> FailoverCluster;
        public readonly string GpuDriverVersion;
        public readonly ImmutableArray<Outputs.GetHostGpuListResult> GpuLists;
        public readonly ImmutableArray<Outputs.GetHostHostDisksReferenceListResult> HostDisksReferenceLists;
        public readonly string HostId;
        public readonly ImmutableArray<string> HostNicsIdLists;
        public readonly string HostType;
        public readonly ImmutableDictionary<string, string> Hypervisor;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly ImmutableDictionary<string, string> Ipmi;
        public readonly int MemoryCapacityMib;
        public readonly ImmutableDictionary<string, string> Metadata;
        public readonly string MonitoringState;
        public readonly string Name;
        public readonly int NumCpuCores;
        public readonly int NumCpuSockets;
        public readonly ImmutableDictionary<string, string> OwnerReference;
        public readonly ImmutableDictionary<string, string> ProjectReference;
        public readonly ImmutableDictionary<string, string> RackableUnitReference;
        public readonly string SerialNumber;
        public readonly ImmutableDictionary<string, string> WindowsDomain;

        [OutputConstructor]
        private GetHostResult(
            string apiVersion,

            ImmutableDictionary<string, string> block,

            ImmutableArray<Outputs.GetHostCategoryResult> categories,

            ImmutableDictionary<string, string> clusterReference,

            ImmutableDictionary<string, string> controllerVm,

            int cpuCapacityHz,

            string cpuModel,

            ImmutableDictionary<string, string> failoverCluster,

            string gpuDriverVersion,

            ImmutableArray<Outputs.GetHostGpuListResult> gpuLists,

            ImmutableArray<Outputs.GetHostHostDisksReferenceListResult> hostDisksReferenceLists,

            string hostId,

            ImmutableArray<string> hostNicsIdLists,

            string hostType,

            ImmutableDictionary<string, string> hypervisor,

            string id,

            ImmutableDictionary<string, string> ipmi,

            int memoryCapacityMib,

            ImmutableDictionary<string, string> metadata,

            string monitoringState,

            string name,

            int numCpuCores,

            int numCpuSockets,

            ImmutableDictionary<string, string> ownerReference,

            ImmutableDictionary<string, string> projectReference,

            ImmutableDictionary<string, string> rackableUnitReference,

            string serialNumber,

            ImmutableDictionary<string, string> windowsDomain)
        {
            ApiVersion = apiVersion;
            Block = block;
            Categories = categories;
            ClusterReference = clusterReference;
            ControllerVm = controllerVm;
            CpuCapacityHz = cpuCapacityHz;
            CpuModel = cpuModel;
            FailoverCluster = failoverCluster;
            GpuDriverVersion = gpuDriverVersion;
            GpuLists = gpuLists;
            HostDisksReferenceLists = hostDisksReferenceLists;
            HostId = hostId;
            HostNicsIdLists = hostNicsIdLists;
            HostType = hostType;
            Hypervisor = hypervisor;
            Id = id;
            Ipmi = ipmi;
            MemoryCapacityMib = memoryCapacityMib;
            Metadata = metadata;
            MonitoringState = monitoringState;
            Name = name;
            NumCpuCores = numCpuCores;
            NumCpuSockets = numCpuSockets;
            OwnerReference = ownerReference;
            ProjectReference = projectReference;
            RackableUnitReference = rackableUnitReference;
            SerialNumber = serialNumber;
            WindowsDomain = windowsDomain;
        }
    }
}
