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

com.pulumi.aws.neptune.inputs.ClusterState 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.neptune.inputs;

import com.pulumi.aws.neptune.inputs.ClusterServerlessV2ScalingConfigurationArgs;
import com.pulumi.core.Output;
import com.pulumi.core.annotations.Import;
import java.lang.Boolean;
import java.lang.Integer;
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 ClusterState extends com.pulumi.resources.ResourceArgs {

    public static final ClusterState Empty = new ClusterState();

    /**
     * Specifies whether upgrades between different major versions are allowed. You must set it to `true` when providing an `engine_version` parameter that uses a different major version than the DB cluster's current version. Default is `false`.
     * 
     */
    @Import(name="allowMajorVersionUpgrade")
    private @Nullable Output allowMajorVersionUpgrade;

    /**
     * @return Specifies whether upgrades between different major versions are allowed. You must set it to `true` when providing an `engine_version` parameter that uses a different major version than the DB cluster's current version. Default is `false`.
     * 
     */
    public Optional> allowMajorVersionUpgrade() {
        return Optional.ofNullable(this.allowMajorVersionUpgrade);
    }

    /**
     * Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
     * 
     */
    @Import(name="applyImmediately")
    private @Nullable Output applyImmediately;

    /**
     * @return Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
     * 
     */
    public Optional> applyImmediately() {
        return Optional.ofNullable(this.applyImmediately);
    }

    /**
     * The Neptune Cluster Amazon Resource Name (ARN)
     * 
     */
    @Import(name="arn")
    private @Nullable Output arn;

    /**
     * @return The Neptune Cluster Amazon Resource Name (ARN)
     * 
     */
    public Optional> arn() {
        return Optional.ofNullable(this.arn);
    }

    /**
     * A list of EC2 Availability Zones that instances in the Neptune cluster can be created in.
     * 
     */
    @Import(name="availabilityZones")
    private @Nullable Output> availabilityZones;

    /**
     * @return A list of EC2 Availability Zones that instances in the Neptune cluster can be created in.
     * 
     */
    public Optional>> availabilityZones() {
        return Optional.ofNullable(this.availabilityZones);
    }

    /**
     * The days to retain backups for. Default `1`
     * 
     */
    @Import(name="backupRetentionPeriod")
    private @Nullable Output backupRetentionPeriod;

    /**
     * @return The days to retain backups for. Default `1`
     * 
     */
    public Optional> backupRetentionPeriod() {
        return Optional.ofNullable(this.backupRetentionPeriod);
    }

    /**
     * The cluster identifier. If omitted, this provider will assign a random, unique identifier.
     * 
     */
    @Import(name="clusterIdentifier")
    private @Nullable Output clusterIdentifier;

    /**
     * @return The cluster identifier. If omitted, this provider will assign a random, unique identifier.
     * 
     */
    public Optional> clusterIdentifier() {
        return Optional.ofNullable(this.clusterIdentifier);
    }

    /**
     * Creates a unique cluster identifier beginning with the specified prefix. Conflicts with `cluster_identifier`.
     * 
     */
    @Import(name="clusterIdentifierPrefix")
    private @Nullable Output clusterIdentifierPrefix;

    /**
     * @return Creates a unique cluster identifier beginning with the specified prefix. Conflicts with `cluster_identifier`.
     * 
     */
    public Optional> clusterIdentifierPrefix() {
        return Optional.ofNullable(this.clusterIdentifierPrefix);
    }

    /**
     * List of Neptune Instances that are a part of this cluster
     * 
     */
    @Import(name="clusterMembers")
    private @Nullable Output> clusterMembers;

    /**
     * @return List of Neptune Instances that are a part of this cluster
     * 
     */
    public Optional>> clusterMembers() {
        return Optional.ofNullable(this.clusterMembers);
    }

    /**
     * The Neptune Cluster Resource ID
     * 
     */
    @Import(name="clusterResourceId")
    private @Nullable Output clusterResourceId;

    /**
     * @return The Neptune Cluster Resource ID
     * 
     */
    public Optional> clusterResourceId() {
        return Optional.ofNullable(this.clusterResourceId);
    }

    /**
     * If set to true, tags are copied to any snapshot of the DB cluster that is created.
     * 
     */
    @Import(name="copyTagsToSnapshot")
    private @Nullable Output copyTagsToSnapshot;

    /**
     * @return If set to true, tags are copied to any snapshot of the DB cluster that is created.
     * 
     */
    public Optional> copyTagsToSnapshot() {
        return Optional.ofNullable(this.copyTagsToSnapshot);
    }

    /**
     * A value that indicates whether the DB cluster has deletion protection enabled.The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.
     * 
     */
    @Import(name="deletionProtection")
    private @Nullable Output deletionProtection;

    /**
     * @return A value that indicates whether the DB cluster has deletion protection enabled.The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.
     * 
     */
    public Optional> deletionProtection() {
        return Optional.ofNullable(this.deletionProtection);
    }

    /**
     * A list of the log types this DB cluster is configured to export to Cloudwatch Logs. Currently only supports `audit` and `slowquery`.
     * 
     */
    @Import(name="enableCloudwatchLogsExports")
    private @Nullable Output> enableCloudwatchLogsExports;

    /**
     * @return A list of the log types this DB cluster is configured to export to Cloudwatch Logs. Currently only supports `audit` and `slowquery`.
     * 
     */
    public Optional>> enableCloudwatchLogsExports() {
        return Optional.ofNullable(this.enableCloudwatchLogsExports);
    }

    /**
     * The DNS address of the Neptune instance
     * 
     */
    @Import(name="endpoint")
    private @Nullable Output endpoint;

    /**
     * @return The DNS address of the Neptune instance
     * 
     */
    public Optional> endpoint() {
        return Optional.ofNullable(this.endpoint);
    }

    /**
     * The name of the database engine to be used for this Neptune cluster. Defaults to `neptune`.
     * 
     */
    @Import(name="engine")
    private @Nullable Output engine;

    /**
     * @return The name of the database engine to be used for this Neptune cluster. Defaults to `neptune`.
     * 
     */
    public Optional> engine() {
        return Optional.ofNullable(this.engine);
    }

    /**
     * The database engine version.
     * 
     */
    @Import(name="engineVersion")
    private @Nullable Output engineVersion;

    /**
     * @return The database engine version.
     * 
     */
    public Optional> engineVersion() {
        return Optional.ofNullable(this.engineVersion);
    }

    /**
     * The name of your final Neptune snapshot when this Neptune cluster is deleted. If omitted, no final snapshot will be made.
     * 
     */
    @Import(name="finalSnapshotIdentifier")
    private @Nullable Output finalSnapshotIdentifier;

    /**
     * @return The name of your final Neptune snapshot when this Neptune cluster is deleted. If omitted, no final snapshot will be made.
     * 
     */
    public Optional> finalSnapshotIdentifier() {
        return Optional.ofNullable(this.finalSnapshotIdentifier);
    }

    /**
     * The global cluster identifier specified on `aws.neptune.GlobalCluster`.
     * 
     */
    @Import(name="globalClusterIdentifier")
    private @Nullable Output globalClusterIdentifier;

    /**
     * @return The global cluster identifier specified on `aws.neptune.GlobalCluster`.
     * 
     */
    public Optional> globalClusterIdentifier() {
        return Optional.ofNullable(this.globalClusterIdentifier);
    }

    /**
     * The Route53 Hosted Zone ID of the endpoint
     * 
     */
    @Import(name="hostedZoneId")
    private @Nullable Output hostedZoneId;

    /**
     * @return The Route53 Hosted Zone ID of the endpoint
     * 
     */
    public Optional> hostedZoneId() {
        return Optional.ofNullable(this.hostedZoneId);
    }

    /**
     * Specifies whether or not mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled.
     * 
     */
    @Import(name="iamDatabaseAuthenticationEnabled")
    private @Nullable Output iamDatabaseAuthenticationEnabled;

    /**
     * @return Specifies whether or not mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled.
     * 
     */
    public Optional> iamDatabaseAuthenticationEnabled() {
        return Optional.ofNullable(this.iamDatabaseAuthenticationEnabled);
    }

    /**
     * A List of ARNs for the IAM roles to associate to the Neptune Cluster.
     * 
     */
    @Import(name="iamRoles")
    private @Nullable Output> iamRoles;

    /**
     * @return A List of ARNs for the IAM roles to associate to the Neptune Cluster.
     * 
     */
    public Optional>> iamRoles() {
        return Optional.ofNullable(this.iamRoles);
    }

    /**
     * The ARN for the KMS encryption key. When specifying `kms_key_arn`, `storage_encrypted` needs to be set to true.
     * 
     */
    @Import(name="kmsKeyArn")
    private @Nullable Output kmsKeyArn;

    /**
     * @return The ARN for the KMS encryption key. When specifying `kms_key_arn`, `storage_encrypted` needs to be set to true.
     * 
     */
    public Optional> kmsKeyArn() {
        return Optional.ofNullable(this.kmsKeyArn);
    }

    /**
     * A cluster parameter group to associate with the cluster.
     * 
     */
    @Import(name="neptuneClusterParameterGroupName")
    private @Nullable Output neptuneClusterParameterGroupName;

    /**
     * @return A cluster parameter group to associate with the cluster.
     * 
     */
    public Optional> neptuneClusterParameterGroupName() {
        return Optional.ofNullable(this.neptuneClusterParameterGroupName);
    }

    /**
     * The name of the DB parameter group to apply to all instances of the DB cluster.
     * 
     */
    @Import(name="neptuneInstanceParameterGroupName")
    private @Nullable Output neptuneInstanceParameterGroupName;

    /**
     * @return The name of the DB parameter group to apply to all instances of the DB cluster.
     * 
     */
    public Optional> neptuneInstanceParameterGroupName() {
        return Optional.ofNullable(this.neptuneInstanceParameterGroupName);
    }

    /**
     * A Neptune subnet group to associate with this Neptune instance.
     * 
     */
    @Import(name="neptuneSubnetGroupName")
    private @Nullable Output neptuneSubnetGroupName;

    /**
     * @return A Neptune subnet group to associate with this Neptune instance.
     * 
     */
    public Optional> neptuneSubnetGroupName() {
        return Optional.ofNullable(this.neptuneSubnetGroupName);
    }

    /**
     * The port on which the Neptune accepts connections. Default is `8182`.
     * 
     */
    @Import(name="port")
    private @Nullable Output port;

    /**
     * @return The port on which the Neptune accepts connections. Default is `8182`.
     * 
     */
    public Optional> port() {
        return Optional.ofNullable(this.port);
    }

    /**
     * The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00
     * 
     */
    @Import(name="preferredBackupWindow")
    private @Nullable Output preferredBackupWindow;

    /**
     * @return The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00
     * 
     */
    public Optional> preferredBackupWindow() {
        return Optional.ofNullable(this.preferredBackupWindow);
    }

    /**
     * The weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30
     * 
     */
    @Import(name="preferredMaintenanceWindow")
    private @Nullable Output preferredMaintenanceWindow;

    /**
     * @return The weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30
     * 
     */
    public Optional> preferredMaintenanceWindow() {
        return Optional.ofNullable(this.preferredMaintenanceWindow);
    }

    /**
     * A read-only endpoint for the Neptune cluster, automatically load-balanced across replicas
     * 
     */
    @Import(name="readerEndpoint")
    private @Nullable Output readerEndpoint;

    /**
     * @return A read-only endpoint for the Neptune cluster, automatically load-balanced across replicas
     * 
     */
    public Optional> readerEndpoint() {
        return Optional.ofNullable(this.readerEndpoint);
    }

    /**
     * ARN of a source Neptune cluster or Neptune instance if this Neptune cluster is to be created as a Read Replica.
     * 
     */
    @Import(name="replicationSourceIdentifier")
    private @Nullable Output replicationSourceIdentifier;

    /**
     * @return ARN of a source Neptune cluster or Neptune instance if this Neptune cluster is to be created as a Read Replica.
     * 
     */
    public Optional> replicationSourceIdentifier() {
        return Optional.ofNullable(this.replicationSourceIdentifier);
    }

    /**
     * If set, create the Neptune cluster as a serverless one. See Serverless for example block attributes.
     * 
     */
    @Import(name="serverlessV2ScalingConfiguration")
    private @Nullable Output serverlessV2ScalingConfiguration;

    /**
     * @return If set, create the Neptune cluster as a serverless one. See Serverless for example block attributes.
     * 
     */
    public Optional> serverlessV2ScalingConfiguration() {
        return Optional.ofNullable(this.serverlessV2ScalingConfiguration);
    }

    /**
     * Determines whether a final Neptune snapshot is created before the Neptune cluster is deleted. If true is specified, no Neptune snapshot is created. If false is specified, a Neptune snapshot is created before the Neptune cluster is deleted, using the value from `final_snapshot_identifier`. Default is `false`.
     * 
     */
    @Import(name="skipFinalSnapshot")
    private @Nullable Output skipFinalSnapshot;

    /**
     * @return Determines whether a final Neptune snapshot is created before the Neptune cluster is deleted. If true is specified, no Neptune snapshot is created. If false is specified, a Neptune snapshot is created before the Neptune cluster is deleted, using the value from `final_snapshot_identifier`. Default is `false`.
     * 
     */
    public Optional> skipFinalSnapshot() {
        return Optional.ofNullable(this.skipFinalSnapshot);
    }

    /**
     * Specifies whether or not to create this cluster from a snapshot. You can use either the name or ARN when specifying a Neptune cluster snapshot, or the ARN when specifying a Neptune snapshot. Automated snapshots **should not** be used for this attribute, unless from a different cluster. Automated snapshots are deleted as part of cluster destruction when the resource is replaced.
     * 
     */
    @Import(name="snapshotIdentifier")
    private @Nullable Output snapshotIdentifier;

    /**
     * @return Specifies whether or not to create this cluster from a snapshot. You can use either the name or ARN when specifying a Neptune cluster snapshot, or the ARN when specifying a Neptune snapshot. Automated snapshots **should not** be used for this attribute, unless from a different cluster. Automated snapshots are deleted as part of cluster destruction when the resource is replaced.
     * 
     */
    public Optional> snapshotIdentifier() {
        return Optional.ofNullable(this.snapshotIdentifier);
    }

    /**
     * Specifies whether the Neptune cluster is encrypted. The default is `false` if not specified.
     * 
     */
    @Import(name="storageEncrypted")
    private @Nullable Output storageEncrypted;

    /**
     * @return Specifies whether the Neptune cluster is encrypted. The default is `false` if not specified.
     * 
     */
    public Optional> storageEncrypted() {
        return Optional.ofNullable(this.storageEncrypted);
    }

    /**
     * Storage type associated with the cluster `standard/iopt1`. Default: `standard`
     * 
     */
    @Import(name="storageType")
    private @Nullable Output storageType;

    /**
     * @return Storage type associated with the cluster `standard/iopt1`. Default: `standard`
     * 
     */
    public Optional> storageType() {
        return Optional.ofNullable(this.storageType);
    }

    /**
     * A map of tags to assign to the Neptune cluster. 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 A map of tags to assign to the Neptune cluster. 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);
    }

    /**
     * A 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 A 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);
    }

    /**
     * List of VPC security groups to associate with the Cluster
     * 
     */
    @Import(name="vpcSecurityGroupIds")
    private @Nullable Output> vpcSecurityGroupIds;

    /**
     * @return List of VPC security groups to associate with the Cluster
     * 
     */
    public Optional>> vpcSecurityGroupIds() {
        return Optional.ofNullable(this.vpcSecurityGroupIds);
    }

    private ClusterState() {}

    private ClusterState(ClusterState $) {
        this.allowMajorVersionUpgrade = $.allowMajorVersionUpgrade;
        this.applyImmediately = $.applyImmediately;
        this.arn = $.arn;
        this.availabilityZones = $.availabilityZones;
        this.backupRetentionPeriod = $.backupRetentionPeriod;
        this.clusterIdentifier = $.clusterIdentifier;
        this.clusterIdentifierPrefix = $.clusterIdentifierPrefix;
        this.clusterMembers = $.clusterMembers;
        this.clusterResourceId = $.clusterResourceId;
        this.copyTagsToSnapshot = $.copyTagsToSnapshot;
        this.deletionProtection = $.deletionProtection;
        this.enableCloudwatchLogsExports = $.enableCloudwatchLogsExports;
        this.endpoint = $.endpoint;
        this.engine = $.engine;
        this.engineVersion = $.engineVersion;
        this.finalSnapshotIdentifier = $.finalSnapshotIdentifier;
        this.globalClusterIdentifier = $.globalClusterIdentifier;
        this.hostedZoneId = $.hostedZoneId;
        this.iamDatabaseAuthenticationEnabled = $.iamDatabaseAuthenticationEnabled;
        this.iamRoles = $.iamRoles;
        this.kmsKeyArn = $.kmsKeyArn;
        this.neptuneClusterParameterGroupName = $.neptuneClusterParameterGroupName;
        this.neptuneInstanceParameterGroupName = $.neptuneInstanceParameterGroupName;
        this.neptuneSubnetGroupName = $.neptuneSubnetGroupName;
        this.port = $.port;
        this.preferredBackupWindow = $.preferredBackupWindow;
        this.preferredMaintenanceWindow = $.preferredMaintenanceWindow;
        this.readerEndpoint = $.readerEndpoint;
        this.replicationSourceIdentifier = $.replicationSourceIdentifier;
        this.serverlessV2ScalingConfiguration = $.serverlessV2ScalingConfiguration;
        this.skipFinalSnapshot = $.skipFinalSnapshot;
        this.snapshotIdentifier = $.snapshotIdentifier;
        this.storageEncrypted = $.storageEncrypted;
        this.storageType = $.storageType;
        this.tags = $.tags;
        this.tagsAll = $.tagsAll;
        this.vpcSecurityGroupIds = $.vpcSecurityGroupIds;
    }

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

    public static final class Builder {
        private ClusterState $;

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

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

        /**
         * @param allowMajorVersionUpgrade Specifies whether upgrades between different major versions are allowed. You must set it to `true` when providing an `engine_version` parameter that uses a different major version than the DB cluster's current version. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder allowMajorVersionUpgrade(@Nullable Output allowMajorVersionUpgrade) {
            $.allowMajorVersionUpgrade = allowMajorVersionUpgrade;
            return this;
        }

        /**
         * @param allowMajorVersionUpgrade Specifies whether upgrades between different major versions are allowed. You must set it to `true` when providing an `engine_version` parameter that uses a different major version than the DB cluster's current version. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder allowMajorVersionUpgrade(Boolean allowMajorVersionUpgrade) {
            return allowMajorVersionUpgrade(Output.of(allowMajorVersionUpgrade));
        }

        /**
         * @param applyImmediately Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder applyImmediately(@Nullable Output applyImmediately) {
            $.applyImmediately = applyImmediately;
            return this;
        }

        /**
         * @param applyImmediately Specifies whether any cluster modifications are applied immediately, or during the next maintenance window. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder applyImmediately(Boolean applyImmediately) {
            return applyImmediately(Output.of(applyImmediately));
        }

        /**
         * @param arn The Neptune Cluster Amazon Resource Name (ARN)
         * 
         * @return builder
         * 
         */
        public Builder arn(@Nullable Output arn) {
            $.arn = arn;
            return this;
        }

        /**
         * @param arn The Neptune Cluster Amazon Resource Name (ARN)
         * 
         * @return builder
         * 
         */
        public Builder arn(String arn) {
            return arn(Output.of(arn));
        }

        /**
         * @param availabilityZones A list of EC2 Availability Zones that instances in the Neptune cluster can be created in.
         * 
         * @return builder
         * 
         */
        public Builder availabilityZones(@Nullable Output> availabilityZones) {
            $.availabilityZones = availabilityZones;
            return this;
        }

        /**
         * @param availabilityZones A list of EC2 Availability Zones that instances in the Neptune cluster can be created in.
         * 
         * @return builder
         * 
         */
        public Builder availabilityZones(List availabilityZones) {
            return availabilityZones(Output.of(availabilityZones));
        }

        /**
         * @param availabilityZones A list of EC2 Availability Zones that instances in the Neptune cluster can be created in.
         * 
         * @return builder
         * 
         */
        public Builder availabilityZones(String... availabilityZones) {
            return availabilityZones(List.of(availabilityZones));
        }

        /**
         * @param backupRetentionPeriod The days to retain backups for. Default `1`
         * 
         * @return builder
         * 
         */
        public Builder backupRetentionPeriod(@Nullable Output backupRetentionPeriod) {
            $.backupRetentionPeriod = backupRetentionPeriod;
            return this;
        }

        /**
         * @param backupRetentionPeriod The days to retain backups for. Default `1`
         * 
         * @return builder
         * 
         */
        public Builder backupRetentionPeriod(Integer backupRetentionPeriod) {
            return backupRetentionPeriod(Output.of(backupRetentionPeriod));
        }

        /**
         * @param clusterIdentifier The cluster identifier. If omitted, this provider will assign a random, unique identifier.
         * 
         * @return builder
         * 
         */
        public Builder clusterIdentifier(@Nullable Output clusterIdentifier) {
            $.clusterIdentifier = clusterIdentifier;
            return this;
        }

        /**
         * @param clusterIdentifier The cluster identifier. If omitted, this provider will assign a random, unique identifier.
         * 
         * @return builder
         * 
         */
        public Builder clusterIdentifier(String clusterIdentifier) {
            return clusterIdentifier(Output.of(clusterIdentifier));
        }

        /**
         * @param clusterIdentifierPrefix Creates a unique cluster identifier beginning with the specified prefix. Conflicts with `cluster_identifier`.
         * 
         * @return builder
         * 
         */
        public Builder clusterIdentifierPrefix(@Nullable Output clusterIdentifierPrefix) {
            $.clusterIdentifierPrefix = clusterIdentifierPrefix;
            return this;
        }

        /**
         * @param clusterIdentifierPrefix Creates a unique cluster identifier beginning with the specified prefix. Conflicts with `cluster_identifier`.
         * 
         * @return builder
         * 
         */
        public Builder clusterIdentifierPrefix(String clusterIdentifierPrefix) {
            return clusterIdentifierPrefix(Output.of(clusterIdentifierPrefix));
        }

        /**
         * @param clusterMembers List of Neptune Instances that are a part of this cluster
         * 
         * @return builder
         * 
         */
        public Builder clusterMembers(@Nullable Output> clusterMembers) {
            $.clusterMembers = clusterMembers;
            return this;
        }

        /**
         * @param clusterMembers List of Neptune Instances that are a part of this cluster
         * 
         * @return builder
         * 
         */
        public Builder clusterMembers(List clusterMembers) {
            return clusterMembers(Output.of(clusterMembers));
        }

        /**
         * @param clusterMembers List of Neptune Instances that are a part of this cluster
         * 
         * @return builder
         * 
         */
        public Builder clusterMembers(String... clusterMembers) {
            return clusterMembers(List.of(clusterMembers));
        }

        /**
         * @param clusterResourceId The Neptune Cluster Resource ID
         * 
         * @return builder
         * 
         */
        public Builder clusterResourceId(@Nullable Output clusterResourceId) {
            $.clusterResourceId = clusterResourceId;
            return this;
        }

        /**
         * @param clusterResourceId The Neptune Cluster Resource ID
         * 
         * @return builder
         * 
         */
        public Builder clusterResourceId(String clusterResourceId) {
            return clusterResourceId(Output.of(clusterResourceId));
        }

        /**
         * @param copyTagsToSnapshot If set to true, tags are copied to any snapshot of the DB cluster that is created.
         * 
         * @return builder
         * 
         */
        public Builder copyTagsToSnapshot(@Nullable Output copyTagsToSnapshot) {
            $.copyTagsToSnapshot = copyTagsToSnapshot;
            return this;
        }

        /**
         * @param copyTagsToSnapshot If set to true, tags are copied to any snapshot of the DB cluster that is created.
         * 
         * @return builder
         * 
         */
        public Builder copyTagsToSnapshot(Boolean copyTagsToSnapshot) {
            return copyTagsToSnapshot(Output.of(copyTagsToSnapshot));
        }

        /**
         * @param deletionProtection A value that indicates whether the DB cluster has deletion protection enabled.The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.
         * 
         * @return builder
         * 
         */
        public Builder deletionProtection(@Nullable Output deletionProtection) {
            $.deletionProtection = deletionProtection;
            return this;
        }

        /**
         * @param deletionProtection A value that indicates whether the DB cluster has deletion protection enabled.The database can't be deleted when deletion protection is enabled. By default, deletion protection is disabled.
         * 
         * @return builder
         * 
         */
        public Builder deletionProtection(Boolean deletionProtection) {
            return deletionProtection(Output.of(deletionProtection));
        }

        /**
         * @param enableCloudwatchLogsExports A list of the log types this DB cluster is configured to export to Cloudwatch Logs. Currently only supports `audit` and `slowquery`.
         * 
         * @return builder
         * 
         */
        public Builder enableCloudwatchLogsExports(@Nullable Output> enableCloudwatchLogsExports) {
            $.enableCloudwatchLogsExports = enableCloudwatchLogsExports;
            return this;
        }

        /**
         * @param enableCloudwatchLogsExports A list of the log types this DB cluster is configured to export to Cloudwatch Logs. Currently only supports `audit` and `slowquery`.
         * 
         * @return builder
         * 
         */
        public Builder enableCloudwatchLogsExports(List enableCloudwatchLogsExports) {
            return enableCloudwatchLogsExports(Output.of(enableCloudwatchLogsExports));
        }

        /**
         * @param enableCloudwatchLogsExports A list of the log types this DB cluster is configured to export to Cloudwatch Logs. Currently only supports `audit` and `slowquery`.
         * 
         * @return builder
         * 
         */
        public Builder enableCloudwatchLogsExports(String... enableCloudwatchLogsExports) {
            return enableCloudwatchLogsExports(List.of(enableCloudwatchLogsExports));
        }

        /**
         * @param endpoint The DNS address of the Neptune instance
         * 
         * @return builder
         * 
         */
        public Builder endpoint(@Nullable Output endpoint) {
            $.endpoint = endpoint;
            return this;
        }

        /**
         * @param endpoint The DNS address of the Neptune instance
         * 
         * @return builder
         * 
         */
        public Builder endpoint(String endpoint) {
            return endpoint(Output.of(endpoint));
        }

        /**
         * @param engine The name of the database engine to be used for this Neptune cluster. Defaults to `neptune`.
         * 
         * @return builder
         * 
         */
        public Builder engine(@Nullable Output engine) {
            $.engine = engine;
            return this;
        }

        /**
         * @param engine The name of the database engine to be used for this Neptune cluster. Defaults to `neptune`.
         * 
         * @return builder
         * 
         */
        public Builder engine(String engine) {
            return engine(Output.of(engine));
        }

        /**
         * @param engineVersion The database engine version.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(@Nullable Output engineVersion) {
            $.engineVersion = engineVersion;
            return this;
        }

        /**
         * @param engineVersion The database engine version.
         * 
         * @return builder
         * 
         */
        public Builder engineVersion(String engineVersion) {
            return engineVersion(Output.of(engineVersion));
        }

        /**
         * @param finalSnapshotIdentifier The name of your final Neptune snapshot when this Neptune cluster is deleted. If omitted, no final snapshot will be made.
         * 
         * @return builder
         * 
         */
        public Builder finalSnapshotIdentifier(@Nullable Output finalSnapshotIdentifier) {
            $.finalSnapshotIdentifier = finalSnapshotIdentifier;
            return this;
        }

        /**
         * @param finalSnapshotIdentifier The name of your final Neptune snapshot when this Neptune cluster is deleted. If omitted, no final snapshot will be made.
         * 
         * @return builder
         * 
         */
        public Builder finalSnapshotIdentifier(String finalSnapshotIdentifier) {
            return finalSnapshotIdentifier(Output.of(finalSnapshotIdentifier));
        }

        /**
         * @param globalClusterIdentifier The global cluster identifier specified on `aws.neptune.GlobalCluster`.
         * 
         * @return builder
         * 
         */
        public Builder globalClusterIdentifier(@Nullable Output globalClusterIdentifier) {
            $.globalClusterIdentifier = globalClusterIdentifier;
            return this;
        }

        /**
         * @param globalClusterIdentifier The global cluster identifier specified on `aws.neptune.GlobalCluster`.
         * 
         * @return builder
         * 
         */
        public Builder globalClusterIdentifier(String globalClusterIdentifier) {
            return globalClusterIdentifier(Output.of(globalClusterIdentifier));
        }

        /**
         * @param hostedZoneId The Route53 Hosted Zone ID of the endpoint
         * 
         * @return builder
         * 
         */
        public Builder hostedZoneId(@Nullable Output hostedZoneId) {
            $.hostedZoneId = hostedZoneId;
            return this;
        }

        /**
         * @param hostedZoneId The Route53 Hosted Zone ID of the endpoint
         * 
         * @return builder
         * 
         */
        public Builder hostedZoneId(String hostedZoneId) {
            return hostedZoneId(Output.of(hostedZoneId));
        }

        /**
         * @param iamDatabaseAuthenticationEnabled Specifies whether or not mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled.
         * 
         * @return builder
         * 
         */
        public Builder iamDatabaseAuthenticationEnabled(@Nullable Output iamDatabaseAuthenticationEnabled) {
            $.iamDatabaseAuthenticationEnabled = iamDatabaseAuthenticationEnabled;
            return this;
        }

        /**
         * @param iamDatabaseAuthenticationEnabled Specifies whether or not mappings of AWS Identity and Access Management (IAM) accounts to database accounts is enabled.
         * 
         * @return builder
         * 
         */
        public Builder iamDatabaseAuthenticationEnabled(Boolean iamDatabaseAuthenticationEnabled) {
            return iamDatabaseAuthenticationEnabled(Output.of(iamDatabaseAuthenticationEnabled));
        }

        /**
         * @param iamRoles A List of ARNs for the IAM roles to associate to the Neptune Cluster.
         * 
         * @return builder
         * 
         */
        public Builder iamRoles(@Nullable Output> iamRoles) {
            $.iamRoles = iamRoles;
            return this;
        }

        /**
         * @param iamRoles A List of ARNs for the IAM roles to associate to the Neptune Cluster.
         * 
         * @return builder
         * 
         */
        public Builder iamRoles(List iamRoles) {
            return iamRoles(Output.of(iamRoles));
        }

        /**
         * @param iamRoles A List of ARNs for the IAM roles to associate to the Neptune Cluster.
         * 
         * @return builder
         * 
         */
        public Builder iamRoles(String... iamRoles) {
            return iamRoles(List.of(iamRoles));
        }

        /**
         * @param kmsKeyArn The ARN for the KMS encryption key. When specifying `kms_key_arn`, `storage_encrypted` needs to be set to true.
         * 
         * @return builder
         * 
         */
        public Builder kmsKeyArn(@Nullable Output kmsKeyArn) {
            $.kmsKeyArn = kmsKeyArn;
            return this;
        }

        /**
         * @param kmsKeyArn The ARN for the KMS encryption key. When specifying `kms_key_arn`, `storage_encrypted` needs to be set to true.
         * 
         * @return builder
         * 
         */
        public Builder kmsKeyArn(String kmsKeyArn) {
            return kmsKeyArn(Output.of(kmsKeyArn));
        }

        /**
         * @param neptuneClusterParameterGroupName A cluster parameter group to associate with the cluster.
         * 
         * @return builder
         * 
         */
        public Builder neptuneClusterParameterGroupName(@Nullable Output neptuneClusterParameterGroupName) {
            $.neptuneClusterParameterGroupName = neptuneClusterParameterGroupName;
            return this;
        }

        /**
         * @param neptuneClusterParameterGroupName A cluster parameter group to associate with the cluster.
         * 
         * @return builder
         * 
         */
        public Builder neptuneClusterParameterGroupName(String neptuneClusterParameterGroupName) {
            return neptuneClusterParameterGroupName(Output.of(neptuneClusterParameterGroupName));
        }

        /**
         * @param neptuneInstanceParameterGroupName The name of the DB parameter group to apply to all instances of the DB cluster.
         * 
         * @return builder
         * 
         */
        public Builder neptuneInstanceParameterGroupName(@Nullable Output neptuneInstanceParameterGroupName) {
            $.neptuneInstanceParameterGroupName = neptuneInstanceParameterGroupName;
            return this;
        }

        /**
         * @param neptuneInstanceParameterGroupName The name of the DB parameter group to apply to all instances of the DB cluster.
         * 
         * @return builder
         * 
         */
        public Builder neptuneInstanceParameterGroupName(String neptuneInstanceParameterGroupName) {
            return neptuneInstanceParameterGroupName(Output.of(neptuneInstanceParameterGroupName));
        }

        /**
         * @param neptuneSubnetGroupName A Neptune subnet group to associate with this Neptune instance.
         * 
         * @return builder
         * 
         */
        public Builder neptuneSubnetGroupName(@Nullable Output neptuneSubnetGroupName) {
            $.neptuneSubnetGroupName = neptuneSubnetGroupName;
            return this;
        }

        /**
         * @param neptuneSubnetGroupName A Neptune subnet group to associate with this Neptune instance.
         * 
         * @return builder
         * 
         */
        public Builder neptuneSubnetGroupName(String neptuneSubnetGroupName) {
            return neptuneSubnetGroupName(Output.of(neptuneSubnetGroupName));
        }

        /**
         * @param port The port on which the Neptune accepts connections. Default is `8182`.
         * 
         * @return builder
         * 
         */
        public Builder port(@Nullable Output port) {
            $.port = port;
            return this;
        }

        /**
         * @param port The port on which the Neptune accepts connections. Default is `8182`.
         * 
         * @return builder
         * 
         */
        public Builder port(Integer port) {
            return port(Output.of(port));
        }

        /**
         * @param preferredBackupWindow The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00
         * 
         * @return builder
         * 
         */
        public Builder preferredBackupWindow(@Nullable Output preferredBackupWindow) {
            $.preferredBackupWindow = preferredBackupWindow;
            return this;
        }

        /**
         * @param preferredBackupWindow The daily time range during which automated backups are created if automated backups are enabled using the BackupRetentionPeriod parameter. Time in UTC. Default: A 30-minute window selected at random from an 8-hour block of time per regionE.g., 04:00-09:00
         * 
         * @return builder
         * 
         */
        public Builder preferredBackupWindow(String preferredBackupWindow) {
            return preferredBackupWindow(Output.of(preferredBackupWindow));
        }

        /**
         * @param preferredMaintenanceWindow The weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30
         * 
         * @return builder
         * 
         */
        public Builder preferredMaintenanceWindow(@Nullable Output preferredMaintenanceWindow) {
            $.preferredMaintenanceWindow = preferredMaintenanceWindow;
            return this;
        }

        /**
         * @param preferredMaintenanceWindow The weekly time range during which system maintenance can occur, in (UTC) e.g., wed:04:00-wed:04:30
         * 
         * @return builder
         * 
         */
        public Builder preferredMaintenanceWindow(String preferredMaintenanceWindow) {
            return preferredMaintenanceWindow(Output.of(preferredMaintenanceWindow));
        }

        /**
         * @param readerEndpoint A read-only endpoint for the Neptune cluster, automatically load-balanced across replicas
         * 
         * @return builder
         * 
         */
        public Builder readerEndpoint(@Nullable Output readerEndpoint) {
            $.readerEndpoint = readerEndpoint;
            return this;
        }

        /**
         * @param readerEndpoint A read-only endpoint for the Neptune cluster, automatically load-balanced across replicas
         * 
         * @return builder
         * 
         */
        public Builder readerEndpoint(String readerEndpoint) {
            return readerEndpoint(Output.of(readerEndpoint));
        }

        /**
         * @param replicationSourceIdentifier ARN of a source Neptune cluster or Neptune instance if this Neptune cluster is to be created as a Read Replica.
         * 
         * @return builder
         * 
         */
        public Builder replicationSourceIdentifier(@Nullable Output replicationSourceIdentifier) {
            $.replicationSourceIdentifier = replicationSourceIdentifier;
            return this;
        }

        /**
         * @param replicationSourceIdentifier ARN of a source Neptune cluster or Neptune instance if this Neptune cluster is to be created as a Read Replica.
         * 
         * @return builder
         * 
         */
        public Builder replicationSourceIdentifier(String replicationSourceIdentifier) {
            return replicationSourceIdentifier(Output.of(replicationSourceIdentifier));
        }

        /**
         * @param serverlessV2ScalingConfiguration If set, create the Neptune cluster as a serverless one. See Serverless for example block attributes.
         * 
         * @return builder
         * 
         */
        public Builder serverlessV2ScalingConfiguration(@Nullable Output serverlessV2ScalingConfiguration) {
            $.serverlessV2ScalingConfiguration = serverlessV2ScalingConfiguration;
            return this;
        }

        /**
         * @param serverlessV2ScalingConfiguration If set, create the Neptune cluster as a serverless one. See Serverless for example block attributes.
         * 
         * @return builder
         * 
         */
        public Builder serverlessV2ScalingConfiguration(ClusterServerlessV2ScalingConfigurationArgs serverlessV2ScalingConfiguration) {
            return serverlessV2ScalingConfiguration(Output.of(serverlessV2ScalingConfiguration));
        }

        /**
         * @param skipFinalSnapshot Determines whether a final Neptune snapshot is created before the Neptune cluster is deleted. If true is specified, no Neptune snapshot is created. If false is specified, a Neptune snapshot is created before the Neptune cluster is deleted, using the value from `final_snapshot_identifier`. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder skipFinalSnapshot(@Nullable Output skipFinalSnapshot) {
            $.skipFinalSnapshot = skipFinalSnapshot;
            return this;
        }

        /**
         * @param skipFinalSnapshot Determines whether a final Neptune snapshot is created before the Neptune cluster is deleted. If true is specified, no Neptune snapshot is created. If false is specified, a Neptune snapshot is created before the Neptune cluster is deleted, using the value from `final_snapshot_identifier`. Default is `false`.
         * 
         * @return builder
         * 
         */
        public Builder skipFinalSnapshot(Boolean skipFinalSnapshot) {
            return skipFinalSnapshot(Output.of(skipFinalSnapshot));
        }

        /**
         * @param snapshotIdentifier Specifies whether or not to create this cluster from a snapshot. You can use either the name or ARN when specifying a Neptune cluster snapshot, or the ARN when specifying a Neptune snapshot. Automated snapshots **should not** be used for this attribute, unless from a different cluster. Automated snapshots are deleted as part of cluster destruction when the resource is replaced.
         * 
         * @return builder
         * 
         */
        public Builder snapshotIdentifier(@Nullable Output snapshotIdentifier) {
            $.snapshotIdentifier = snapshotIdentifier;
            return this;
        }

        /**
         * @param snapshotIdentifier Specifies whether or not to create this cluster from a snapshot. You can use either the name or ARN when specifying a Neptune cluster snapshot, or the ARN when specifying a Neptune snapshot. Automated snapshots **should not** be used for this attribute, unless from a different cluster. Automated snapshots are deleted as part of cluster destruction when the resource is replaced.
         * 
         * @return builder
         * 
         */
        public Builder snapshotIdentifier(String snapshotIdentifier) {
            return snapshotIdentifier(Output.of(snapshotIdentifier));
        }

        /**
         * @param storageEncrypted Specifies whether the Neptune cluster is encrypted. The default is `false` if not specified.
         * 
         * @return builder
         * 
         */
        public Builder storageEncrypted(@Nullable Output storageEncrypted) {
            $.storageEncrypted = storageEncrypted;
            return this;
        }

        /**
         * @param storageEncrypted Specifies whether the Neptune cluster is encrypted. The default is `false` if not specified.
         * 
         * @return builder
         * 
         */
        public Builder storageEncrypted(Boolean storageEncrypted) {
            return storageEncrypted(Output.of(storageEncrypted));
        }

        /**
         * @param storageType Storage type associated with the cluster `standard/iopt1`. Default: `standard`
         * 
         * @return builder
         * 
         */
        public Builder storageType(@Nullable Output storageType) {
            $.storageType = storageType;
            return this;
        }

        /**
         * @param storageType Storage type associated with the cluster `standard/iopt1`. Default: `standard`
         * 
         * @return builder
         * 
         */
        public Builder storageType(String storageType) {
            return storageType(Output.of(storageType));
        }

        /**
         * @param tags A map of tags to assign to the Neptune cluster. 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 A map of tags to assign to the Neptune cluster. 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 A 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 A 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 vpcSecurityGroupIds List of VPC security groups to associate with the Cluster
         * 
         * @return builder
         * 
         */
        public Builder vpcSecurityGroupIds(@Nullable Output> vpcSecurityGroupIds) {
            $.vpcSecurityGroupIds = vpcSecurityGroupIds;
            return this;
        }

        /**
         * @param vpcSecurityGroupIds List of VPC security groups to associate with the Cluster
         * 
         * @return builder
         * 
         */
        public Builder vpcSecurityGroupIds(List vpcSecurityGroupIds) {
            return vpcSecurityGroupIds(Output.of(vpcSecurityGroupIds));
        }

        /**
         * @param vpcSecurityGroupIds List of VPC security groups to associate with the Cluster
         * 
         * @return builder
         * 
         */
        public Builder vpcSecurityGroupIds(String... vpcSecurityGroupIds) {
            return vpcSecurityGroupIds(List.of(vpcSecurityGroupIds));
        }

        public ClusterState build() {
            return $;
        }
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy