All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.aws.opensearch.inputs.DomainState Maven / Gradle / Ivy

// *** 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.opensearch.inputs;

import com.pulumi.aws.opensearch.inputs.DomainAdvancedSecurityOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainAutoTuneOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainClusterConfigArgs;
import com.pulumi.aws.opensearch.inputs.DomainCognitoOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainDomainEndpointOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainEbsOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainEncryptAtRestArgs;
import com.pulumi.aws.opensearch.inputs.DomainLogPublishingOptionArgs;
import com.pulumi.aws.opensearch.inputs.DomainNodeToNodeEncryptionArgs;
import com.pulumi.aws.opensearch.inputs.DomainOffPeakWindowOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainSnapshotOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainSoftwareUpdateOptionsArgs;
import com.pulumi.aws.opensearch.inputs.DomainVpcOptionsArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.String;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.Optional;
import javax.annotation.Nullable;


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

    public static final DomainState Empty = new DomainState();

    /**
     * IAM policy document specifying the access policies for the domain.
     * 
     */
    @Import(name="accessPolicies")
    private @Nullable Output accessPolicies;

    /**
     * @return IAM policy document specifying the access policies for the domain.
     * 
     */
    public Optional> accessPolicies() {
        return Optional.ofNullable(this.accessPolicies);
    }

    /**
     * Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply.
     * 
     */
    @Import(name="advancedOptions")
    private @Nullable Output> advancedOptions;

    /**
     * @return Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply.
     * 
     */
    public Optional>> advancedOptions() {
        return Optional.ofNullable(this.advancedOptions);
    }

    /**
     * Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below.
     * 
     */
    @Import(name="advancedSecurityOptions")
    private @Nullable Output advancedSecurityOptions;

    /**
     * @return Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below.
     * 
     */
    public Optional> advancedSecurityOptions() {
        return Optional.ofNullable(this.advancedSecurityOptions);
    }

    /**
     * ARN of the domain.
     * 
     */
    @Import(name="arn")
    private @Nullable Output arn;

    /**
     * @return ARN of the domain.
     * 
     */
    public Optional> arn() {
        return Optional.ofNullable(this.arn);
    }

    /**
     * Configuration block for the Auto-Tune options of the domain. Detailed below.
     * 
     */
    @Import(name="autoTuneOptions")
    private @Nullable Output autoTuneOptions;

    /**
     * @return Configuration block for the Auto-Tune options of the domain. Detailed below.
     * 
     */
    public Optional> autoTuneOptions() {
        return Optional.ofNullable(this.autoTuneOptions);
    }

    /**
     * Configuration block for the cluster of the domain. Detailed below.
     * 
     */
    @Import(name="clusterConfig")
    private @Nullable Output clusterConfig;

    /**
     * @return Configuration block for the cluster of the domain. Detailed below.
     * 
     */
    public Optional> clusterConfig() {
        return Optional.ofNullable(this.clusterConfig);
    }

    /**
     * Configuration block for authenticating dashboard with Cognito. Detailed below.
     * 
     */
    @Import(name="cognitoOptions")
    private @Nullable Output cognitoOptions;

    /**
     * @return Configuration block for authenticating dashboard with Cognito. Detailed below.
     * 
     */
    public Optional> cognitoOptions() {
        return Optional.ofNullable(this.cognitoOptions);
    }

    /**
     * Domain-specific endpoint for Dashboard without https scheme.
     * 
     */
    @Import(name="dashboardEndpoint")
    private @Nullable Output dashboardEndpoint;

    /**
     * @return Domain-specific endpoint for Dashboard without https scheme.
     * 
     */
    public Optional> dashboardEndpoint() {
        return Optional.ofNullable(this.dashboardEndpoint);
    }

    /**
     * V2 domain endpoint for Dashboard that works with both IPv4 and IPv6 addresses, without https scheme.
     * 
     */
    @Import(name="dashboardEndpointV2")
    private @Nullable Output dashboardEndpointV2;

    /**
     * @return V2 domain endpoint for Dashboard that works with both IPv4 and IPv6 addresses, without https scheme.
     * 
     */
    public Optional> dashboardEndpointV2() {
        return Optional.ofNullable(this.dashboardEndpointV2);
    }

    /**
     * Configuration block for domain endpoint HTTP(S) related options. Detailed below.
     * 
     */
    @Import(name="domainEndpointOptions")
    private @Nullable Output domainEndpointOptions;

    /**
     * @return Configuration block for domain endpoint HTTP(S) related options. Detailed below.
     * 
     */
    public Optional> domainEndpointOptions() {
        return Optional.ofNullable(this.domainEndpointOptions);
    }

    /**
     * Dual stack hosted zone ID for the domain.
     * 
     */
    @Import(name="domainEndpointV2HostedZoneId")
    private @Nullable Output domainEndpointV2HostedZoneId;

    /**
     * @return Dual stack hosted zone ID for the domain.
     * 
     */
    public Optional> domainEndpointV2HostedZoneId() {
        return Optional.ofNullable(this.domainEndpointV2HostedZoneId);
    }

    /**
     * Unique identifier for the domain.
     * 
     */
    @Import(name="domainId")
    private @Nullable Output domainId;

    /**
     * @return Unique identifier for the domain.
     * 
     */
    public Optional> domainId() {
        return Optional.ofNullable(this.domainId);
    }

    /**
     * Name of the domain.
     * 
     * The following arguments are optional:
     * 
     */
    @Import(name="domainName")
    private @Nullable Output domainName;

    /**
     * @return Name of the domain.
     * 
     * The following arguments are optional:
     * 
     */
    public Optional> domainName() {
        return Optional.ofNullable(this.domainName);
    }

    /**
     * Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below.
     * 
     */
    @Import(name="ebsOptions")
    private @Nullable Output ebsOptions;

    /**
     * @return Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below.
     * 
     */
    public Optional> ebsOptions() {
        return Optional.ofNullable(this.ebsOptions);
    }

    /**
     * Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below.
     * 
     */
    @Import(name="encryptAtRest")
    private @Nullable Output encryptAtRest;

    /**
     * @return Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below.
     * 
     */
    public Optional> encryptAtRest() {
        return Optional.ofNullable(this.encryptAtRest);
    }

    /**
     * Domain-specific endpoint used to submit index, search, and data upload requests.
     * 
     */
    @Import(name="endpoint")
    private @Nullable Output endpoint;

    /**
     * @return Domain-specific endpoint used to submit index, search, and data upload requests.
     * 
     */
    public Optional> endpoint() {
        return Optional.ofNullable(this.endpoint);
    }

    /**
     * V2 domain endpoint that works with both IPv4 and IPv6 addresses, used to submit index, search, and data upload requests.
     * 
     */
    @Import(name="endpointV2")
    private @Nullable Output endpointV2;

    /**
     * @return V2 domain endpoint that works with both IPv4 and IPv6 addresses, used to submit index, search, and data upload requests.
     * 
     */
    public Optional> endpointV2() {
        return Optional.ofNullable(this.endpointV2);
    }

    /**
     * Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`.
     * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains).
     * Defaults to the lastest version of OpenSearch.
     * 
     */
    @Import(name="engineVersion")
    private @Nullable Output engineVersion;

    /**
     * @return Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`.
     * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains).
     * Defaults to the lastest version of OpenSearch.
     * 
     */
    public Optional> engineVersion() {
        return Optional.ofNullable(this.engineVersion);
    }

    /**
     * The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`.
     * 
     */
    @Import(name="ipAddressType")
    private @Nullable Output ipAddressType;

    /**
     * @return The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`.
     * 
     */
    public Optional> ipAddressType() {
        return Optional.ofNullable(this.ipAddressType);
    }

    /**
     * (**Deprecated**) Domain-specific endpoint for kibana without https scheme. Use the `dashboard_endpoint` attribute instead.
     * 
     * @deprecated
     * use 'dashboard_endpoint' attribute instead
     * 
     */
    @Deprecated /* use 'dashboard_endpoint' attribute instead */
    @Import(name="kibanaEndpoint")
    private @Nullable Output kibanaEndpoint;

    /**
     * @return (**Deprecated**) Domain-specific endpoint for kibana without https scheme. Use the `dashboard_endpoint` attribute instead.
     * 
     * @deprecated
     * use 'dashboard_endpoint' attribute instead
     * 
     */
    @Deprecated /* use 'dashboard_endpoint' attribute instead */
    public Optional> kibanaEndpoint() {
        return Optional.ofNullable(this.kibanaEndpoint);
    }

    /**
     * Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below.
     * 
     */
    @Import(name="logPublishingOptions")
    private @Nullable Output> logPublishingOptions;

    /**
     * @return Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below.
     * 
     */
    public Optional>> logPublishingOptions() {
        return Optional.ofNullable(this.logPublishingOptions);
    }

    /**
     * Configuration block for node-to-node encryption options. Detailed below.
     * 
     */
    @Import(name="nodeToNodeEncryption")
    private @Nullable Output nodeToNodeEncryption;

    /**
     * @return Configuration block for node-to-node encryption options. Detailed below.
     * 
     */
    public Optional> nodeToNodeEncryption() {
        return Optional.ofNullable(this.nodeToNodeEncryption);
    }

    /**
     * Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below.
     * 
     */
    @Import(name="offPeakWindowOptions")
    private @Nullable Output offPeakWindowOptions;

    /**
     * @return Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below.
     * 
     */
    public Optional> offPeakWindowOptions() {
        return Optional.ofNullable(this.offPeakWindowOptions);
    }

    /**
     * Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains running OpenSearch 5.3 and later, Amazon OpenSearch takes hourly automated snapshots, making this setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots.
     * 
     */
    @Import(name="snapshotOptions")
    private @Nullable Output snapshotOptions;

    /**
     * @return Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains running OpenSearch 5.3 and later, Amazon OpenSearch takes hourly automated snapshots, making this setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots.
     * 
     */
    public Optional> snapshotOptions() {
        return Optional.ofNullable(this.snapshotOptions);
    }

    /**
     * Software update options for the domain. Detailed below.
     * 
     */
    @Import(name="softwareUpdateOptions")
    private @Nullable Output softwareUpdateOptions;

    /**
     * @return Software update options for the domain. Detailed below.
     * 
     */
    public Optional> softwareUpdateOptions() {
        return Optional.ofNullable(this.softwareUpdateOptions);
    }

    /**
     * Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    @Import(name="tags")
    private @Nullable Output> tags;

    /**
     * @return Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     * 
     */
    public Optional>> tags() {
        return Optional.ofNullable(this.tags);
    }

    /**
     * Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
     * 
     * @deprecated
     * Please use `tags` instead.
     * 
     */
    @Deprecated /* Please use `tags` instead. */
    @Import(name="tagsAll")
    private @Nullable Output> tagsAll;

    /**
     * @return Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
     * 
     * @deprecated
     * Please use `tags` instead.
     * 
     */
    @Deprecated /* Please use `tags` instead. */
    public Optional>> tagsAll() {
        return Optional.ofNullable(this.tagsAll);
    }

    /**
     * Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below.
     * 
     */
    @Import(name="vpcOptions")
    private @Nullable Output vpcOptions;

    /**
     * @return Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below.
     * 
     */
    public Optional> vpcOptions() {
        return Optional.ofNullable(this.vpcOptions);
    }

    private DomainState() {}

    private DomainState(DomainState $) {
        this.accessPolicies = $.accessPolicies;
        this.advancedOptions = $.advancedOptions;
        this.advancedSecurityOptions = $.advancedSecurityOptions;
        this.arn = $.arn;
        this.autoTuneOptions = $.autoTuneOptions;
        this.clusterConfig = $.clusterConfig;
        this.cognitoOptions = $.cognitoOptions;
        this.dashboardEndpoint = $.dashboardEndpoint;
        this.dashboardEndpointV2 = $.dashboardEndpointV2;
        this.domainEndpointOptions = $.domainEndpointOptions;
        this.domainEndpointV2HostedZoneId = $.domainEndpointV2HostedZoneId;
        this.domainId = $.domainId;
        this.domainName = $.domainName;
        this.ebsOptions = $.ebsOptions;
        this.encryptAtRest = $.encryptAtRest;
        this.endpoint = $.endpoint;
        this.endpointV2 = $.endpointV2;
        this.engineVersion = $.engineVersion;
        this.ipAddressType = $.ipAddressType;
        this.kibanaEndpoint = $.kibanaEndpoint;
        this.logPublishingOptions = $.logPublishingOptions;
        this.nodeToNodeEncryption = $.nodeToNodeEncryption;
        this.offPeakWindowOptions = $.offPeakWindowOptions;
        this.snapshotOptions = $.snapshotOptions;
        this.softwareUpdateOptions = $.softwareUpdateOptions;
        this.tags = $.tags;
        this.tagsAll = $.tagsAll;
        this.vpcOptions = $.vpcOptions;
    }

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

    public static final class Builder {
        private DomainState $;

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

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

        /**
         * @param accessPolicies IAM policy document specifying the access policies for the domain.
         * 
         * @return builder
         * 
         */
        public Builder accessPolicies(@Nullable Output accessPolicies) {
            $.accessPolicies = accessPolicies;
            return this;
        }

        /**
         * @param accessPolicies IAM policy document specifying the access policies for the domain.
         * 
         * @return builder
         * 
         */
        public Builder accessPolicies(String accessPolicies) {
            return accessPolicies(Output.of(accessPolicies));
        }

        /**
         * @param advancedOptions Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply.
         * 
         * @return builder
         * 
         */
        public Builder advancedOptions(@Nullable Output> advancedOptions) {
            $.advancedOptions = advancedOptions;
            return this;
        }

        /**
         * @param advancedOptions Key-value string pairs to specify advanced configuration options. Note that the values for these configuration options must be strings (wrapped in quotes) or they may be wrong and cause a perpetual diff, causing the provider to want to recreate your OpenSearch domain on every apply.
         * 
         * @return builder
         * 
         */
        public Builder advancedOptions(Map advancedOptions) {
            return advancedOptions(Output.of(advancedOptions));
        }

        /**
         * @param advancedSecurityOptions Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder advancedSecurityOptions(@Nullable Output advancedSecurityOptions) {
            $.advancedSecurityOptions = advancedSecurityOptions;
            return this;
        }

        /**
         * @param advancedSecurityOptions Configuration block for [fine-grained access control](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/fgac.html). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder advancedSecurityOptions(DomainAdvancedSecurityOptionsArgs advancedSecurityOptions) {
            return advancedSecurityOptions(Output.of(advancedSecurityOptions));
        }

        /**
         * @param arn ARN of the domain.
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn ARN of the domain.
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

        /**
         * @param autoTuneOptions Configuration block for the Auto-Tune options of the domain. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder autoTuneOptions(@Nullable Output autoTuneOptions) {
            $.autoTuneOptions = autoTuneOptions;
            return this;
        }

        /**
         * @param autoTuneOptions Configuration block for the Auto-Tune options of the domain. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder autoTuneOptions(DomainAutoTuneOptionsArgs autoTuneOptions) {
            return autoTuneOptions(Output.of(autoTuneOptions));
        }

        /**
         * @param clusterConfig Configuration block for the cluster of the domain. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder clusterConfig(@Nullable Output clusterConfig) {
            $.clusterConfig = clusterConfig;
            return this;
        }

        /**
         * @param clusterConfig Configuration block for the cluster of the domain. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder clusterConfig(DomainClusterConfigArgs clusterConfig) {
            return clusterConfig(Output.of(clusterConfig));
        }

        /**
         * @param cognitoOptions Configuration block for authenticating dashboard with Cognito. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder cognitoOptions(@Nullable Output cognitoOptions) {
            $.cognitoOptions = cognitoOptions;
            return this;
        }

        /**
         * @param cognitoOptions Configuration block for authenticating dashboard with Cognito. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder cognitoOptions(DomainCognitoOptionsArgs cognitoOptions) {
            return cognitoOptions(Output.of(cognitoOptions));
        }

        /**
         * @param dashboardEndpoint Domain-specific endpoint for Dashboard without https scheme.
         * 
         * @return builder
         * 
         */
        public Builder dashboardEndpoint(@Nullable Output dashboardEndpoint) {
            $.dashboardEndpoint = dashboardEndpoint;
            return this;
        }

        /**
         * @param dashboardEndpoint Domain-specific endpoint for Dashboard without https scheme.
         * 
         * @return builder
         * 
         */
        public Builder dashboardEndpoint(String dashboardEndpoint) {
            return dashboardEndpoint(Output.of(dashboardEndpoint));
        }

        /**
         * @param dashboardEndpointV2 V2 domain endpoint for Dashboard that works with both IPv4 and IPv6 addresses, without https scheme.
         * 
         * @return builder
         * 
         */
        public Builder dashboardEndpointV2(@Nullable Output dashboardEndpointV2) {
            $.dashboardEndpointV2 = dashboardEndpointV2;
            return this;
        }

        /**
         * @param dashboardEndpointV2 V2 domain endpoint for Dashboard that works with both IPv4 and IPv6 addresses, without https scheme.
         * 
         * @return builder
         * 
         */
        public Builder dashboardEndpointV2(String dashboardEndpointV2) {
            return dashboardEndpointV2(Output.of(dashboardEndpointV2));
        }

        /**
         * @param domainEndpointOptions Configuration block for domain endpoint HTTP(S) related options. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder domainEndpointOptions(@Nullable Output domainEndpointOptions) {
            $.domainEndpointOptions = domainEndpointOptions;
            return this;
        }

        /**
         * @param domainEndpointOptions Configuration block for domain endpoint HTTP(S) related options. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder domainEndpointOptions(DomainDomainEndpointOptionsArgs domainEndpointOptions) {
            return domainEndpointOptions(Output.of(domainEndpointOptions));
        }

        /**
         * @param domainEndpointV2HostedZoneId Dual stack hosted zone ID for the domain.
         * 
         * @return builder
         * 
         */
        public Builder domainEndpointV2HostedZoneId(@Nullable Output domainEndpointV2HostedZoneId) {
            $.domainEndpointV2HostedZoneId = domainEndpointV2HostedZoneId;
            return this;
        }

        /**
         * @param domainEndpointV2HostedZoneId Dual stack hosted zone ID for the domain.
         * 
         * @return builder
         * 
         */
        public Builder domainEndpointV2HostedZoneId(String domainEndpointV2HostedZoneId) {
            return domainEndpointV2HostedZoneId(Output.of(domainEndpointV2HostedZoneId));
        }

        /**
         * @param domainId Unique identifier for the domain.
         * 
         * @return builder
         * 
         */
        public Builder domainId(@Nullable Output domainId) {
            $.domainId = domainId;
            return this;
        }

        /**
         * @param domainId Unique identifier for the domain.
         * 
         * @return builder
         * 
         */
        public Builder domainId(String domainId) {
            return domainId(Output.of(domainId));
        }

        /**
         * @param domainName Name of the domain.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder domainName(@Nullable Output domainName) {
            $.domainName = domainName;
            return this;
        }

        /**
         * @param domainName Name of the domain.
         * 
         * The following arguments are optional:
         * 
         * @return builder
         * 
         */
        public Builder domainName(String domainName) {
            return domainName(Output.of(domainName));
        }

        /**
         * @param ebsOptions Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder ebsOptions(@Nullable Output ebsOptions) {
            $.ebsOptions = ebsOptions;
            return this;
        }

        /**
         * @param ebsOptions Configuration block for EBS related options, may be required based on chosen [instance size](https://aws.amazon.com/opensearch-service/pricing/). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder ebsOptions(DomainEbsOptionsArgs ebsOptions) {
            return ebsOptions(Output.of(ebsOptions));
        }

        /**
         * @param encryptAtRest Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder encryptAtRest(@Nullable Output encryptAtRest) {
            $.encryptAtRest = encryptAtRest;
            return this;
        }

        /**
         * @param encryptAtRest Configuration block for encrypt at rest options. Only available for [certain instance types](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/encryption-at-rest.html). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder encryptAtRest(DomainEncryptAtRestArgs encryptAtRest) {
            return encryptAtRest(Output.of(encryptAtRest));
        }

        /**
         * @param endpoint Domain-specific endpoint used to submit index, search, and data upload requests.
         * 
         * @return builder
         * 
         */
        public Builder endpoint(@Nullable Output endpoint) {
            $.endpoint = endpoint;
            return this;
        }

        /**
         * @param endpoint Domain-specific endpoint used to submit index, search, and data upload requests.
         * 
         * @return builder
         * 
         */
        public Builder endpoint(String endpoint) {
            return endpoint(Output.of(endpoint));
        }

        /**
         * @param endpointV2 V2 domain endpoint that works with both IPv4 and IPv6 addresses, used to submit index, search, and data upload requests.
         * 
         * @return builder
         * 
         */
        public Builder endpointV2(@Nullable Output endpointV2) {
            $.endpointV2 = endpointV2;
            return this;
        }

        /**
         * @param endpointV2 V2 domain endpoint that works with both IPv4 and IPv6 addresses, used to submit index, search, and data upload requests.
         * 
         * @return builder
         * 
         */
        public Builder endpointV2(String endpointV2) {
            return endpointV2(Output.of(endpointV2));
        }

        /**
         * @param engineVersion Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`.
         * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains).
         * Defaults to the lastest version of OpenSearch.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(@Nullable Output engineVersion) {
            $.engineVersion = engineVersion;
            return this;
        }

        /**
         * @param engineVersion Either `Elasticsearch_X.Y` or `OpenSearch_X.Y` to specify the engine version for the Amazon OpenSearch Service domain. For example, `OpenSearch_1.0` or `Elasticsearch_7.9`.
         * See [Creating and managing Amazon OpenSearch Service domains](http://docs.aws.amazon.com/opensearch-service/latest/developerguide/createupdatedomains.html#createdomains).
         * Defaults to the lastest version of OpenSearch.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(String engineVersion) {
            return engineVersion(Output.of(engineVersion));
        }

        /**
         * @param ipAddressType The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`.
         * 
         * @return builder
         * 
         */
        public Builder ipAddressType(@Nullable Output ipAddressType) {
            $.ipAddressType = ipAddressType;
            return this;
        }

        /**
         * @param ipAddressType The IP address type for the endpoint. Valid values are `ipv4` and `dualstack`.
         * 
         * @return builder
         * 
         */
        public Builder ipAddressType(String ipAddressType) {
            return ipAddressType(Output.of(ipAddressType));
        }

        /**
         * @param kibanaEndpoint (**Deprecated**) Domain-specific endpoint for kibana without https scheme. Use the `dashboard_endpoint` attribute instead.
         * 
         * @return builder
         * 
         * @deprecated
         * use 'dashboard_endpoint' attribute instead
         * 
         */
        @Deprecated /* use 'dashboard_endpoint' attribute instead */
        public Builder kibanaEndpoint(@Nullable Output kibanaEndpoint) {
            $.kibanaEndpoint = kibanaEndpoint;
            return this;
        }

        /**
         * @param kibanaEndpoint (**Deprecated**) Domain-specific endpoint for kibana without https scheme. Use the `dashboard_endpoint` attribute instead.
         * 
         * @return builder
         * 
         * @deprecated
         * use 'dashboard_endpoint' attribute instead
         * 
         */
        @Deprecated /* use 'dashboard_endpoint' attribute instead */
        public Builder kibanaEndpoint(String kibanaEndpoint) {
            return kibanaEndpoint(Output.of(kibanaEndpoint));
        }

        /**
         * @param logPublishingOptions Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder logPublishingOptions(@Nullable Output> logPublishingOptions) {
            $.logPublishingOptions = logPublishingOptions;
            return this;
        }

        /**
         * @param logPublishingOptions Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder logPublishingOptions(List logPublishingOptions) {
            return logPublishingOptions(Output.of(logPublishingOptions));
        }

        /**
         * @param logPublishingOptions Configuration block for publishing slow and application logs to CloudWatch Logs. This block can be declared multiple times, for each log_type, within the same resource. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder logPublishingOptions(DomainLogPublishingOptionArgs... logPublishingOptions) {
            return logPublishingOptions(List.of(logPublishingOptions));
        }

        /**
         * @param nodeToNodeEncryption Configuration block for node-to-node encryption options. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder nodeToNodeEncryption(@Nullable Output nodeToNodeEncryption) {
            $.nodeToNodeEncryption = nodeToNodeEncryption;
            return this;
        }

        /**
         * @param nodeToNodeEncryption Configuration block for node-to-node encryption options. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder nodeToNodeEncryption(DomainNodeToNodeEncryptionArgs nodeToNodeEncryption) {
            return nodeToNodeEncryption(Output.of(nodeToNodeEncryption));
        }

        /**
         * @param offPeakWindowOptions Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder offPeakWindowOptions(@Nullable Output offPeakWindowOptions) {
            $.offPeakWindowOptions = offPeakWindowOptions;
            return this;
        }

        /**
         * @param offPeakWindowOptions Configuration to add Off Peak update options. ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/off-peak.html)). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder offPeakWindowOptions(DomainOffPeakWindowOptionsArgs offPeakWindowOptions) {
            return offPeakWindowOptions(Output.of(offPeakWindowOptions));
        }

        /**
         * @param snapshotOptions Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains running OpenSearch 5.3 and later, Amazon OpenSearch takes hourly automated snapshots, making this setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots.
         * 
         * @return builder
         * 
         */
        public Builder snapshotOptions(@Nullable Output snapshotOptions) {
            $.snapshotOptions = snapshotOptions;
            return this;
        }

        /**
         * @param snapshotOptions Configuration block for snapshot related options. Detailed below. DEPRECATED. For domains running OpenSearch 5.3 and later, Amazon OpenSearch takes hourly automated snapshots, making this setting irrelevant. For domains running earlier versions, OpenSearch takes daily automated snapshots.
         * 
         * @return builder
         * 
         */
        public Builder snapshotOptions(DomainSnapshotOptionsArgs snapshotOptions) {
            return snapshotOptions(Output.of(snapshotOptions));
        }

        /**
         * @param softwareUpdateOptions Software update options for the domain. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder softwareUpdateOptions(@Nullable Output softwareUpdateOptions) {
            $.softwareUpdateOptions = softwareUpdateOptions;
            return this;
        }

        /**
         * @param softwareUpdateOptions Software update options for the domain. Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder softwareUpdateOptions(DomainSoftwareUpdateOptionsArgs softwareUpdateOptions) {
            return softwareUpdateOptions(Output.of(softwareUpdateOptions));
        }

        /**
         * @param tags Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(@Nullable Output> tags) {
            $.tags = tags;
            return this;
        }

        /**
         * @param tags Map of tags to assign to the resource. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
         * 
         * @return builder
         * 
         */
        public Builder tags(Map tags) {
            return tags(Output.of(tags));
        }

        /**
         * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
         * 
         * @return builder
         * 
         * @deprecated
         * Please use `tags` instead.
         * 
         */
        @Deprecated /* Please use `tags` instead. */
        public Builder tagsAll(@Nullable Output> tagsAll) {
            $.tagsAll = tagsAll;
            return this;
        }

        /**
         * @param tagsAll Map of tags assigned to the resource, including those inherited from the provider `default_tags` configuration block.
         * 
         * @return builder
         * 
         * @deprecated
         * Please use `tags` instead.
         * 
         */
        @Deprecated /* Please use `tags` instead. */
        public Builder tagsAll(Map tagsAll) {
            return tagsAll(Output.of(tagsAll));
        }

        /**
         * @param vpcOptions Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder vpcOptions(@Nullable Output vpcOptions) {
            $.vpcOptions = vpcOptions;
            return this;
        }

        /**
         * @param vpcOptions Configuration block for VPC related options. Adding or removing this configuration forces a new resource ([documentation](https://docs.aws.amazon.com/opensearch-service/latest/developerguide/vpc.html)). Detailed below.
         * 
         * @return builder
         * 
         */
        public Builder vpcOptions(DomainVpcOptionsArgs vpcOptions) {
            return vpcOptions(Output.of(vpcOptions));
        }

        public DomainState build() {
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy