<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;

namespace Pulumi.Kops
{
    public static class GetInstanceGroup
    {
        public static Task<GetInstanceGroupResult> InvokeAsync(GetInstanceGroupArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.InvokeAsync<GetInstanceGroupResult>("kops:index/getInstanceGroup:getInstanceGroup", args ?? new GetInstanceGroupArgs(), options.WithDefaults());

        public static Output<GetInstanceGroupResult> Invoke(GetInstanceGroupInvokeArgs args, InvokeOptions? options = null)
            => Pulumi.Deployment.Instance.Invoke<GetInstanceGroupResult>("kops:index/getInstanceGroup:getInstanceGroup", args ?? new GetInstanceGroupInvokeArgs(), options.WithDefaults());
    }


    public sealed class GetInstanceGroupArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// - String - ClusterName defines the cluster name the instance group belongs to.
        /// </summary>
        [Input("clusterName", required: true)]
        public string ClusterName { get; set; } = null!;

        /// <summary>
        /// - String - Name defines the instance group name.
        /// </summary>
        [Input("name", required: true)]
        public string Name { get; set; } = null!;

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

    public sealed class GetInstanceGroupInvokeArgs : global::Pulumi.InvokeArgs
    {
        /// <summary>
        /// - String - ClusterName defines the cluster name the instance group belongs to.
        /// </summary>
        [Input("clusterName", required: true)]
        public Input<string> ClusterName { get; set; } = null!;

        /// <summary>
        /// - String - Name defines the instance group name.
        /// </summary>
        [Input("name", required: true)]
        public Input<string> Name { get; set; } = null!;

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


    [OutputType]
    public sealed class GetInstanceGroupResult
    {
        public readonly ImmutableArray<string> AdditionalSecurityGroups;
        public readonly ImmutableArray<Outputs.GetInstanceGroupAdditionalUserDataResult> AdditionalUserDatas;
        public readonly ImmutableDictionary<string, string> Annotations;
        public readonly bool AssociatePublicIp;
        public readonly bool Autoscale;
        public readonly ImmutableDictionary<string, string> CloudLabels;
        public readonly string ClusterName;
        public readonly bool CompressUserData;
        public readonly ImmutableArray<Outputs.GetInstanceGroupContainerdResult> Containerds;
        public readonly string CpuCredits;
        public readonly bool DetailedInstanceMonitoring;
        public readonly ImmutableArray<Outputs.GetInstanceGroupExternalLoadBalancerResult> ExternalLoadBalancers;
        public readonly ImmutableArray<Outputs.GetInstanceGroupFileAssetResult> FileAssets;
        public readonly string GcpProvisioningModel;
        public readonly ImmutableArray<Outputs.GetInstanceGroupGuestAcceleratorResult> GuestAccelerators;
        public readonly ImmutableArray<Outputs.GetInstanceGroupHookResult> Hooks;
        public readonly ImmutableArray<Outputs.GetInstanceGroupIamResult> Iams;
        /// <summary>
        /// The provider-assigned unique ID for this managed resource.
        /// </summary>
        public readonly string Id;
        public readonly string Image;
        public readonly string InstanceInterruptionBehavior;
        public readonly ImmutableArray<Outputs.GetInstanceGroupInstanceMetadataResult> InstanceMetadatas;
        public readonly bool InstanceProtection;
        public readonly ImmutableArray<Outputs.GetInstanceGroupKubeletResult> Kubelets;
        public readonly ImmutableDictionary<string, string> Labels;
        public readonly string MachineType;
        public readonly string Manager;
        public readonly string MaxInstanceLifetime;
        public readonly string MaxPrice;
        public readonly int MaxSize;
        public readonly int MinSize;
        public readonly ImmutableArray<Outputs.GetInstanceGroupMixedInstancesPolicyResult> MixedInstancesPolicies;
        public readonly string Name;
        public readonly ImmutableDictionary<string, string> NodeLabels;
        public readonly ImmutableArray<string> Packages;
        public readonly string Role;
        public readonly ImmutableArray<Outputs.GetInstanceGroupRollingUpdateResult> RollingUpdates;
        public readonly bool RootVolumeEncryption;
        public readonly string RootVolumeEncryptionKey;
        public readonly int RootVolumeIops;
        public readonly bool RootVolumeOptimization;
        public readonly int RootVolumeSize;
        public readonly int RootVolumeThroughput;
        public readonly string RootVolumeType;
        public readonly string SecurityGroupOverride;
        public readonly int SpotDurationInMinutes;
        public readonly ImmutableArray<string> Subnets;
        public readonly ImmutableArray<string> SuspendProcesses;
        public readonly ImmutableArray<string> SysctlParameters;
        public readonly ImmutableArray<string> Taints;
        public readonly string Tenancy;
        public readonly string UpdatePolicy;
        public readonly ImmutableArray<Outputs.GetInstanceGroupVolumeMountResult> VolumeMounts;
        public readonly ImmutableArray<Outputs.GetInstanceGroupVolumeResult> Volumes;
        public readonly ImmutableArray<Outputs.GetInstanceGroupWarmPoolResult> WarmPools;
        public readonly ImmutableArray<string> Zones;

        [OutputConstructor]
        private GetInstanceGroupResult(
            ImmutableArray<string> additionalSecurityGroups,

            ImmutableArray<Outputs.GetInstanceGroupAdditionalUserDataResult> additionalUserDatas,

            ImmutableDictionary<string, string> annotations,

            bool associatePublicIp,

            bool autoscale,

            ImmutableDictionary<string, string> cloudLabels,

            string clusterName,

            bool compressUserData,

            ImmutableArray<Outputs.GetInstanceGroupContainerdResult> containerds,

            string cpuCredits,

            bool detailedInstanceMonitoring,

            ImmutableArray<Outputs.GetInstanceGroupExternalLoadBalancerResult> externalLoadBalancers,

            ImmutableArray<Outputs.GetInstanceGroupFileAssetResult> fileAssets,

            string gcpProvisioningModel,

            ImmutableArray<Outputs.GetInstanceGroupGuestAcceleratorResult> guestAccelerators,

            ImmutableArray<Outputs.GetInstanceGroupHookResult> hooks,

            ImmutableArray<Outputs.GetInstanceGroupIamResult> iams,

            string id,

            string image,

            string instanceInterruptionBehavior,

            ImmutableArray<Outputs.GetInstanceGroupInstanceMetadataResult> instanceMetadatas,

            bool instanceProtection,

            ImmutableArray<Outputs.GetInstanceGroupKubeletResult> kubelets,

            ImmutableDictionary<string, string> labels,

            string machineType,

            string manager,

            string maxInstanceLifetime,

            string maxPrice,

            int maxSize,

            int minSize,

            ImmutableArray<Outputs.GetInstanceGroupMixedInstancesPolicyResult> mixedInstancesPolicies,

            string name,

            ImmutableDictionary<string, string> nodeLabels,

            ImmutableArray<string> packages,

            string role,

            ImmutableArray<Outputs.GetInstanceGroupRollingUpdateResult> rollingUpdates,

            bool rootVolumeEncryption,

            string rootVolumeEncryptionKey,

            int rootVolumeIops,

            bool rootVolumeOptimization,

            int rootVolumeSize,

            int rootVolumeThroughput,

            string rootVolumeType,

            string securityGroupOverride,

            int spotDurationInMinutes,

            ImmutableArray<string> subnets,

            ImmutableArray<string> suspendProcesses,

            ImmutableArray<string> sysctlParameters,

            ImmutableArray<string> taints,

            string tenancy,

            string updatePolicy,

            ImmutableArray<Outputs.GetInstanceGroupVolumeMountResult> volumeMounts,

            ImmutableArray<Outputs.GetInstanceGroupVolumeResult> volumes,

            ImmutableArray<Outputs.GetInstanceGroupWarmPoolResult> warmPools,

            ImmutableArray<string> zones)
        {
            AdditionalSecurityGroups = additionalSecurityGroups;
            AdditionalUserDatas = additionalUserDatas;
            Annotations = annotations;
            AssociatePublicIp = associatePublicIp;
            Autoscale = autoscale;
            CloudLabels = cloudLabels;
            ClusterName = clusterName;
            CompressUserData = compressUserData;
            Containerds = containerds;
            CpuCredits = cpuCredits;
            DetailedInstanceMonitoring = detailedInstanceMonitoring;
            ExternalLoadBalancers = externalLoadBalancers;
            FileAssets = fileAssets;
            GcpProvisioningModel = gcpProvisioningModel;
            GuestAccelerators = guestAccelerators;
            Hooks = hooks;
            Iams = iams;
            Id = id;
            Image = image;
            InstanceInterruptionBehavior = instanceInterruptionBehavior;
            InstanceMetadatas = instanceMetadatas;
            InstanceProtection = instanceProtection;
            Kubelets = kubelets;
            Labels = labels;
            MachineType = machineType;
            Manager = manager;
            MaxInstanceLifetime = maxInstanceLifetime;
            MaxPrice = maxPrice;
            MaxSize = maxSize;
            MinSize = minSize;
            MixedInstancesPolicies = mixedInstancesPolicies;
            Name = name;
            NodeLabels = nodeLabels;
            Packages = packages;
            Role = role;
            RollingUpdates = rollingUpdates;
            RootVolumeEncryption = rootVolumeEncryption;
            RootVolumeEncryptionKey = rootVolumeEncryptionKey;
            RootVolumeIops = rootVolumeIops;
            RootVolumeOptimization = rootVolumeOptimization;
            RootVolumeSize = rootVolumeSize;
            RootVolumeThroughput = rootVolumeThroughput;
            RootVolumeType = rootVolumeType;
            SecurityGroupOverride = securityGroupOverride;
            SpotDurationInMinutes = spotDurationInMinutes;
            Subnets = subnets;
            SuspendProcesses = suspendProcesses;
            SysctlParameters = sysctlParameters;
            Taints = taints;
            Tenancy = tenancy;
            UpdatePolicy = updatePolicy;
            VolumeMounts = volumeMounts;
            Volumes = volumes;
            WarmPools = warmPools;
            Zones = zones;
        }
    }
}
