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

commonMain.aws.sdk.kotlin.services.devopsguru.model.KmsServerSideEncryptionIntegrationConfig.kt Maven / Gradle / Ivy

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

package aws.sdk.kotlin.services.devopsguru.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * Information about whether DevOps Guru is configured to encrypt server-side data using KMS.
 */
public class KmsServerSideEncryptionIntegrationConfig private constructor(builder: Builder) {
    /**
     * Describes the specified KMS key.
     *
     * To specify a KMS key, use its key ID, key ARN, alias name, or alias ARN. When using an alias name, prefix it with "alias/". If you specify a predefined Amazon Web Services alias (an Amazon Web Services alias with no key ID), Amazon Web Services KMS associates the alias with an Amazon Web Services managed key and returns its KeyId and Arn in the response. To specify a KMS key in a different Amazon Web Services account, you must use the key ARN or alias ARN.
     *
     * For example:
     *
     * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
     *
     * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
     *
     * Alias name: alias/ExampleAlias
     *
     * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
     */
    public val kmsKeyId: kotlin.String? = builder.kmsKeyId
    /**
     * Specifies if DevOps Guru is enabled for KMS integration.
     */
    public val optInStatus: aws.sdk.kotlin.services.devopsguru.model.OptInStatus? = builder.optInStatus
    /**
     * The type of KMS key used. Customer managed keys are the KMS keys that you create. Amazon Web Services owned keys are keys that are owned and managed by DevOps Guru.
     */
    public val type: aws.sdk.kotlin.services.devopsguru.model.ServerSideEncryptionType? = builder.type

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

    override fun toString(): kotlin.String = buildString {
        append("KmsServerSideEncryptionIntegrationConfig(")
        append("kmsKeyId=$kmsKeyId,")
        append("optInStatus=$optInStatus,")
        append("type=$type")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = kmsKeyId?.hashCode() ?: 0
        result = 31 * result + (optInStatus?.hashCode() ?: 0)
        result = 31 * result + (type?.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 KmsServerSideEncryptionIntegrationConfig

        if (kmsKeyId != other.kmsKeyId) return false
        if (optInStatus != other.optInStatus) return false
        if (type != other.type) return false

        return true
    }

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

    @SdkDsl
    public class Builder {
        /**
         * Describes the specified KMS key.
         *
         * To specify a KMS key, use its key ID, key ARN, alias name, or alias ARN. When using an alias name, prefix it with "alias/". If you specify a predefined Amazon Web Services alias (an Amazon Web Services alias with no key ID), Amazon Web Services KMS associates the alias with an Amazon Web Services managed key and returns its KeyId and Arn in the response. To specify a KMS key in a different Amazon Web Services account, you must use the key ARN or alias ARN.
         *
         * For example:
         *
         * Key ID: 1234abcd-12ab-34cd-56ef-1234567890ab
         *
         * Key ARN: arn:aws:kms:us-east-2:111122223333:key/1234abcd-12ab-34cd-56ef-1234567890ab
         *
         * Alias name: alias/ExampleAlias
         *
         * Alias ARN: arn:aws:kms:us-east-2:111122223333:alias/ExampleAlias
         */
        public var kmsKeyId: kotlin.String? = null
        /**
         * Specifies if DevOps Guru is enabled for KMS integration.
         */
        public var optInStatus: aws.sdk.kotlin.services.devopsguru.model.OptInStatus? = null
        /**
         * The type of KMS key used. Customer managed keys are the KMS keys that you create. Amazon Web Services owned keys are keys that are owned and managed by DevOps Guru.
         */
        public var type: aws.sdk.kotlin.services.devopsguru.model.ServerSideEncryptionType? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.devopsguru.model.KmsServerSideEncryptionIntegrationConfig) : this() {
            this.kmsKeyId = x.kmsKeyId
            this.optInStatus = x.optInStatus
            this.type = x.type
        }

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

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




© 2015 - 2024 Weber Informatics LLC | Privacy Policy