// *** WARNING: this file was generated by pulumi-java-gen. ***
// *** Do not edit by hand unless you're certain you know what you are doing! ***

package com.pulumi.aws.ec2.inputs;

import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.String;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


public final class LaunchTemplatePrivateDnsNameOptionsArgs extends com.pulumi.resources.ResourceArgs {

    public static final LaunchTemplatePrivateDnsNameOptionsArgs Empty = new LaunchTemplatePrivateDnsNameOptionsArgs();

    /**
     * Indicates whether to respond to DNS queries for instance hostnames with DNS A records.
     * 
     */
    @Import(name="enableResourceNameDnsARecord")
    private @Nullable Output<Boolean> enableResourceNameDnsARecord;

    /**
     * @return Indicates whether to respond to DNS queries for instance hostnames with DNS A records.
     * 
     */
    public Optional<Output<Boolean>> enableResourceNameDnsARecord() {
        return Optional.ofNullable(this.enableResourceNameDnsARecord);
    }

    /**
     * Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.
     * 
     */
    @Import(name="enableResourceNameDnsAaaaRecord")
    private @Nullable Output<Boolean> enableResourceNameDnsAaaaRecord;

    /**
     * @return Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.
     * 
     */
    public Optional<Output<Boolean>> enableResourceNameDnsAaaaRecord() {
        return Optional.ofNullable(this.enableResourceNameDnsAaaaRecord);
    }

    /**
     * The type of hostname for Amazon EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 native subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. Valid values: `ip-name` and `resource-name`.
     * 
     */
    @Import(name="hostnameType")
    private @Nullable Output<String> hostnameType;

    /**
     * @return The type of hostname for Amazon EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 native subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. Valid values: `ip-name` and `resource-name`.
     * 
     */
    public Optional<Output<String>> hostnameType() {
        return Optional.ofNullable(this.hostnameType);
    }

    private LaunchTemplatePrivateDnsNameOptionsArgs() {}

    private LaunchTemplatePrivateDnsNameOptionsArgs(LaunchTemplatePrivateDnsNameOptionsArgs $) {
        this.enableResourceNameDnsARecord = $.enableResourceNameDnsARecord;
        this.enableResourceNameDnsAaaaRecord = $.enableResourceNameDnsAaaaRecord;
        this.hostnameType = $.hostnameType;
    }

    public static Builder builder() {
        return new Builder();
    }
    public static Builder builder(LaunchTemplatePrivateDnsNameOptionsArgs defaults) {
        return new Builder(defaults);
    }

    public static final class Builder {
        private LaunchTemplatePrivateDnsNameOptionsArgs $;

        public Builder() {
            $ = new LaunchTemplatePrivateDnsNameOptionsArgs();
        }

        public Builder(LaunchTemplatePrivateDnsNameOptionsArgs defaults) {
            $ = new LaunchTemplatePrivateDnsNameOptionsArgs(Objects.requireNonNull(defaults));
        }

        /**
         * @param enableResourceNameDnsARecord Indicates whether to respond to DNS queries for instance hostnames with DNS A records.
         * 
         * @return builder
         * 
         */
        public Builder enableResourceNameDnsARecord(@Nullable Output<Boolean> enableResourceNameDnsARecord) {
            $.enableResourceNameDnsARecord = enableResourceNameDnsARecord;
            return this;
        }

        /**
         * @param enableResourceNameDnsARecord Indicates whether to respond to DNS queries for instance hostnames with DNS A records.
         * 
         * @return builder
         * 
         */
        public Builder enableResourceNameDnsARecord(Boolean enableResourceNameDnsARecord) {
            return enableResourceNameDnsARecord(Output.of(enableResourceNameDnsARecord));
        }

        /**
         * @param enableResourceNameDnsAaaaRecord Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.
         * 
         * @return builder
         * 
         */
        public Builder enableResourceNameDnsAaaaRecord(@Nullable Output<Boolean> enableResourceNameDnsAaaaRecord) {
            $.enableResourceNameDnsAaaaRecord = enableResourceNameDnsAaaaRecord;
            return this;
        }

        /**
         * @param enableResourceNameDnsAaaaRecord Indicates whether to respond to DNS queries for instance hostnames with DNS AAAA records.
         * 
         * @return builder
         * 
         */
        public Builder enableResourceNameDnsAaaaRecord(Boolean enableResourceNameDnsAaaaRecord) {
            return enableResourceNameDnsAaaaRecord(Output.of(enableResourceNameDnsAaaaRecord));
        }

        /**
         * @param hostnameType The type of hostname for Amazon EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 native subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. Valid values: `ip-name` and `resource-name`.
         * 
         * @return builder
         * 
         */
        public Builder hostnameType(@Nullable Output<String> hostnameType) {
            $.hostnameType = hostnameType;
            return this;
        }

        /**
         * @param hostnameType The type of hostname for Amazon EC2 instances. For IPv4 only subnets, an instance DNS name must be based on the instance IPv4 address. For IPv6 native subnets, an instance DNS name must be based on the instance ID. For dual-stack subnets, you can specify whether DNS names use the instance IPv4 address or the instance ID. Valid values: `ip-name` and `resource-name`.
         * 
         * @return builder
         * 
         */
        public Builder hostnameType(String hostnameType) {
            return hostnameType(Output.of(hostnameType));
        }

        public LaunchTemplatePrivateDnsNameOptionsArgs build() {
            return $;
        }
    }

}
