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

commonMain.aws.sdk.kotlin.services.redshift.model.Cluster.kt Maven / Gradle / Ivy

The newest version!
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.redshift.model

import aws.smithy.kotlin.runtime.SdkDsl
import aws.smithy.kotlin.runtime.time.Instant

/**
 * Describes a cluster.
 */
public class Cluster private constructor(builder: Builder) {
    /**
     * A boolean value that, if `true`, indicates that major version upgrades will be applied automatically to the cluster during the maintenance window.
     */
    public val allowVersionUpgrade: kotlin.Boolean? = builder.allowVersionUpgrade
    /**
     * This field is retired. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).
     */
    public val aquaConfiguration: aws.sdk.kotlin.services.redshift.model.AquaConfiguration? = builder.aquaConfiguration
    /**
     * The number of days that automatic cluster snapshots are retained.
     */
    public val automatedSnapshotRetentionPeriod: kotlin.Int? = builder.automatedSnapshotRetentionPeriod
    /**
     * The name of the Availability Zone in which the cluster is located.
     */
    public val availabilityZone: kotlin.String? = builder.availabilityZone
    /**
     * Describes the status of the Availability Zone relocation operation.
     */
    public val availabilityZoneRelocationStatus: kotlin.String? = builder.availabilityZoneRelocationStatus
    /**
     * The availability status of the cluster for queries. Possible values are the following:
     * + Available - The cluster is available for queries.
     * + Unavailable - The cluster is not available for queries.
     * + Maintenance - The cluster is intermittently available for queries due to maintenance activities.
     * + Modifying - The cluster is intermittently available for queries due to changes that modify the cluster.
     * + Failed - The cluster failed and is not available for queries.
     */
    public val clusterAvailabilityStatus: kotlin.String? = builder.clusterAvailabilityStatus
    /**
     * The date and time that the cluster was created.
     */
    public val clusterCreateTime: aws.smithy.kotlin.runtime.time.Instant? = builder.clusterCreateTime
    /**
     * The unique identifier of the cluster.
     */
    public val clusterIdentifier: kotlin.String? = builder.clusterIdentifier
    /**
     * The namespace Amazon Resource Name (ARN) of the cluster.
     */
    public val clusterNamespaceArn: kotlin.String? = builder.clusterNamespaceArn
    /**
     * The nodes in the cluster.
     */
    public val clusterNodes: List? = builder.clusterNodes
    /**
     * The list of cluster parameter groups that are associated with this cluster. Each parameter group in the list is returned with its status.
     */
    public val clusterParameterGroups: List? = builder.clusterParameterGroups
    /**
     * The public key for the cluster.
     */
    public val clusterPublicKey: kotlin.String? = builder.clusterPublicKey
    /**
     * The specific revision number of the database in the cluster.
     */
    public val clusterRevisionNumber: kotlin.String? = builder.clusterRevisionNumber
    /**
     * A list of cluster security group that are associated with the cluster. Each security group is represented by an element that contains `ClusterSecurityGroup.Name` and `ClusterSecurityGroup.Status` subelements.
     *
     * Cluster security groups are used when the cluster is not created in an Amazon Virtual Private Cloud (VPC). Clusters that are created in a VPC use VPC security groups, which are listed by the **VpcSecurityGroups** parameter.
     */
    public val clusterSecurityGroups: List? = builder.clusterSecurityGroups
    /**
     * A value that returns the destination region and retention period that are configured for cross-region snapshot copy.
     */
    public val clusterSnapshotCopyStatus: aws.sdk.kotlin.services.redshift.model.ClusterSnapshotCopyStatus? = builder.clusterSnapshotCopyStatus
    /**
     * The current state of the cluster. Possible values are the following:
     * + `available`
     * + `available, prep-for-resize`
     * + `available, resize-cleanup`
     * + `cancelling-resize`
     * + `creating`
     * + `deleting`
     * + `final-snapshot`
     * + `hardware-failure`
     * + `incompatible-hsm`
     * + `incompatible-network`
     * + `incompatible-parameters`
     * + `incompatible-restore`
     * + `modifying`
     * + `paused`
     * + `rebooting`
     * + `renaming`
     * + `resizing`
     * + `rotating-keys`
     * + `storage-full`
     * + `updating-hsm`
     */
    public val clusterStatus: kotlin.String? = builder.clusterStatus
    /**
     * The name of the subnet group that is associated with the cluster. This parameter is valid only when the cluster is in a VPC.
     */
    public val clusterSubnetGroupName: kotlin.String? = builder.clusterSubnetGroupName
    /**
     * The version ID of the Amazon Redshift engine that is running on the cluster.
     */
    public val clusterVersion: kotlin.String? = builder.clusterVersion
    /**
     * The certificate Amazon Resource Name (ARN) for the custom domain name.
     */
    public val customDomainCertificateArn: kotlin.String? = builder.customDomainCertificateArn
    /**
     * The expiration date for the certificate associated with the custom domain name.
     */
    public val customDomainCertificateExpiryDate: aws.smithy.kotlin.runtime.time.Instant? = builder.customDomainCertificateExpiryDate
    /**
     * The custom domain name associated with the cluster.
     */
    public val customDomainName: kotlin.String? = builder.customDomainName
    /**
     *
     */
    public val dataTransferProgress: aws.sdk.kotlin.services.redshift.model.DataTransferProgress? = builder.dataTransferProgress
    /**
     * The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named `dev`dev was created by default.
     */
    public val dbName: kotlin.String? = builder.dbName
    /**
     * The Amazon Resource Name (ARN) for the IAM role set as default for the cluster.
     */
    public val defaultIamRoleArn: kotlin.String? = builder.defaultIamRoleArn
    /**
     * Describes a group of `DeferredMaintenanceWindow` objects.
     */
    public val deferredMaintenanceWindows: List? = builder.deferredMaintenanceWindows
    /**
     * The status of the elastic IP (EIP) address.
     */
    public val elasticIpStatus: aws.sdk.kotlin.services.redshift.model.ElasticIpStatus? = builder.elasticIpStatus
    /**
     * The number of nodes that you can resize the cluster to with the elastic resize method.
     */
    public val elasticResizeNumberOfNodeOptions: kotlin.String? = builder.elasticResizeNumberOfNodeOptions
    /**
     * A boolean value that, if `true`, indicates that data in the cluster is encrypted at rest.
     */
    public val encrypted: kotlin.Boolean? = builder.encrypted
    /**
     * The connection endpoint.
     */
    public val endpoint: aws.sdk.kotlin.services.redshift.model.Endpoint? = builder.endpoint
    /**
     * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see [Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) in the Amazon Redshift Cluster Management Guide.
     *
     * If this option is `true`, enhanced VPC routing is enabled.
     *
     * Default: false
     */
    public val enhancedVpcRouting: kotlin.Boolean? = builder.enhancedVpcRouting
    /**
     * The date and time when the next snapshot is expected to be taken for clusters with a valid snapshot schedule and backups enabled.
     */
    public val expectedNextSnapshotScheduleTime: aws.smithy.kotlin.runtime.time.Instant? = builder.expectedNextSnapshotScheduleTime
    /**
     * The status of next expected snapshot for clusters having a valid snapshot schedule and backups enabled. Possible values are the following:
     * + OnTrack - The next snapshot is expected to be taken on time.
     * + Pending - The next snapshot is pending to be taken.
     */
    public val expectedNextSnapshotScheduleTimeStatus: kotlin.String? = builder.expectedNextSnapshotScheduleTimeStatus
    /**
     * A value that reports whether the Amazon Redshift cluster has finished applying any hardware security module (HSM) settings changes specified in a modify cluster command.
     *
     * Values: active, applying
     */
    public val hsmStatus: aws.sdk.kotlin.services.redshift.model.HsmStatus? = builder.hsmStatus
    /**
     * A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services.
     */
    public val iamRoles: List? = builder.iamRoles
    /**
     * The IP address type for the cluster. Possible values are `ipv4` and `dualstack`.
     */
    public val ipAddressType: kotlin.String? = builder.ipAddressType
    /**
     * The Key Management Service (KMS) key ID of the encryption key used to encrypt data in the cluster.
     */
    public val kmsKeyId: kotlin.String? = builder.kmsKeyId
    /**
     * The name of the maintenance track for the cluster.
     */
    public val maintenanceTrackName: kotlin.String? = builder.maintenanceTrackName
    /**
     * The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.
     *
     * The value must be either -1 or an integer between 1 and 3,653.
     */
    public val manualSnapshotRetentionPeriod: kotlin.Int? = builder.manualSnapshotRetentionPeriod
    /**
     * The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.
     */
    public val masterPasswordSecretArn: kotlin.String? = builder.masterPasswordSecretArn
    /**
     * The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.
     */
    public val masterPasswordSecretKmsKeyId: kotlin.String? = builder.masterPasswordSecretKmsKeyId
    /**
     * The admin user name for the cluster. This name is used to connect to the database that is specified in the **DBName** parameter.
     */
    public val masterUsername: kotlin.String? = builder.masterUsername
    /**
     * The status of a modify operation, if any, initiated for the cluster.
     */
    public val modifyStatus: kotlin.String? = builder.modifyStatus
    /**
     * A boolean value that, if true, indicates that the cluster is deployed in two Availability Zones.
     */
    public val multiAz: kotlin.String? = builder.multiAz
    /**
     * The secondary compute unit of a cluster, if Multi-AZ deployment is turned on.
     */
    public val multiAzSecondary: aws.sdk.kotlin.services.redshift.model.SecondaryClusterInfo? = builder.multiAzSecondary
    /**
     * The date and time in UTC when system maintenance can begin.
     */
    public val nextMaintenanceWindowStartTime: aws.smithy.kotlin.runtime.time.Instant? = builder.nextMaintenanceWindowStartTime
    /**
     * The node type for the nodes in the cluster.
     */
    public val nodeType: kotlin.String? = builder.nodeType
    /**
     * The number of compute nodes in the cluster.
     */
    public val numberOfNodes: kotlin.Int? = builder.numberOfNodes
    /**
     * Cluster operations that are waiting to be started.
     */
    public val pendingActions: List? = builder.pendingActions
    /**
     * A value that, if present, indicates that changes to the cluster are pending. Specific pending changes are identified by subelements.
     */
    public val pendingModifiedValues: aws.sdk.kotlin.services.redshift.model.PendingModifiedValues? = builder.pendingModifiedValues
    /**
     * The weekly time range, in Universal Coordinated Time (UTC), during which system maintenance can occur.
     */
    public val preferredMaintenanceWindow: kotlin.String? = builder.preferredMaintenanceWindow
    /**
     * A boolean value that, if `true`, indicates that the cluster can be accessed from a public network.
     */
    public val publiclyAccessible: kotlin.Boolean? = builder.publiclyAccessible
    /**
     * The status of the reserved-node exchange request. Statuses include in-progress and requested.
     */
    public val reservedNodeExchangeStatus: aws.sdk.kotlin.services.redshift.model.ReservedNodeExchangeStatus? = builder.reservedNodeExchangeStatus
    /**
     * Returns the following:
     * + AllowCancelResize: a boolean value indicating if the resize operation can be cancelled.
     * + ResizeType: Returns ClassicResize
     */
    public val resizeInfo: aws.sdk.kotlin.services.redshift.model.ResizeInfo? = builder.resizeInfo
    /**
     * A value that describes the status of a cluster restore action. This parameter returns null if the cluster was not created by restoring a snapshot.
     */
    public val restoreStatus: aws.sdk.kotlin.services.redshift.model.RestoreStatus? = builder.restoreStatus
    /**
     * A unique identifier for the cluster snapshot schedule.
     */
    public val snapshotScheduleIdentifier: kotlin.String? = builder.snapshotScheduleIdentifier
    /**
     * The current state of the cluster snapshot schedule.
     */
    public val snapshotScheduleState: aws.sdk.kotlin.services.redshift.model.ScheduleState? = builder.snapshotScheduleState
    /**
     * The list of tags for the cluster.
     */
    public val tags: List? = builder.tags
    /**
     * The total storage capacity of the cluster in megabytes.
     */
    public val totalStorageCapacityInMegaBytes: kotlin.Long? = builder.totalStorageCapacityInMegaBytes
    /**
     * The identifier of the VPC the cluster is in, if the cluster is in a VPC.
     */
    public val vpcId: kotlin.String? = builder.vpcId
    /**
     * A list of Amazon Virtual Private Cloud (Amazon VPC) security groups that are associated with the cluster. This parameter is returned only if the cluster is in a VPC.
     */
    public val vpcSecurityGroups: List? = builder.vpcSecurityGroups

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.redshift.model.Cluster = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("Cluster(")
        append("allowVersionUpgrade=$allowVersionUpgrade,")
        append("aquaConfiguration=$aquaConfiguration,")
        append("automatedSnapshotRetentionPeriod=$automatedSnapshotRetentionPeriod,")
        append("availabilityZone=$availabilityZone,")
        append("availabilityZoneRelocationStatus=$availabilityZoneRelocationStatus,")
        append("clusterAvailabilityStatus=$clusterAvailabilityStatus,")
        append("clusterCreateTime=$clusterCreateTime,")
        append("clusterIdentifier=$clusterIdentifier,")
        append("clusterNamespaceArn=$clusterNamespaceArn,")
        append("clusterNodes=$clusterNodes,")
        append("clusterParameterGroups=$clusterParameterGroups,")
        append("clusterPublicKey=$clusterPublicKey,")
        append("clusterRevisionNumber=$clusterRevisionNumber,")
        append("clusterSecurityGroups=$clusterSecurityGroups,")
        append("clusterSnapshotCopyStatus=$clusterSnapshotCopyStatus,")
        append("clusterStatus=$clusterStatus,")
        append("clusterSubnetGroupName=$clusterSubnetGroupName,")
        append("clusterVersion=$clusterVersion,")
        append("customDomainCertificateArn=$customDomainCertificateArn,")
        append("customDomainCertificateExpiryDate=$customDomainCertificateExpiryDate,")
        append("customDomainName=$customDomainName,")
        append("dataTransferProgress=$dataTransferProgress,")
        append("dbName=$dbName,")
        append("defaultIamRoleArn=$defaultIamRoleArn,")
        append("deferredMaintenanceWindows=$deferredMaintenanceWindows,")
        append("elasticIpStatus=$elasticIpStatus,")
        append("elasticResizeNumberOfNodeOptions=$elasticResizeNumberOfNodeOptions,")
        append("encrypted=$encrypted,")
        append("endpoint=$endpoint,")
        append("enhancedVpcRouting=$enhancedVpcRouting,")
        append("expectedNextSnapshotScheduleTime=$expectedNextSnapshotScheduleTime,")
        append("expectedNextSnapshotScheduleTimeStatus=$expectedNextSnapshotScheduleTimeStatus,")
        append("hsmStatus=$hsmStatus,")
        append("iamRoles=$iamRoles,")
        append("ipAddressType=$ipAddressType,")
        append("kmsKeyId=$kmsKeyId,")
        append("maintenanceTrackName=$maintenanceTrackName,")
        append("manualSnapshotRetentionPeriod=$manualSnapshotRetentionPeriod,")
        append("masterPasswordSecretArn=$masterPasswordSecretArn,")
        append("masterPasswordSecretKmsKeyId=$masterPasswordSecretKmsKeyId,")
        append("masterUsername=$masterUsername,")
        append("modifyStatus=$modifyStatus,")
        append("multiAz=$multiAz,")
        append("multiAzSecondary=$multiAzSecondary,")
        append("nextMaintenanceWindowStartTime=$nextMaintenanceWindowStartTime,")
        append("nodeType=$nodeType,")
        append("numberOfNodes=$numberOfNodes,")
        append("pendingActions=$pendingActions,")
        append("pendingModifiedValues=$pendingModifiedValues,")
        append("preferredMaintenanceWindow=$preferredMaintenanceWindow,")
        append("publiclyAccessible=$publiclyAccessible,")
        append("reservedNodeExchangeStatus=$reservedNodeExchangeStatus,")
        append("resizeInfo=$resizeInfo,")
        append("restoreStatus=$restoreStatus,")
        append("snapshotScheduleIdentifier=$snapshotScheduleIdentifier,")
        append("snapshotScheduleState=$snapshotScheduleState,")
        append("tags=$tags,")
        append("totalStorageCapacityInMegaBytes=$totalStorageCapacityInMegaBytes,")
        append("vpcId=$vpcId,")
        append("vpcSecurityGroups=$vpcSecurityGroups")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = allowVersionUpgrade?.hashCode() ?: 0
        result = 31 * result + (aquaConfiguration?.hashCode() ?: 0)
        result = 31 * result + (automatedSnapshotRetentionPeriod ?: 0)
        result = 31 * result + (availabilityZone?.hashCode() ?: 0)
        result = 31 * result + (availabilityZoneRelocationStatus?.hashCode() ?: 0)
        result = 31 * result + (clusterAvailabilityStatus?.hashCode() ?: 0)
        result = 31 * result + (clusterCreateTime?.hashCode() ?: 0)
        result = 31 * result + (clusterIdentifier?.hashCode() ?: 0)
        result = 31 * result + (clusterNamespaceArn?.hashCode() ?: 0)
        result = 31 * result + (clusterNodes?.hashCode() ?: 0)
        result = 31 * result + (clusterParameterGroups?.hashCode() ?: 0)
        result = 31 * result + (clusterPublicKey?.hashCode() ?: 0)
        result = 31 * result + (clusterRevisionNumber?.hashCode() ?: 0)
        result = 31 * result + (clusterSecurityGroups?.hashCode() ?: 0)
        result = 31 * result + (clusterSnapshotCopyStatus?.hashCode() ?: 0)
        result = 31 * result + (clusterStatus?.hashCode() ?: 0)
        result = 31 * result + (clusterSubnetGroupName?.hashCode() ?: 0)
        result = 31 * result + (clusterVersion?.hashCode() ?: 0)
        result = 31 * result + (customDomainCertificateArn?.hashCode() ?: 0)
        result = 31 * result + (customDomainCertificateExpiryDate?.hashCode() ?: 0)
        result = 31 * result + (customDomainName?.hashCode() ?: 0)
        result = 31 * result + (dataTransferProgress?.hashCode() ?: 0)
        result = 31 * result + (dbName?.hashCode() ?: 0)
        result = 31 * result + (defaultIamRoleArn?.hashCode() ?: 0)
        result = 31 * result + (deferredMaintenanceWindows?.hashCode() ?: 0)
        result = 31 * result + (elasticIpStatus?.hashCode() ?: 0)
        result = 31 * result + (elasticResizeNumberOfNodeOptions?.hashCode() ?: 0)
        result = 31 * result + (encrypted?.hashCode() ?: 0)
        result = 31 * result + (endpoint?.hashCode() ?: 0)
        result = 31 * result + (enhancedVpcRouting?.hashCode() ?: 0)
        result = 31 * result + (expectedNextSnapshotScheduleTime?.hashCode() ?: 0)
        result = 31 * result + (expectedNextSnapshotScheduleTimeStatus?.hashCode() ?: 0)
        result = 31 * result + (hsmStatus?.hashCode() ?: 0)
        result = 31 * result + (iamRoles?.hashCode() ?: 0)
        result = 31 * result + (ipAddressType?.hashCode() ?: 0)
        result = 31 * result + (kmsKeyId?.hashCode() ?: 0)
        result = 31 * result + (maintenanceTrackName?.hashCode() ?: 0)
        result = 31 * result + (manualSnapshotRetentionPeriod ?: 0)
        result = 31 * result + (masterPasswordSecretArn?.hashCode() ?: 0)
        result = 31 * result + (masterPasswordSecretKmsKeyId?.hashCode() ?: 0)
        result = 31 * result + (masterUsername?.hashCode() ?: 0)
        result = 31 * result + (modifyStatus?.hashCode() ?: 0)
        result = 31 * result + (multiAz?.hashCode() ?: 0)
        result = 31 * result + (multiAzSecondary?.hashCode() ?: 0)
        result = 31 * result + (nextMaintenanceWindowStartTime?.hashCode() ?: 0)
        result = 31 * result + (nodeType?.hashCode() ?: 0)
        result = 31 * result + (numberOfNodes ?: 0)
        result = 31 * result + (pendingActions?.hashCode() ?: 0)
        result = 31 * result + (pendingModifiedValues?.hashCode() ?: 0)
        result = 31 * result + (preferredMaintenanceWindow?.hashCode() ?: 0)
        result = 31 * result + (publiclyAccessible?.hashCode() ?: 0)
        result = 31 * result + (reservedNodeExchangeStatus?.hashCode() ?: 0)
        result = 31 * result + (resizeInfo?.hashCode() ?: 0)
        result = 31 * result + (restoreStatus?.hashCode() ?: 0)
        result = 31 * result + (snapshotScheduleIdentifier?.hashCode() ?: 0)
        result = 31 * result + (snapshotScheduleState?.hashCode() ?: 0)
        result = 31 * result + (tags?.hashCode() ?: 0)
        result = 31 * result + (totalStorageCapacityInMegaBytes?.hashCode() ?: 0)
        result = 31 * result + (vpcId?.hashCode() ?: 0)
        result = 31 * result + (vpcSecurityGroups?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as Cluster

        if (allowVersionUpgrade != other.allowVersionUpgrade) return false
        if (aquaConfiguration != other.aquaConfiguration) return false
        if (automatedSnapshotRetentionPeriod != other.automatedSnapshotRetentionPeriod) return false
        if (availabilityZone != other.availabilityZone) return false
        if (availabilityZoneRelocationStatus != other.availabilityZoneRelocationStatus) return false
        if (clusterAvailabilityStatus != other.clusterAvailabilityStatus) return false
        if (clusterCreateTime != other.clusterCreateTime) return false
        if (clusterIdentifier != other.clusterIdentifier) return false
        if (clusterNamespaceArn != other.clusterNamespaceArn) return false
        if (clusterNodes != other.clusterNodes) return false
        if (clusterParameterGroups != other.clusterParameterGroups) return false
        if (clusterPublicKey != other.clusterPublicKey) return false
        if (clusterRevisionNumber != other.clusterRevisionNumber) return false
        if (clusterSecurityGroups != other.clusterSecurityGroups) return false
        if (clusterSnapshotCopyStatus != other.clusterSnapshotCopyStatus) return false
        if (clusterStatus != other.clusterStatus) return false
        if (clusterSubnetGroupName != other.clusterSubnetGroupName) return false
        if (clusterVersion != other.clusterVersion) return false
        if (customDomainCertificateArn != other.customDomainCertificateArn) return false
        if (customDomainCertificateExpiryDate != other.customDomainCertificateExpiryDate) return false
        if (customDomainName != other.customDomainName) return false
        if (dataTransferProgress != other.dataTransferProgress) return false
        if (dbName != other.dbName) return false
        if (defaultIamRoleArn != other.defaultIamRoleArn) return false
        if (deferredMaintenanceWindows != other.deferredMaintenanceWindows) return false
        if (elasticIpStatus != other.elasticIpStatus) return false
        if (elasticResizeNumberOfNodeOptions != other.elasticResizeNumberOfNodeOptions) return false
        if (encrypted != other.encrypted) return false
        if (endpoint != other.endpoint) return false
        if (enhancedVpcRouting != other.enhancedVpcRouting) return false
        if (expectedNextSnapshotScheduleTime != other.expectedNextSnapshotScheduleTime) return false
        if (expectedNextSnapshotScheduleTimeStatus != other.expectedNextSnapshotScheduleTimeStatus) return false
        if (hsmStatus != other.hsmStatus) return false
        if (iamRoles != other.iamRoles) return false
        if (ipAddressType != other.ipAddressType) return false
        if (kmsKeyId != other.kmsKeyId) return false
        if (maintenanceTrackName != other.maintenanceTrackName) return false
        if (manualSnapshotRetentionPeriod != other.manualSnapshotRetentionPeriod) return false
        if (masterPasswordSecretArn != other.masterPasswordSecretArn) return false
        if (masterPasswordSecretKmsKeyId != other.masterPasswordSecretKmsKeyId) return false
        if (masterUsername != other.masterUsername) return false
        if (modifyStatus != other.modifyStatus) return false
        if (multiAz != other.multiAz) return false
        if (multiAzSecondary != other.multiAzSecondary) return false
        if (nextMaintenanceWindowStartTime != other.nextMaintenanceWindowStartTime) return false
        if (nodeType != other.nodeType) return false
        if (numberOfNodes != other.numberOfNodes) return false
        if (pendingActions != other.pendingActions) return false
        if (pendingModifiedValues != other.pendingModifiedValues) return false
        if (preferredMaintenanceWindow != other.preferredMaintenanceWindow) return false
        if (publiclyAccessible != other.publiclyAccessible) return false
        if (reservedNodeExchangeStatus != other.reservedNodeExchangeStatus) return false
        if (resizeInfo != other.resizeInfo) return false
        if (restoreStatus != other.restoreStatus) return false
        if (snapshotScheduleIdentifier != other.snapshotScheduleIdentifier) return false
        if (snapshotScheduleState != other.snapshotScheduleState) return false
        if (tags != other.tags) return false
        if (totalStorageCapacityInMegaBytes != other.totalStorageCapacityInMegaBytes) return false
        if (vpcId != other.vpcId) return false
        if (vpcSecurityGroups != other.vpcSecurityGroups) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.redshift.model.Cluster = Builder(this).apply(block).build()

    @SdkDsl
    public class Builder {
        /**
         * A boolean value that, if `true`, indicates that major version upgrades will be applied automatically to the cluster during the maintenance window.
         */
        public var allowVersionUpgrade: kotlin.Boolean? = null
        /**
         * This field is retired. Amazon Redshift automatically determines whether to use AQUA (Advanced Query Accelerator).
         */
        public var aquaConfiguration: aws.sdk.kotlin.services.redshift.model.AquaConfiguration? = null
        /**
         * The number of days that automatic cluster snapshots are retained.
         */
        public var automatedSnapshotRetentionPeriod: kotlin.Int? = null
        /**
         * The name of the Availability Zone in which the cluster is located.
         */
        public var availabilityZone: kotlin.String? = null
        /**
         * Describes the status of the Availability Zone relocation operation.
         */
        public var availabilityZoneRelocationStatus: kotlin.String? = null
        /**
         * The availability status of the cluster for queries. Possible values are the following:
         * + Available - The cluster is available for queries.
         * + Unavailable - The cluster is not available for queries.
         * + Maintenance - The cluster is intermittently available for queries due to maintenance activities.
         * + Modifying - The cluster is intermittently available for queries due to changes that modify the cluster.
         * + Failed - The cluster failed and is not available for queries.
         */
        public var clusterAvailabilityStatus: kotlin.String? = null
        /**
         * The date and time that the cluster was created.
         */
        public var clusterCreateTime: aws.smithy.kotlin.runtime.time.Instant? = null
        /**
         * The unique identifier of the cluster.
         */
        public var clusterIdentifier: kotlin.String? = null
        /**
         * The namespace Amazon Resource Name (ARN) of the cluster.
         */
        public var clusterNamespaceArn: kotlin.String? = null
        /**
         * The nodes in the cluster.
         */
        public var clusterNodes: List? = null
        /**
         * The list of cluster parameter groups that are associated with this cluster. Each parameter group in the list is returned with its status.
         */
        public var clusterParameterGroups: List? = null
        /**
         * The public key for the cluster.
         */
        public var clusterPublicKey: kotlin.String? = null
        /**
         * The specific revision number of the database in the cluster.
         */
        public var clusterRevisionNumber: kotlin.String? = null
        /**
         * A list of cluster security group that are associated with the cluster. Each security group is represented by an element that contains `ClusterSecurityGroup.Name` and `ClusterSecurityGroup.Status` subelements.
         *
         * Cluster security groups are used when the cluster is not created in an Amazon Virtual Private Cloud (VPC). Clusters that are created in a VPC use VPC security groups, which are listed by the **VpcSecurityGroups** parameter.
         */
        public var clusterSecurityGroups: List? = null
        /**
         * A value that returns the destination region and retention period that are configured for cross-region snapshot copy.
         */
        public var clusterSnapshotCopyStatus: aws.sdk.kotlin.services.redshift.model.ClusterSnapshotCopyStatus? = null
        /**
         * The current state of the cluster. Possible values are the following:
         * + `available`
         * + `available, prep-for-resize`
         * + `available, resize-cleanup`
         * + `cancelling-resize`
         * + `creating`
         * + `deleting`
         * + `final-snapshot`
         * + `hardware-failure`
         * + `incompatible-hsm`
         * + `incompatible-network`
         * + `incompatible-parameters`
         * + `incompatible-restore`
         * + `modifying`
         * + `paused`
         * + `rebooting`
         * + `renaming`
         * + `resizing`
         * + `rotating-keys`
         * + `storage-full`
         * + `updating-hsm`
         */
        public var clusterStatus: kotlin.String? = null
        /**
         * The name of the subnet group that is associated with the cluster. This parameter is valid only when the cluster is in a VPC.
         */
        public var clusterSubnetGroupName: kotlin.String? = null
        /**
         * The version ID of the Amazon Redshift engine that is running on the cluster.
         */
        public var clusterVersion: kotlin.String? = null
        /**
         * The certificate Amazon Resource Name (ARN) for the custom domain name.
         */
        public var customDomainCertificateArn: kotlin.String? = null
        /**
         * The expiration date for the certificate associated with the custom domain name.
         */
        public var customDomainCertificateExpiryDate: aws.smithy.kotlin.runtime.time.Instant? = null
        /**
         * The custom domain name associated with the cluster.
         */
        public var customDomainName: kotlin.String? = null
        /**
         *
         */
        public var dataTransferProgress: aws.sdk.kotlin.services.redshift.model.DataTransferProgress? = null
        /**
         * The name of the initial database that was created when the cluster was created. This same name is returned for the life of the cluster. If an initial database was not specified, a database named `dev`dev was created by default.
         */
        public var dbName: kotlin.String? = null
        /**
         * The Amazon Resource Name (ARN) for the IAM role set as default for the cluster.
         */
        public var defaultIamRoleArn: kotlin.String? = null
        /**
         * Describes a group of `DeferredMaintenanceWindow` objects.
         */
        public var deferredMaintenanceWindows: List? = null
        /**
         * The status of the elastic IP (EIP) address.
         */
        public var elasticIpStatus: aws.sdk.kotlin.services.redshift.model.ElasticIpStatus? = null
        /**
         * The number of nodes that you can resize the cluster to with the elastic resize method.
         */
        public var elasticResizeNumberOfNodeOptions: kotlin.String? = null
        /**
         * A boolean value that, if `true`, indicates that data in the cluster is encrypted at rest.
         */
        public var encrypted: kotlin.Boolean? = null
        /**
         * The connection endpoint.
         */
        public var endpoint: aws.sdk.kotlin.services.redshift.model.Endpoint? = null
        /**
         * An option that specifies whether to create the cluster with enhanced VPC routing enabled. To create a cluster that uses enhanced VPC routing, the cluster must be in a VPC. For more information, see [Enhanced VPC Routing](https://docs.aws.amazon.com/redshift/latest/mgmt/enhanced-vpc-routing.html) in the Amazon Redshift Cluster Management Guide.
         *
         * If this option is `true`, enhanced VPC routing is enabled.
         *
         * Default: false
         */
        public var enhancedVpcRouting: kotlin.Boolean? = null
        /**
         * The date and time when the next snapshot is expected to be taken for clusters with a valid snapshot schedule and backups enabled.
         */
        public var expectedNextSnapshotScheduleTime: aws.smithy.kotlin.runtime.time.Instant? = null
        /**
         * The status of next expected snapshot for clusters having a valid snapshot schedule and backups enabled. Possible values are the following:
         * + OnTrack - The next snapshot is expected to be taken on time.
         * + Pending - The next snapshot is pending to be taken.
         */
        public var expectedNextSnapshotScheduleTimeStatus: kotlin.String? = null
        /**
         * A value that reports whether the Amazon Redshift cluster has finished applying any hardware security module (HSM) settings changes specified in a modify cluster command.
         *
         * Values: active, applying
         */
        public var hsmStatus: aws.sdk.kotlin.services.redshift.model.HsmStatus? = null
        /**
         * A list of Identity and Access Management (IAM) roles that can be used by the cluster to access other Amazon Web Services services.
         */
        public var iamRoles: List? = null
        /**
         * The IP address type for the cluster. Possible values are `ipv4` and `dualstack`.
         */
        public var ipAddressType: kotlin.String? = null
        /**
         * The Key Management Service (KMS) key ID of the encryption key used to encrypt data in the cluster.
         */
        public var kmsKeyId: kotlin.String? = null
        /**
         * The name of the maintenance track for the cluster.
         */
        public var maintenanceTrackName: kotlin.String? = null
        /**
         * The default number of days to retain a manual snapshot. If the value is -1, the snapshot is retained indefinitely. This setting doesn't change the retention period of existing snapshots.
         *
         * The value must be either -1 or an integer between 1 and 3,653.
         */
        public var manualSnapshotRetentionPeriod: kotlin.Int? = null
        /**
         * The Amazon Resource Name (ARN) for the cluster's admin user credentials secret.
         */
        public var masterPasswordSecretArn: kotlin.String? = null
        /**
         * The ID of the Key Management Service (KMS) key used to encrypt and store the cluster's admin credentials secret.
         */
        public var masterPasswordSecretKmsKeyId: kotlin.String? = null
        /**
         * The admin user name for the cluster. This name is used to connect to the database that is specified in the **DBName** parameter.
         */
        public var masterUsername: kotlin.String? = null
        /**
         * The status of a modify operation, if any, initiated for the cluster.
         */
        public var modifyStatus: kotlin.String? = null
        /**
         * A boolean value that, if true, indicates that the cluster is deployed in two Availability Zones.
         */
        public var multiAz: kotlin.String? = null
        /**
         * The secondary compute unit of a cluster, if Multi-AZ deployment is turned on.
         */
        public var multiAzSecondary: aws.sdk.kotlin.services.redshift.model.SecondaryClusterInfo? = null
        /**
         * The date and time in UTC when system maintenance can begin.
         */
        public var nextMaintenanceWindowStartTime: aws.smithy.kotlin.runtime.time.Instant? = null
        /**
         * The node type for the nodes in the cluster.
         */
        public var nodeType: kotlin.String? = null
        /**
         * The number of compute nodes in the cluster.
         */
        public var numberOfNodes: kotlin.Int? = null
        /**
         * Cluster operations that are waiting to be started.
         */
        public var pendingActions: List? = null
        /**
         * A value that, if present, indicates that changes to the cluster are pending. Specific pending changes are identified by subelements.
         */
        public var pendingModifiedValues: aws.sdk.kotlin.services.redshift.model.PendingModifiedValues? = null
        /**
         * The weekly time range, in Universal Coordinated Time (UTC), during which system maintenance can occur.
         */
        public var preferredMaintenanceWindow: kotlin.String? = null
        /**
         * A boolean value that, if `true`, indicates that the cluster can be accessed from a public network.
         */
        public var publiclyAccessible: kotlin.Boolean? = null
        /**
         * The status of the reserved-node exchange request. Statuses include in-progress and requested.
         */
        public var reservedNodeExchangeStatus: aws.sdk.kotlin.services.redshift.model.ReservedNodeExchangeStatus? = null
        /**
         * Returns the following:
         * + AllowCancelResize: a boolean value indicating if the resize operation can be cancelled.
         * + ResizeType: Returns ClassicResize
         */
        public var resizeInfo: aws.sdk.kotlin.services.redshift.model.ResizeInfo? = null
        /**
         * A value that describes the status of a cluster restore action. This parameter returns null if the cluster was not created by restoring a snapshot.
         */
        public var restoreStatus: aws.sdk.kotlin.services.redshift.model.RestoreStatus? = null
        /**
         * A unique identifier for the cluster snapshot schedule.
         */
        public var snapshotScheduleIdentifier: kotlin.String? = null
        /**
         * The current state of the cluster snapshot schedule.
         */
        public var snapshotScheduleState: aws.sdk.kotlin.services.redshift.model.ScheduleState? = null
        /**
         * The list of tags for the cluster.
         */
        public var tags: List? = null
        /**
         * The total storage capacity of the cluster in megabytes.
         */
        public var totalStorageCapacityInMegaBytes: kotlin.Long? = null
        /**
         * The identifier of the VPC the cluster is in, if the cluster is in a VPC.
         */
        public var vpcId: kotlin.String? = null
        /**
         * A list of Amazon Virtual Private Cloud (Amazon VPC) security groups that are associated with the cluster. This parameter is returned only if the cluster is in a VPC.
         */
        public var vpcSecurityGroups: List? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.redshift.model.Cluster) : this() {
            this.allowVersionUpgrade = x.allowVersionUpgrade
            this.aquaConfiguration = x.aquaConfiguration
            this.automatedSnapshotRetentionPeriod = x.automatedSnapshotRetentionPeriod
            this.availabilityZone = x.availabilityZone
            this.availabilityZoneRelocationStatus = x.availabilityZoneRelocationStatus
            this.clusterAvailabilityStatus = x.clusterAvailabilityStatus
            this.clusterCreateTime = x.clusterCreateTime
            this.clusterIdentifier = x.clusterIdentifier
            this.clusterNamespaceArn = x.clusterNamespaceArn
            this.clusterNodes = x.clusterNodes
            this.clusterParameterGroups = x.clusterParameterGroups
            this.clusterPublicKey = x.clusterPublicKey
            this.clusterRevisionNumber = x.clusterRevisionNumber
            this.clusterSecurityGroups = x.clusterSecurityGroups
            this.clusterSnapshotCopyStatus = x.clusterSnapshotCopyStatus
            this.clusterStatus = x.clusterStatus
            this.clusterSubnetGroupName = x.clusterSubnetGroupName
            this.clusterVersion = x.clusterVersion
            this.customDomainCertificateArn = x.customDomainCertificateArn
            this.customDomainCertificateExpiryDate = x.customDomainCertificateExpiryDate
            this.customDomainName = x.customDomainName
            this.dataTransferProgress = x.dataTransferProgress
            this.dbName = x.dbName
            this.defaultIamRoleArn = x.defaultIamRoleArn
            this.deferredMaintenanceWindows = x.deferredMaintenanceWindows
            this.elasticIpStatus = x.elasticIpStatus
            this.elasticResizeNumberOfNodeOptions = x.elasticResizeNumberOfNodeOptions
            this.encrypted = x.encrypted
            this.endpoint = x.endpoint
            this.enhancedVpcRouting = x.enhancedVpcRouting
            this.expectedNextSnapshotScheduleTime = x.expectedNextSnapshotScheduleTime
            this.expectedNextSnapshotScheduleTimeStatus = x.expectedNextSnapshotScheduleTimeStatus
            this.hsmStatus = x.hsmStatus
            this.iamRoles = x.iamRoles
            this.ipAddressType = x.ipAddressType
            this.kmsKeyId = x.kmsKeyId
            this.maintenanceTrackName = x.maintenanceTrackName
            this.manualSnapshotRetentionPeriod = x.manualSnapshotRetentionPeriod
            this.masterPasswordSecretArn = x.masterPasswordSecretArn
            this.masterPasswordSecretKmsKeyId = x.masterPasswordSecretKmsKeyId
            this.masterUsername = x.masterUsername
            this.modifyStatus = x.modifyStatus
            this.multiAz = x.multiAz
            this.multiAzSecondary = x.multiAzSecondary
            this.nextMaintenanceWindowStartTime = x.nextMaintenanceWindowStartTime
            this.nodeType = x.nodeType
            this.numberOfNodes = x.numberOfNodes
            this.pendingActions = x.pendingActions
            this.pendingModifiedValues = x.pendingModifiedValues
            this.preferredMaintenanceWindow = x.preferredMaintenanceWindow
            this.publiclyAccessible = x.publiclyAccessible
            this.reservedNodeExchangeStatus = x.reservedNodeExchangeStatus
            this.resizeInfo = x.resizeInfo
            this.restoreStatus = x.restoreStatus
            this.snapshotScheduleIdentifier = x.snapshotScheduleIdentifier
            this.snapshotScheduleState = x.snapshotScheduleState
            this.tags = x.tags
            this.totalStorageCapacityInMegaBytes = x.totalStorageCapacityInMegaBytes
            this.vpcId = x.vpcId
            this.vpcSecurityGroups = x.vpcSecurityGroups
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.redshift.model.Cluster = Cluster(this)

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.AquaConfiguration] inside the given [block]
         */
        public fun aquaConfiguration(block: aws.sdk.kotlin.services.redshift.model.AquaConfiguration.Builder.() -> kotlin.Unit) {
            this.aquaConfiguration = aws.sdk.kotlin.services.redshift.model.AquaConfiguration.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.ClusterSnapshotCopyStatus] inside the given [block]
         */
        public fun clusterSnapshotCopyStatus(block: aws.sdk.kotlin.services.redshift.model.ClusterSnapshotCopyStatus.Builder.() -> kotlin.Unit) {
            this.clusterSnapshotCopyStatus = aws.sdk.kotlin.services.redshift.model.ClusterSnapshotCopyStatus.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.DataTransferProgress] inside the given [block]
         */
        public fun dataTransferProgress(block: aws.sdk.kotlin.services.redshift.model.DataTransferProgress.Builder.() -> kotlin.Unit) {
            this.dataTransferProgress = aws.sdk.kotlin.services.redshift.model.DataTransferProgress.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.ElasticIpStatus] inside the given [block]
         */
        public fun elasticIpStatus(block: aws.sdk.kotlin.services.redshift.model.ElasticIpStatus.Builder.() -> kotlin.Unit) {
            this.elasticIpStatus = aws.sdk.kotlin.services.redshift.model.ElasticIpStatus.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.Endpoint] inside the given [block]
         */
        public fun endpoint(block: aws.sdk.kotlin.services.redshift.model.Endpoint.Builder.() -> kotlin.Unit) {
            this.endpoint = aws.sdk.kotlin.services.redshift.model.Endpoint.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.HsmStatus] inside the given [block]
         */
        public fun hsmStatus(block: aws.sdk.kotlin.services.redshift.model.HsmStatus.Builder.() -> kotlin.Unit) {
            this.hsmStatus = aws.sdk.kotlin.services.redshift.model.HsmStatus.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.SecondaryClusterInfo] inside the given [block]
         */
        public fun multiAzSecondary(block: aws.sdk.kotlin.services.redshift.model.SecondaryClusterInfo.Builder.() -> kotlin.Unit) {
            this.multiAzSecondary = aws.sdk.kotlin.services.redshift.model.SecondaryClusterInfo.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.PendingModifiedValues] inside the given [block]
         */
        public fun pendingModifiedValues(block: aws.sdk.kotlin.services.redshift.model.PendingModifiedValues.Builder.() -> kotlin.Unit) {
            this.pendingModifiedValues = aws.sdk.kotlin.services.redshift.model.PendingModifiedValues.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.ReservedNodeExchangeStatus] inside the given [block]
         */
        public fun reservedNodeExchangeStatus(block: aws.sdk.kotlin.services.redshift.model.ReservedNodeExchangeStatus.Builder.() -> kotlin.Unit) {
            this.reservedNodeExchangeStatus = aws.sdk.kotlin.services.redshift.model.ReservedNodeExchangeStatus.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.ResizeInfo] inside the given [block]
         */
        public fun resizeInfo(block: aws.sdk.kotlin.services.redshift.model.ResizeInfo.Builder.() -> kotlin.Unit) {
            this.resizeInfo = aws.sdk.kotlin.services.redshift.model.ResizeInfo.invoke(block)
        }

        /**
         * construct an [aws.sdk.kotlin.services.redshift.model.RestoreStatus] inside the given [block]
         */
        public fun restoreStatus(block: aws.sdk.kotlin.services.redshift.model.RestoreStatus.Builder.() -> kotlin.Unit) {
            this.restoreStatus = aws.sdk.kotlin.services.redshift.model.RestoreStatus.invoke(block)
        }

        internal fun correctErrors(): Builder {
            return this
        }
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy