// *** 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.Yandex.Inputs
{

    public sealed class KubernetesNodeGroupInstanceTemplateNetworkInterfaceArgs : global::Pulumi.ResourceArgs
    {
        /// <summary>
        /// Allocate an IPv4 address for the interface. The default value is `true`.
        /// </summary>
        [Input("ipv4")]
        public Input<bool>? Ipv4 { get; set; }

        [Input("ipv4DnsRecords")]
        private InputList<Inputs.KubernetesNodeGroupInstanceTemplateNetworkInterfaceIpv4DnsRecordArgs>? _ipv4DnsRecords;

        /// <summary>
        /// List of configurations for creating ipv4 DNS records. The structure is documented below.
        /// </summary>
        public InputList<Inputs.KubernetesNodeGroupInstanceTemplateNetworkInterfaceIpv4DnsRecordArgs> Ipv4DnsRecords
        {
            get => _ipv4DnsRecords ?? (_ipv4DnsRecords = new InputList<Inputs.KubernetesNodeGroupInstanceTemplateNetworkInterfaceIpv4DnsRecordArgs>());
            set => _ipv4DnsRecords = value;
        }

        /// <summary>
        /// If true, allocate an IPv6 address for the interface. The address will be automatically assigned from the specified subnet.
        /// </summary>
        [Input("ipv6")]
        public Input<bool>? Ipv6 { get; set; }

        [Input("ipv6DnsRecords")]
        private InputList<Inputs.KubernetesNodeGroupInstanceTemplateNetworkInterfaceIpv6DnsRecordArgs>? _ipv6DnsRecords;

        /// <summary>
        /// List of configurations for creating ipv6 DNS records. The structure is documented below.
        /// </summary>
        public InputList<Inputs.KubernetesNodeGroupInstanceTemplateNetworkInterfaceIpv6DnsRecordArgs> Ipv6DnsRecords
        {
            get => _ipv6DnsRecords ?? (_ipv6DnsRecords = new InputList<Inputs.KubernetesNodeGroupInstanceTemplateNetworkInterfaceIpv6DnsRecordArgs>());
            set => _ipv6DnsRecords = value;
        }

        /// <summary>
        /// A public address that can be used to access the internet over NAT.
        /// </summary>
        [Input("nat")]
        public Input<bool>? Nat { get; set; }

        [Input("securityGroupIds")]
        private InputList<string>? _securityGroupIds;

        /// <summary>
        /// Security group ids for network interface.
        /// </summary>
        public InputList<string> SecurityGroupIds
        {
            get => _securityGroupIds ?? (_securityGroupIds = new InputList<string>());
            set => _securityGroupIds = value;
        }

        [Input("subnetIds", required: true)]
        private InputList<string>? _subnetIds;

        /// <summary>
        /// The IDs of the subnets.
        /// </summary>
        public InputList<string> SubnetIds
        {
            get => _subnetIds ?? (_subnetIds = new InputList<string>());
            set => _subnetIds = value;
        }

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