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

commonMain.aws.sdk.kotlin.services.deadline.model.ServiceManagedEc2InstanceCapabilities.kt Maven / Gradle / Ivy

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

package aws.sdk.kotlin.services.deadline.model

import aws.smithy.kotlin.runtime.SdkDsl

/**
 * The Amazon EC2 instance capabilities.
 */
public class ServiceManagedEc2InstanceCapabilities private constructor(builder: Builder) {
    /**
     * The allowable Amazon EC2 instance types.
     */
    public val allowedInstanceTypes: List? = builder.allowedInstanceTypes
    /**
     * The CPU architecture type.
     */
    public val cpuArchitectureType: aws.sdk.kotlin.services.deadline.model.CpuArchitectureType = requireNotNull(builder.cpuArchitectureType) { "A non-null value must be provided for cpuArchitectureType" }
    /**
     * The custom capability amounts to require for instances in this fleet.
     */
    public val customAmounts: List? = builder.customAmounts
    /**
     * The custom capability attributes to require for instances in this fleet.
     */
    public val customAttributes: List? = builder.customAttributes
    /**
     * The instance types to exclude from the fleet.
     */
    public val excludedInstanceTypes: List? = builder.excludedInstanceTypes
    /**
     * The memory, as MiB, for the Amazon EC2 instance type.
     */
    public val memoryMib: aws.sdk.kotlin.services.deadline.model.MemoryMibRange? = builder.memoryMib
    /**
     * The operating system (OS) family.
     */
    public val osFamily: aws.sdk.kotlin.services.deadline.model.ServiceManagedFleetOperatingSystemFamily = requireNotNull(builder.osFamily) { "A non-null value must be provided for osFamily" }
    /**
     * The root EBS volume.
     */
    public val rootEbsVolume: aws.sdk.kotlin.services.deadline.model.Ec2EbsVolume? = builder.rootEbsVolume
    /**
     * The amount of vCPU to require for instances in this fleet.
     */
    public val vCpuCount: aws.sdk.kotlin.services.deadline.model.VCpuCountRange? = builder.vCpuCount

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

    override fun toString(): kotlin.String = buildString {
        append("ServiceManagedEc2InstanceCapabilities(")
        append("allowedInstanceTypes=$allowedInstanceTypes,")
        append("cpuArchitectureType=$cpuArchitectureType,")
        append("customAmounts=$customAmounts,")
        append("customAttributes=$customAttributes,")
        append("excludedInstanceTypes=$excludedInstanceTypes,")
        append("memoryMib=$memoryMib,")
        append("osFamily=$osFamily,")
        append("rootEbsVolume=$rootEbsVolume,")
        append("vCpuCount=$vCpuCount")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = allowedInstanceTypes?.hashCode() ?: 0
        result = 31 * result + (cpuArchitectureType.hashCode())
        result = 31 * result + (customAmounts?.hashCode() ?: 0)
        result = 31 * result + (customAttributes?.hashCode() ?: 0)
        result = 31 * result + (excludedInstanceTypes?.hashCode() ?: 0)
        result = 31 * result + (memoryMib?.hashCode() ?: 0)
        result = 31 * result + (osFamily.hashCode())
        result = 31 * result + (rootEbsVolume?.hashCode() ?: 0)
        result = 31 * result + (vCpuCount?.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 ServiceManagedEc2InstanceCapabilities

        if (allowedInstanceTypes != other.allowedInstanceTypes) return false
        if (cpuArchitectureType != other.cpuArchitectureType) return false
        if (customAmounts != other.customAmounts) return false
        if (customAttributes != other.customAttributes) return false
        if (excludedInstanceTypes != other.excludedInstanceTypes) return false
        if (memoryMib != other.memoryMib) return false
        if (osFamily != other.osFamily) return false
        if (rootEbsVolume != other.rootEbsVolume) return false
        if (vCpuCount != other.vCpuCount) return false

        return true
    }

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

    @SdkDsl
    public class Builder {
        /**
         * The allowable Amazon EC2 instance types.
         */
        public var allowedInstanceTypes: List? = null
        /**
         * The CPU architecture type.
         */
        public var cpuArchitectureType: aws.sdk.kotlin.services.deadline.model.CpuArchitectureType? = null
        /**
         * The custom capability amounts to require for instances in this fleet.
         */
        public var customAmounts: List? = null
        /**
         * The custom capability attributes to require for instances in this fleet.
         */
        public var customAttributes: List? = null
        /**
         * The instance types to exclude from the fleet.
         */
        public var excludedInstanceTypes: List? = null
        /**
         * The memory, as MiB, for the Amazon EC2 instance type.
         */
        public var memoryMib: aws.sdk.kotlin.services.deadline.model.MemoryMibRange? = null
        /**
         * The operating system (OS) family.
         */
        public var osFamily: aws.sdk.kotlin.services.deadline.model.ServiceManagedFleetOperatingSystemFamily? = null
        /**
         * The root EBS volume.
         */
        public var rootEbsVolume: aws.sdk.kotlin.services.deadline.model.Ec2EbsVolume? = null
        /**
         * The amount of vCPU to require for instances in this fleet.
         */
        public var vCpuCount: aws.sdk.kotlin.services.deadline.model.VCpuCountRange? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.deadline.model.ServiceManagedEc2InstanceCapabilities) : this() {
            this.allowedInstanceTypes = x.allowedInstanceTypes
            this.cpuArchitectureType = x.cpuArchitectureType
            this.customAmounts = x.customAmounts
            this.customAttributes = x.customAttributes
            this.excludedInstanceTypes = x.excludedInstanceTypes
            this.memoryMib = x.memoryMib
            this.osFamily = x.osFamily
            this.rootEbsVolume = x.rootEbsVolume
            this.vCpuCount = x.vCpuCount
        }

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

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

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

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

        internal fun correctErrors(): Builder {
            if (cpuArchitectureType == null) cpuArchitectureType = CpuArchitectureType.SdkUnknown("no value provided")
            if (osFamily == null) osFamily = ServiceManagedFleetOperatingSystemFamily.SdkUnknown("no value provided")
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy