AWS SDK

AWS SDK

rev. b9ccf3dabc550b0fbe85e785b19c58a2472f505e..96418c2288c67c1dde0d5d93cadadbf52fc820f4 (ignoring whitespace)

Files changed:

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/RouteTableAssociation.kt

@@ -1,1 +132,144 @@
   13     13   
     */
   14     14   
    public val associationState: aws.sdk.kotlin.services.ec2.model.RouteTableAssociationState? = builder.associationState
   15     15   
    /**
   16     16   
     * The ID of the internet gateway or virtual private gateway.
   17     17   
     */
   18     18   
    public val gatewayId: kotlin.String? = builder.gatewayId
   19     19   
    /**
   20     20   
     * Indicates whether this is the main route table.
   21     21   
     */
   22     22   
    public val main: kotlin.Boolean? = builder.main
          23  +
    /**
          24  +
     * The ID of a public IPv4 pool. A public IPv4 pool is a pool of IPv4 addresses that you've brought to Amazon Web Services with BYOIP.
          25  +
     */
          26  +
    public val publicIpv4Pool: kotlin.String? = builder.publicIpv4Pool
   23     27   
    /**
   24     28   
     * The ID of the association.
   25     29   
     */
   26     30   
    public val routeTableAssociationId: kotlin.String? = builder.routeTableAssociationId
   27     31   
    /**
   28     32   
     * The ID of the route table.
   29     33   
     */
   30     34   
    public val routeTableId: kotlin.String? = builder.routeTableId
   31     35   
    /**
   32     36   
     * The ID of the subnet. A subnet ID is not returned for an implicit association.
   33     37   
     */
   34     38   
    public val subnetId: kotlin.String? = builder.subnetId
   35     39   
   36     40   
    public companion object {
   37     41   
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.ec2.model.RouteTableAssociation = Builder().apply(block).build()
   38     42   
    }
   39     43   
   40     44   
    override fun toString(): kotlin.String = buildString {
   41     45   
        append("RouteTableAssociation(")
   42     46   
        append("associationState=$associationState,")
   43     47   
        append("gatewayId=$gatewayId,")
   44     48   
        append("main=$main,")
          49  +
        append("publicIpv4Pool=$publicIpv4Pool,")
   45     50   
        append("routeTableAssociationId=$routeTableAssociationId,")
   46     51   
        append("routeTableId=$routeTableId,")
   47     52   
        append("subnetId=$subnetId")
   48     53   
        append(")")
   49     54   
    }
   50     55   
   51     56   
    override fun hashCode(): kotlin.Int {
   52     57   
        var result = associationState?.hashCode() ?: 0
   53     58   
        result = 31 * result + (this.gatewayId?.hashCode() ?: 0)
   54     59   
        result = 31 * result + (this.main?.hashCode() ?: 0)
          60  +
        result = 31 * result + (this.publicIpv4Pool?.hashCode() ?: 0)
   55     61   
        result = 31 * result + (this.routeTableAssociationId?.hashCode() ?: 0)
   56     62   
        result = 31 * result + (this.routeTableId?.hashCode() ?: 0)
   57     63   
        result = 31 * result + (this.subnetId?.hashCode() ?: 0)
   58     64   
        return result
   59     65   
    }
   60     66   
   61     67   
    override fun equals(other: kotlin.Any?): kotlin.Boolean {
   62     68   
        if (this === other) return true
   63     69   
        if (other == null || this::class != other::class) return false
   64     70   
   65     71   
        other as RouteTableAssociation
   66     72   
   67     73   
        if (associationState != other.associationState) return false
   68     74   
        if (gatewayId != other.gatewayId) return false
   69     75   
        if (main != other.main) return false
          76  +
        if (publicIpv4Pool != other.publicIpv4Pool) return false
   70     77   
        if (routeTableAssociationId != other.routeTableAssociationId) return false
   71     78   
        if (routeTableId != other.routeTableId) return false
   72     79   
        if (subnetId != other.subnetId) return false
   73     80   
   74     81   
        return true
   75     82   
    }
   76     83   
   77     84   
    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.ec2.model.RouteTableAssociation = Builder(this).apply(block).build()
   78     85   
   79     86   
    @SdkDsl
   80     87   
    public class Builder {
   81     88   
        /**
   82     89   
         * The state of the association.
   83     90   
         */
   84     91   
        public var associationState: aws.sdk.kotlin.services.ec2.model.RouteTableAssociationState? = null
   85     92   
        /**
   86     93   
         * The ID of the internet gateway or virtual private gateway.
   87     94   
         */
   88     95   
        public var gatewayId: kotlin.String? = null
   89     96   
        /**
   90     97   
         * Indicates whether this is the main route table.
   91     98   
         */
   92     99   
        public var main: kotlin.Boolean? = null
         100  +
        /**
         101  +
         * The ID of a public IPv4 pool. A public IPv4 pool is a pool of IPv4 addresses that you've brought to Amazon Web Services with BYOIP.
         102  +
         */
         103  +
        public var publicIpv4Pool: kotlin.String? = null
   93    104   
        /**
   94    105   
         * The ID of the association.
   95    106   
         */
   96    107   
        public var routeTableAssociationId: kotlin.String? = null
   97    108   
        /**
   98    109   
         * The ID of the route table.
   99    110   
         */
  100    111   
        public var routeTableId: kotlin.String? = null
  101    112   
        /**
  102    113   
         * The ID of the subnet. A subnet ID is not returned for an implicit association.
  103    114   
         */
  104    115   
        public var subnetId: kotlin.String? = null
  105    116   
  106    117   
        @PublishedApi
  107    118   
        internal constructor()
  108    119   
        @PublishedApi
  109    120   
        internal constructor(x: aws.sdk.kotlin.services.ec2.model.RouteTableAssociation) : this() {
  110    121   
            this.associationState = x.associationState
  111    122   
            this.gatewayId = x.gatewayId
  112    123   
            this.main = x.main
         124  +
            this.publicIpv4Pool = x.publicIpv4Pool
  113    125   
            this.routeTableAssociationId = x.routeTableAssociationId
  114    126   
            this.routeTableId = x.routeTableId
  115    127   
            this.subnetId = x.subnetId
  116    128   
        }
  117    129   
  118    130   
        @PublishedApi
  119    131   
        internal fun build(): aws.sdk.kotlin.services.ec2.model.RouteTableAssociation = RouteTableAssociation(this)
  120    132   
  121    133   
        /**
  122    134   
         * construct an [aws.sdk.kotlin.services.ec2.model.RouteTableAssociationState] inside the given [block]

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/RunInstancesRequest.kt

@@ -33,33 +98,100 @@
   53     53   
     * Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.
   54     54   
     *
   55     55   
     * Default: `false`
   56     56   
     */
   57     57   
    public val ebsOptimized: kotlin.Boolean? = builder.ebsOptimized
   58     58   
    /**
   59     59   
     * An elastic GPU to associate with the instance.
   60     60   
     *
   61     61   
     * Amazon Elastic Graphics reached end of life on January 8, 2024.
   62     62   
     */
          63  +
    @Deprecated("Specifying Elastic Graphics accelerators is no longer supported on the RunInstances API.")
   63     64   
    public val elasticGpuSpecification: List<ElasticGpuSpecification>? = builder.elasticGpuSpecification
   64     65   
    /**
   65     66   
     * An elastic inference accelerator to associate with the instance.
   66     67   
     *
   67     68   
     * Amazon Elastic Inference is no longer available.
   68     69   
     */
          70  +
    @Deprecated("Specifying Elastic Inference accelerators is no longer supported on the RunInstances API.")
   69     71   
    public val elasticInferenceAccelerators: List<ElasticInferenceAccelerator>? = builder.elasticInferenceAccelerators
   70     72   
    /**
   71     73   
     * If you’re launching an instance into a dual-stack or IPv6-only subnet, you can enable assigning a primary IPv6 address. A primary IPv6 address is an IPv6 GUA address associated with an ENI that you have enabled to use a primary IPv6 address. Use this option if an instance relies on its IPv6 address not changing. When you launch the instance, Amazon Web Services will automatically assign an IPv6 address associated with the ENI attached to your instance to be the primary IPv6 address. Once you enable an IPv6 GUA address to be a primary IPv6, you cannot disable it. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. If you have multiple IPv6 addresses associated with an ENI attached to your instance and you enable a primary IPv6 address, the first IPv6 GUA address associated with the ENI becomes the primary IPv6 address.
   72     74   
     */
   73     75   
    public val enablePrimaryIpv6: kotlin.Boolean? = builder.enablePrimaryIpv6
   74     76   
    /**
   75     77   
     * Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves. For more information, see [Amazon Web Services Nitro Enclaves User Guide](https://docs.aws.amazon.com/enclaves/latest/user/).
   76     78   
     *
   77     79   
     * You can't enable Amazon Web Services Nitro Enclaves and hibernation on the same instance.
   78     80   
     */
@@ -418,420 +483,487 @@
  438    440   
         * Indicates whether the instance is optimized for Amazon EBS I/O. This optimization provides dedicated throughput to Amazon EBS and an optimized configuration stack to provide optimal Amazon EBS I/O performance. This optimization isn't available with all instance types. Additional usage charges apply when using an EBS-optimized instance.
  439    441   
         *
  440    442   
         * Default: `false`
  441    443   
         */
  442    444   
        public var ebsOptimized: kotlin.Boolean? = null
  443    445   
        /**
  444    446   
         * An elastic GPU to associate with the instance.
  445    447   
         *
  446    448   
         * Amazon Elastic Graphics reached end of life on January 8, 2024.
  447    449   
         */
         450  +
        @Deprecated("Specifying Elastic Graphics accelerators is no longer supported on the RunInstances API.")
  448    451   
        public var elasticGpuSpecification: List<ElasticGpuSpecification>? = null
  449    452   
        /**
  450    453   
         * An elastic inference accelerator to associate with the instance.
  451    454   
         *
  452    455   
         * Amazon Elastic Inference is no longer available.
  453    456   
         */
         457  +
        @Deprecated("Specifying Elastic Inference accelerators is no longer supported on the RunInstances API.")
  454    458   
        public var elasticInferenceAccelerators: List<ElasticInferenceAccelerator>? = null
  455    459   
        /**
  456    460   
         * If you’re launching an instance into a dual-stack or IPv6-only subnet, you can enable assigning a primary IPv6 address. A primary IPv6 address is an IPv6 GUA address associated with an ENI that you have enabled to use a primary IPv6 address. Use this option if an instance relies on its IPv6 address not changing. When you launch the instance, Amazon Web Services will automatically assign an IPv6 address associated with the ENI attached to your instance to be the primary IPv6 address. Once you enable an IPv6 GUA address to be a primary IPv6, you cannot disable it. When you enable an IPv6 GUA address to be a primary IPv6, the first IPv6 GUA will be made the primary IPv6 address until the instance is terminated or the network interface is detached. If you have multiple IPv6 addresses associated with an ENI attached to your instance and you enable a primary IPv6 address, the first IPv6 GUA address associated with the ENI becomes the primary IPv6 address.
  457    461   
         */
  458    462   
        public var enablePrimaryIpv6: kotlin.Boolean? = null
  459    463   
        /**
  460    464   
         * Indicates whether the instance is enabled for Amazon Web Services Nitro Enclaves. For more information, see [Amazon Web Services Nitro Enclaves User Guide](https://docs.aws.amazon.com/enclaves/latest/user/).
  461    465   
         *
  462    466   
         * You can't enable Amazon Web Services Nitro Enclaves and hibernation on the same instance.
  463    467   
         */

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/ServiceConfiguration.kt

@@ -1,1 +46,54 @@
    5      5   
import aws.smithy.kotlin.runtime.SdkDsl
    6      6   
    7      7   
/**
    8      8   
 * Describes a service configuration for a VPC endpoint service.
    9      9   
 */
   10     10   
public class ServiceConfiguration private constructor(builder: Builder) {
   11     11   
    /**
   12     12   
     * Indicates whether requests from other Amazon Web Services accounts to create an endpoint to the service must first be accepted.
   13     13   
     */
   14     14   
    public val acceptanceRequired: kotlin.Boolean? = builder.acceptanceRequired
          15  +
    /**
          16  +
     * The IDs of the Availability Zones in which the service is available.
          17  +
     *
          18  +
     * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
          19  +
     */
          20  +
    public val availabilityZoneIds: List<String>? = builder.availabilityZoneIds
   15     21   
    /**
   16     22   
     * The Availability Zones in which the service is available.
          23  +
     *
          24  +
     * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
   17     25   
     */
   18     26   
    public val availabilityZones: List<String>? = builder.availabilityZones
   19     27   
    /**
   20     28   
     * The DNS names for the service.
   21     29   
     */
   22     30   
    public val baseEndpointDnsNames: List<String>? = builder.baseEndpointDnsNames
   23     31   
    /**
   24     32   
     * The Amazon Resource Names (ARNs) of the Gateway Load Balancers for the service.
   25     33   
     */
   26     34   
    public val gatewayLoadBalancerArns: List<String>? = builder.gatewayLoadBalancerArns
@@ -57,65 +193,212 @@
   77     85   
     */
   78     86   
    public val tags: List<Tag>? = builder.tags
   79     87   
   80     88   
    public companion object {
   81     89   
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.ec2.model.ServiceConfiguration = Builder().apply(block).build()
   82     90   
    }
   83     91   
   84     92   
    override fun toString(): kotlin.String = buildString {
   85     93   
        append("ServiceConfiguration(")
   86     94   
        append("acceptanceRequired=$acceptanceRequired,")
          95  +
        append("availabilityZoneIds=$availabilityZoneIds,")
   87     96   
        append("availabilityZones=$availabilityZones,")
   88     97   
        append("baseEndpointDnsNames=$baseEndpointDnsNames,")
   89     98   
        append("gatewayLoadBalancerArns=$gatewayLoadBalancerArns,")
   90     99   
        append("managesVpcEndpoints=$managesVpcEndpoints,")
   91    100   
        append("networkLoadBalancerArns=$networkLoadBalancerArns,")
   92    101   
        append("payerResponsibility=$payerResponsibility,")
   93    102   
        append("privateDnsName=$privateDnsName,")
   94    103   
        append("privateDnsNameConfiguration=$privateDnsNameConfiguration,")
   95    104   
        append("remoteAccessEnabled=$remoteAccessEnabled,")
   96    105   
        append("serviceId=$serviceId,")
   97    106   
        append("serviceName=$serviceName,")
   98    107   
        append("serviceState=$serviceState,")
   99    108   
        append("serviceType=$serviceType,")
  100    109   
        append("supportedIpAddressTypes=$supportedIpAddressTypes,")
  101    110   
        append("supportedRegions=$supportedRegions,")
  102    111   
        append("tags=$tags")
  103    112   
        append(")")
  104    113   
    }
  105    114   
  106    115   
    override fun hashCode(): kotlin.Int {
  107    116   
        var result = acceptanceRequired?.hashCode() ?: 0
         117  +
        result = 31 * result + (this.availabilityZoneIds?.hashCode() ?: 0)
  108    118   
        result = 31 * result + (this.availabilityZones?.hashCode() ?: 0)
  109    119   
        result = 31 * result + (this.baseEndpointDnsNames?.hashCode() ?: 0)
  110    120   
        result = 31 * result + (this.gatewayLoadBalancerArns?.hashCode() ?: 0)
  111    121   
        result = 31 * result + (this.managesVpcEndpoints?.hashCode() ?: 0)
  112    122   
        result = 31 * result + (this.networkLoadBalancerArns?.hashCode() ?: 0)
  113    123   
        result = 31 * result + (this.payerResponsibility?.hashCode() ?: 0)
  114    124   
        result = 31 * result + (this.privateDnsName?.hashCode() ?: 0)
  115    125   
        result = 31 * result + (this.privateDnsNameConfiguration?.hashCode() ?: 0)
  116    126   
        result = 31 * result + (this.remoteAccessEnabled?.hashCode() ?: 0)
  117    127   
        result = 31 * result + (this.serviceId?.hashCode() ?: 0)
  118    128   
        result = 31 * result + (this.serviceName?.hashCode() ?: 0)
  119    129   
        result = 31 * result + (this.serviceState?.hashCode() ?: 0)
  120    130   
        result = 31 * result + (this.serviceType?.hashCode() ?: 0)
  121    131   
        result = 31 * result + (this.supportedIpAddressTypes?.hashCode() ?: 0)
  122    132   
        result = 31 * result + (this.supportedRegions?.hashCode() ?: 0)
  123    133   
        result = 31 * result + (this.tags?.hashCode() ?: 0)
  124    134   
        return result
  125    135   
    }
  126    136   
  127    137   
    override fun equals(other: kotlin.Any?): kotlin.Boolean {
  128    138   
        if (this === other) return true
  129    139   
        if (other == null || this::class != other::class) return false
  130    140   
  131    141   
        other as ServiceConfiguration
  132    142   
  133    143   
        if (acceptanceRequired != other.acceptanceRequired) return false
         144  +
        if (availabilityZoneIds != other.availabilityZoneIds) return false
  134    145   
        if (availabilityZones != other.availabilityZones) return false
  135    146   
        if (baseEndpointDnsNames != other.baseEndpointDnsNames) return false
  136    147   
        if (gatewayLoadBalancerArns != other.gatewayLoadBalancerArns) return false
  137    148   
        if (managesVpcEndpoints != other.managesVpcEndpoints) return false
  138    149   
        if (networkLoadBalancerArns != other.networkLoadBalancerArns) return false
  139    150   
        if (payerResponsibility != other.payerResponsibility) return false
  140    151   
        if (privateDnsName != other.privateDnsName) return false
  141    152   
        if (privateDnsNameConfiguration != other.privateDnsNameConfiguration) return false
  142    153   
        if (remoteAccessEnabled != other.remoteAccessEnabled) return false
  143    154   
        if (serviceId != other.serviceId) return false
  144    155   
        if (serviceName != other.serviceName) return false
  145    156   
        if (serviceState != other.serviceState) return false
  146    157   
        if (serviceType != other.serviceType) return false
  147    158   
        if (supportedIpAddressTypes != other.supportedIpAddressTypes) return false
  148    159   
        if (supportedRegions != other.supportedRegions) return false
  149    160   
        if (tags != other.tags) return false
  150    161   
  151    162   
        return true
  152    163   
    }
  153    164   
  154    165   
    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.ec2.model.ServiceConfiguration = Builder(this).apply(block).build()
  155    166   
  156    167   
    @SdkDsl
  157    168   
    public class Builder {
  158    169   
        /**
  159    170   
         * Indicates whether requests from other Amazon Web Services accounts to create an endpoint to the service must first be accepted.
  160    171   
         */
  161    172   
        public var acceptanceRequired: kotlin.Boolean? = null
         173  +
        /**
         174  +
         * The IDs of the Availability Zones in which the service is available.
         175  +
         *
         176  +
         * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
         177  +
         */
         178  +
        public var availabilityZoneIds: List<String>? = null
  162    179   
        /**
  163    180   
         * The Availability Zones in which the service is available.
         181  +
         *
         182  +
         * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
  164    183   
         */
  165    184   
        public var availabilityZones: List<String>? = null
  166    185   
        /**
  167    186   
         * The DNS names for the service.
  168    187   
         */
  169    188   
        public var baseEndpointDnsNames: List<String>? = null
  170    189   
        /**
  171    190   
         * The Amazon Resource Names (ARNs) of the Gateway Load Balancers for the service.
  172    191   
         */
  173    192   
        public var gatewayLoadBalancerArns: List<String>? = null
@@ -202,221 +261,281 @@
  222    241   
        /**
  223    242   
         * The tags assigned to the service.
  224    243   
         */
  225    244   
        public var tags: List<Tag>? = null
  226    245   
  227    246   
        @PublishedApi
  228    247   
        internal constructor()
  229    248   
        @PublishedApi
  230    249   
        internal constructor(x: aws.sdk.kotlin.services.ec2.model.ServiceConfiguration) : this() {
  231    250   
            this.acceptanceRequired = x.acceptanceRequired
         251  +
            this.availabilityZoneIds = x.availabilityZoneIds
  232    252   
            this.availabilityZones = x.availabilityZones
  233    253   
            this.baseEndpointDnsNames = x.baseEndpointDnsNames
  234    254   
            this.gatewayLoadBalancerArns = x.gatewayLoadBalancerArns
  235    255   
            this.managesVpcEndpoints = x.managesVpcEndpoints
  236    256   
            this.networkLoadBalancerArns = x.networkLoadBalancerArns
  237    257   
            this.payerResponsibility = x.payerResponsibility
  238    258   
            this.privateDnsName = x.privateDnsName
  239    259   
            this.privateDnsNameConfiguration = x.privateDnsNameConfiguration
  240    260   
            this.remoteAccessEnabled = x.remoteAccessEnabled
  241    261   
            this.serviceId = x.serviceId

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/ServiceDetail.kt

@@ -1,1 +46,54 @@
    5      5   
import aws.smithy.kotlin.runtime.SdkDsl
    6      6   
    7      7   
/**
    8      8   
 * Describes a VPC endpoint service.
    9      9   
 */
   10     10   
public class ServiceDetail private constructor(builder: Builder) {
   11     11   
    /**
   12     12   
     * Indicates whether VPC endpoint connection requests to the service must be accepted by the service owner.
   13     13   
     */
   14     14   
    public val acceptanceRequired: kotlin.Boolean? = builder.acceptanceRequired
          15  +
    /**
          16  +
     * The IDs of the Availability Zones in which the service is available.
          17  +
     *
          18  +
     * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
          19  +
     */
          20  +
    public val availabilityZoneIds: List<String>? = builder.availabilityZoneIds
   15     21   
    /**
   16     22   
     * The Availability Zones in which the service is available.
          23  +
     *
          24  +
     * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
   17     25   
     */
   18     26   
    public val availabilityZones: List<String>? = builder.availabilityZones
   19     27   
    /**
   20     28   
     * The DNS names for the service.
   21     29   
     */
   22     30   
    public val baseEndpointDnsNames: List<String>? = builder.baseEndpointDnsNames
   23     31   
    /**
   24     32   
     * Indicates whether the service manages its VPC endpoints. Management of the service VPC endpoints using the VPC endpoint API is restricted.
   25     33   
     */
   26     34   
    public val managesVpcEndpoints: kotlin.Boolean? = builder.managesVpcEndpoints
@@ -55,63 +188,207 @@
   75     83   
     */
   76     84   
    public val vpcEndpointPolicySupported: kotlin.Boolean? = builder.vpcEndpointPolicySupported
   77     85   
   78     86   
    public companion object {
   79     87   
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.ec2.model.ServiceDetail = Builder().apply(block).build()
   80     88   
    }
   81     89   
   82     90   
    override fun toString(): kotlin.String = buildString {
   83     91   
        append("ServiceDetail(")
   84     92   
        append("acceptanceRequired=$acceptanceRequired,")
          93  +
        append("availabilityZoneIds=$availabilityZoneIds,")
   85     94   
        append("availabilityZones=$availabilityZones,")
   86     95   
        append("baseEndpointDnsNames=$baseEndpointDnsNames,")
   87     96   
        append("managesVpcEndpoints=$managesVpcEndpoints,")
   88     97   
        append("owner=$owner,")
   89     98   
        append("payerResponsibility=$payerResponsibility,")
   90     99   
        append("privateDnsName=$privateDnsName,")
   91    100   
        append("privateDnsNameVerificationState=$privateDnsNameVerificationState,")
   92    101   
        append("privateDnsNames=$privateDnsNames,")
   93    102   
        append("serviceId=$serviceId,")
   94    103   
        append("serviceName=$serviceName,")
   95    104   
        append("serviceRegion=$serviceRegion,")
   96    105   
        append("serviceType=$serviceType,")
   97    106   
        append("supportedIpAddressTypes=$supportedIpAddressTypes,")
   98    107   
        append("tags=$tags,")
   99    108   
        append("vpcEndpointPolicySupported=$vpcEndpointPolicySupported")
  100    109   
        append(")")
  101    110   
    }
  102    111   
  103    112   
    override fun hashCode(): kotlin.Int {
  104    113   
        var result = acceptanceRequired?.hashCode() ?: 0
         114  +
        result = 31 * result + (this.availabilityZoneIds?.hashCode() ?: 0)
  105    115   
        result = 31 * result + (this.availabilityZones?.hashCode() ?: 0)
  106    116   
        result = 31 * result + (this.baseEndpointDnsNames?.hashCode() ?: 0)
  107    117   
        result = 31 * result + (this.managesVpcEndpoints?.hashCode() ?: 0)
  108    118   
        result = 31 * result + (this.owner?.hashCode() ?: 0)
  109    119   
        result = 31 * result + (this.payerResponsibility?.hashCode() ?: 0)
  110    120   
        result = 31 * result + (this.privateDnsName?.hashCode() ?: 0)
  111    121   
        result = 31 * result + (this.privateDnsNameVerificationState?.hashCode() ?: 0)
  112    122   
        result = 31 * result + (this.privateDnsNames?.hashCode() ?: 0)
  113    123   
        result = 31 * result + (this.serviceId?.hashCode() ?: 0)
  114    124   
        result = 31 * result + (this.serviceName?.hashCode() ?: 0)
  115    125   
        result = 31 * result + (this.serviceRegion?.hashCode() ?: 0)
  116    126   
        result = 31 * result + (this.serviceType?.hashCode() ?: 0)
  117    127   
        result = 31 * result + (this.supportedIpAddressTypes?.hashCode() ?: 0)
  118    128   
        result = 31 * result + (this.tags?.hashCode() ?: 0)
  119    129   
        result = 31 * result + (this.vpcEndpointPolicySupported?.hashCode() ?: 0)
  120    130   
        return result
  121    131   
    }
  122    132   
  123    133   
    override fun equals(other: kotlin.Any?): kotlin.Boolean {
  124    134   
        if (this === other) return true
  125    135   
        if (other == null || this::class != other::class) return false
  126    136   
  127    137   
        other as ServiceDetail
  128    138   
  129    139   
        if (acceptanceRequired != other.acceptanceRequired) return false
         140  +
        if (availabilityZoneIds != other.availabilityZoneIds) return false
  130    141   
        if (availabilityZones != other.availabilityZones) return false
  131    142   
        if (baseEndpointDnsNames != other.baseEndpointDnsNames) return false
  132    143   
        if (managesVpcEndpoints != other.managesVpcEndpoints) return false
  133    144   
        if (owner != other.owner) return false
  134    145   
        if (payerResponsibility != other.payerResponsibility) return false
  135    146   
        if (privateDnsName != other.privateDnsName) return false
  136    147   
        if (privateDnsNameVerificationState != other.privateDnsNameVerificationState) return false
  137    148   
        if (privateDnsNames != other.privateDnsNames) return false
  138    149   
        if (serviceId != other.serviceId) return false
  139    150   
        if (serviceName != other.serviceName) return false
  140    151   
        if (serviceRegion != other.serviceRegion) return false
  141    152   
        if (serviceType != other.serviceType) return false
  142    153   
        if (supportedIpAddressTypes != other.supportedIpAddressTypes) return false
  143    154   
        if (tags != other.tags) return false
  144    155   
        if (vpcEndpointPolicySupported != other.vpcEndpointPolicySupported) return false
  145    156   
  146    157   
        return true
  147    158   
    }
  148    159   
  149    160   
    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.ec2.model.ServiceDetail = Builder(this).apply(block).build()
  150    161   
  151    162   
    @SdkDsl
  152    163   
    public class Builder {
  153    164   
        /**
  154    165   
         * Indicates whether VPC endpoint connection requests to the service must be accepted by the service owner.
  155    166   
         */
  156    167   
        public var acceptanceRequired: kotlin.Boolean? = null
         168  +
        /**
         169  +
         * The IDs of the Availability Zones in which the service is available.
         170  +
         *
         171  +
         * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
         172  +
         */
         173  +
        public var availabilityZoneIds: List<String>? = null
  157    174   
        /**
  158    175   
         * The Availability Zones in which the service is available.
         176  +
         *
         177  +
         * Either `AvailabilityZone` or `AvailabilityZoneId` can be specified, but not both
  159    178   
         */
  160    179   
        public var availabilityZones: List<String>? = null
  161    180   
        /**
  162    181   
         * The DNS names for the service.
  163    182   
         */
  164    183   
        public var baseEndpointDnsNames: List<String>? = null
  165    184   
        /**
  166    185   
         * Indicates whether the service manages its VPC endpoints. Management of the service VPC endpoints using the VPC endpoint API is restricted.
  167    186   
         */
  168    187   
        public var managesVpcEndpoints: kotlin.Boolean? = null
@@ -195,214 +249,269 @@
  215    234   
        /**
  216    235   
         * Indicates whether the service supports endpoint policies.
  217    236   
         */
  218    237   
        public var vpcEndpointPolicySupported: kotlin.Boolean? = null
  219    238   
  220    239   
        @PublishedApi
  221    240   
        internal constructor()
  222    241   
        @PublishedApi
  223    242   
        internal constructor(x: aws.sdk.kotlin.services.ec2.model.ServiceDetail) : this() {
  224    243   
            this.acceptanceRequired = x.acceptanceRequired
         244  +
            this.availabilityZoneIds = x.availabilityZoneIds
  225    245   
            this.availabilityZones = x.availabilityZones
  226    246   
            this.baseEndpointDnsNames = x.baseEndpointDnsNames
  227    247   
            this.managesVpcEndpoints = x.managesVpcEndpoints
  228    248   
            this.owner = x.owner
  229    249   
            this.payerResponsibility = x.payerResponsibility
  230    250   
            this.privateDnsName = x.privateDnsName
  231    251   
            this.privateDnsNameVerificationState = x.privateDnsNameVerificationState
  232    252   
            this.privateDnsNames = x.privateDnsNames
  233    253   
            this.serviceId = x.serviceId
  234    254   
            this.serviceName = x.serviceName

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/SpotInstanceRequest.kt

@@ -20,20 +301,321 @@
   40     40   
    /**
   41     41   
     * The instance launch group. Launch groups are Spot Instances that launch together and terminate together.
   42     42   
     */
   43     43   
    public val launchGroup: kotlin.String? = builder.launchGroup
   44     44   
    /**
   45     45   
     * Additional information for launching instances.
   46     46   
     */
   47     47   
    public val launchSpecification: aws.sdk.kotlin.services.ec2.model.LaunchSpecification? = builder.launchSpecification
   48     48   
    /**
   49     49   
     * The Availability Zone in which the request is launched.
          50  +
     *
          51  +
     * Either `launchedAvailabilityZone` or `launchedAvailabilityZoneId` can be specified, but not both
   50     52   
     */
   51     53   
    public val launchedAvailabilityZone: kotlin.String? = builder.launchedAvailabilityZone
          54  +
    /**
          55  +
     * The ID of the Availability Zone in which the request is launched.
          56  +
     *
          57  +
     * Either `launchedAvailabilityZone` or `launchedAvailabilityZoneId` can be specified, but not both
          58  +
     */
          59  +
    public val launchedAvailabilityZoneId: kotlin.String? = builder.launchedAvailabilityZoneId
   52     60   
    /**
   53     61   
     * The product description associated with the Spot Instance.
   54     62   
     */
   55     63   
    public val productDescription: aws.sdk.kotlin.services.ec2.model.RiProductDescription? = builder.productDescription
   56     64   
    /**
   57     65   
     * The ID of the Spot Instance request.
   58     66   
     */
   59     67   
    public val spotInstanceRequestId: kotlin.String? = builder.spotInstanceRequestId
   60     68   
    /**
   61     69   
     * The maximum price per unit hour that you are willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
   62     70   
     *
   63     71   
     * If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
   64     72   
     */
   65     73   
    public val spotPrice: kotlin.String? = builder.spotPrice
   66     74   
    /**
   67     75   
     * The state of the Spot Instance request. Spot request status information helps track your Spot Instance requests. For more information, see [Spot request status](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-request-status.html) in the *Amazon EC2 User Guide*.
   68     76   
     */
   69     77   
    public val state: aws.sdk.kotlin.services.ec2.model.SpotInstanceState? = builder.state
   70     78   
    /**
   71     79   
     * The status code and status message describing the Spot Instance request.
   72     80   
     */
   73     81   
    public val status: aws.sdk.kotlin.services.ec2.model.SpotInstanceStatus? = builder.status
   74     82   
    /**
   75     83   
     * Any tags assigned to the resource.
   76     84   
     */
   77     85   
    public val tags: List<Tag>? = builder.tags
   78     86   
    /**
   79     87   
     * The Spot Instance request type.
   80     88   
     */
   81     89   
    public val type: aws.sdk.kotlin.services.ec2.model.SpotInstanceType? = builder.type
   82     90   
    /**
   83     91   
     * The start date of the request, in UTC format (for example, *YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z). The request becomes active at this date and time.
   84     92   
     */
   85     93   
    public val validFrom: aws.smithy.kotlin.runtime.time.Instant? = builder.validFrom
   86     94   
    /**
   87     95   
     * The end date of the request, in UTC format (*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z).
   88     96   
     * + For a persistent request, the request remains active until the `validUntil` date and time is reached. Otherwise, the request remains active until you cancel it.
   89     97   
     * + For a one-time request, the request remains active until all instances launch, the request is canceled, or the `validUntil` date and time is reached. By default, the request is valid for 7 days from the date the request was created.
   90     98   
     */
   91     99   
    public val validUntil: aws.smithy.kotlin.runtime.time.Instant? = builder.validUntil
   92    100   
   93    101   
    public companion object {
   94    102   
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.ec2.model.SpotInstanceRequest = Builder().apply(block).build()
   95    103   
    }
   96    104   
   97    105   
    override fun toString(): kotlin.String = buildString {
   98    106   
        append("SpotInstanceRequest(")
   99    107   
        append("actualBlockHourlyPrice=$actualBlockHourlyPrice,")
  100    108   
        append("availabilityZoneGroup=$availabilityZoneGroup,")
  101    109   
        append("blockDurationMinutes=$blockDurationMinutes,")
  102    110   
        append("createTime=$createTime,")
  103    111   
        append("fault=$fault,")
  104    112   
        append("instanceId=$instanceId,")
  105    113   
        append("instanceInterruptionBehavior=$instanceInterruptionBehavior,")
  106    114   
        append("launchGroup=$launchGroup,")
  107    115   
        append("launchSpecification=$launchSpecification,")
  108    116   
        append("launchedAvailabilityZone=$launchedAvailabilityZone,")
         117  +
        append("launchedAvailabilityZoneId=$launchedAvailabilityZoneId,")
  109    118   
        append("productDescription=$productDescription,")
  110    119   
        append("spotInstanceRequestId=$spotInstanceRequestId,")
  111    120   
        append("spotPrice=$spotPrice,")
  112    121   
        append("state=$state,")
  113    122   
        append("status=$status,")
  114    123   
        append("tags=$tags,")
  115    124   
        append("type=$type,")
  116    125   
        append("validFrom=$validFrom,")
  117    126   
        append("validUntil=$validUntil")
  118    127   
        append(")")
  119    128   
    }
  120    129   
  121    130   
    override fun hashCode(): kotlin.Int {
  122    131   
        var result = actualBlockHourlyPrice?.hashCode() ?: 0
  123    132   
        result = 31 * result + (this.availabilityZoneGroup?.hashCode() ?: 0)
  124    133   
        result = 31 * result + (this.blockDurationMinutes ?: 0)
  125    134   
        result = 31 * result + (this.createTime?.hashCode() ?: 0)
  126    135   
        result = 31 * result + (this.fault?.hashCode() ?: 0)
  127    136   
        result = 31 * result + (this.instanceId?.hashCode() ?: 0)
  128    137   
        result = 31 * result + (this.instanceInterruptionBehavior?.hashCode() ?: 0)
  129    138   
        result = 31 * result + (this.launchGroup?.hashCode() ?: 0)
  130    139   
        result = 31 * result + (this.launchSpecification?.hashCode() ?: 0)
  131    140   
        result = 31 * result + (this.launchedAvailabilityZone?.hashCode() ?: 0)
         141  +
        result = 31 * result + (this.launchedAvailabilityZoneId?.hashCode() ?: 0)
  132    142   
        result = 31 * result + (this.productDescription?.hashCode() ?: 0)
  133    143   
        result = 31 * result + (this.spotInstanceRequestId?.hashCode() ?: 0)
  134    144   
        result = 31 * result + (this.spotPrice?.hashCode() ?: 0)
  135    145   
        result = 31 * result + (this.state?.hashCode() ?: 0)
  136    146   
        result = 31 * result + (this.status?.hashCode() ?: 0)
  137    147   
        result = 31 * result + (this.tags?.hashCode() ?: 0)
  138    148   
        result = 31 * result + (this.type?.hashCode() ?: 0)
  139    149   
        result = 31 * result + (this.validFrom?.hashCode() ?: 0)
  140    150   
        result = 31 * result + (this.validUntil?.hashCode() ?: 0)
  141    151   
        return result
  142    152   
    }
  143    153   
  144    154   
    override fun equals(other: kotlin.Any?): kotlin.Boolean {
  145    155   
        if (this === other) return true
  146    156   
        if (other == null || this::class != other::class) return false
  147    157   
  148    158   
        other as SpotInstanceRequest
  149    159   
  150    160   
        if (actualBlockHourlyPrice != other.actualBlockHourlyPrice) return false
  151    161   
        if (availabilityZoneGroup != other.availabilityZoneGroup) return false
  152    162   
        if (blockDurationMinutes != other.blockDurationMinutes) return false
  153    163   
        if (createTime != other.createTime) return false
  154    164   
        if (fault != other.fault) return false
  155    165   
        if (instanceId != other.instanceId) return false
  156    166   
        if (instanceInterruptionBehavior != other.instanceInterruptionBehavior) return false
  157    167   
        if (launchGroup != other.launchGroup) return false
  158    168   
        if (launchSpecification != other.launchSpecification) return false
  159    169   
        if (launchedAvailabilityZone != other.launchedAvailabilityZone) return false
         170  +
        if (launchedAvailabilityZoneId != other.launchedAvailabilityZoneId) return false
  160    171   
        if (productDescription != other.productDescription) return false
  161    172   
        if (spotInstanceRequestId != other.spotInstanceRequestId) return false
  162    173   
        if (spotPrice != other.spotPrice) return false
  163    174   
        if (state != other.state) return false
  164    175   
        if (status != other.status) return false
  165    176   
        if (tags != other.tags) return false
  166    177   
        if (type != other.type) return false
  167    178   
        if (validFrom != other.validFrom) return false
  168    179   
        if (validUntil != other.validUntil) return false
  169    180   
  170    181   
        return true
  171    182   
    }
  172    183   
  173    184   
    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.ec2.model.SpotInstanceRequest = Builder(this).apply(block).build()
  174    185   
  175    186   
    @SdkDsl
  176    187   
    public class Builder {
  177    188   
        /**
  178    189   
         * Deprecated.
  179    190   
         */
  180    191   
        public var actualBlockHourlyPrice: kotlin.String? = null
  181    192   
        /**
  182    193   
         * The Availability Zone group. If you specify the same Availability Zone group for all Spot Instance requests, all Spot Instances are launched in the same Availability Zone.
  183    194   
         */
  184    195   
        public var availabilityZoneGroup: kotlin.String? = null
  185    196   
        /**
  186    197   
         * Deprecated.
  187    198   
         */
  188    199   
        public var blockDurationMinutes: kotlin.Int? = null
  189    200   
        /**
  190    201   
         * The date and time when the Spot Instance request was created, in UTC format (for example, *YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z).
  191    202   
         */
  192    203   
        public var createTime: aws.smithy.kotlin.runtime.time.Instant? = null
  193    204   
        /**
  194    205   
         * The fault codes for the Spot Instance request, if any.
  195    206   
         */
  196    207   
        public var fault: aws.sdk.kotlin.services.ec2.model.SpotInstanceStateFault? = null
  197    208   
        /**
  198    209   
         * The instance ID, if an instance has been launched to fulfill the Spot Instance request.
  199    210   
         */
  200    211   
        public var instanceId: kotlin.String? = null
  201    212   
        /**
  202    213   
         * The behavior when a Spot Instance is interrupted.
  203    214   
         */
  204    215   
        public var instanceInterruptionBehavior: aws.sdk.kotlin.services.ec2.model.InstanceInterruptionBehavior? = null
  205    216   
        /**
  206    217   
         * The instance launch group. Launch groups are Spot Instances that launch together and terminate together.
  207    218   
         */
  208    219   
        public var launchGroup: kotlin.String? = null
  209    220   
        /**
  210    221   
         * Additional information for launching instances.
  211    222   
         */
  212    223   
        public var launchSpecification: aws.sdk.kotlin.services.ec2.model.LaunchSpecification? = null
  213    224   
        /**
  214    225   
         * The Availability Zone in which the request is launched.
         226  +
         *
         227  +
         * Either `launchedAvailabilityZone` or `launchedAvailabilityZoneId` can be specified, but not both
  215    228   
         */
  216    229   
        public var launchedAvailabilityZone: kotlin.String? = null
         230  +
        /**
         231  +
         * The ID of the Availability Zone in which the request is launched.
         232  +
         *
         233  +
         * Either `launchedAvailabilityZone` or `launchedAvailabilityZoneId` can be specified, but not both
         234  +
         */
         235  +
        public var launchedAvailabilityZoneId: kotlin.String? = null
  217    236   
        /**
  218    237   
         * The product description associated with the Spot Instance.
  219    238   
         */
  220    239   
        public var productDescription: aws.sdk.kotlin.services.ec2.model.RiProductDescription? = null
  221    240   
        /**
  222    241   
         * The ID of the Spot Instance request.
  223    242   
         */
  224    243   
        public var spotInstanceRequestId: kotlin.String? = null
  225    244   
        /**
  226    245   
         * The maximum price per unit hour that you are willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
  227    246   
         *
  228    247   
         * If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
  229    248   
         */
  230    249   
        public var spotPrice: kotlin.String? = null
  231    250   
        /**
  232    251   
         * The state of the Spot Instance request. Spot request status information helps track your Spot Instance requests. For more information, see [Spot request status](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/spot-request-status.html) in the *Amazon EC2 User Guide*.
  233    252   
         */
  234    253   
        public var state: aws.sdk.kotlin.services.ec2.model.SpotInstanceState? = null
  235    254   
        /**
  236    255   
         * The status code and status message describing the Spot Instance request.
  237    256   
         */
  238    257   
        public var status: aws.sdk.kotlin.services.ec2.model.SpotInstanceStatus? = null
  239    258   
        /**
  240    259   
         * Any tags assigned to the resource.
  241    260   
         */
  242    261   
        public var tags: List<Tag>? = null
  243    262   
        /**
  244    263   
         * The Spot Instance request type.
  245    264   
         */
  246    265   
        public var type: aws.sdk.kotlin.services.ec2.model.SpotInstanceType? = null
  247    266   
        /**
  248    267   
         * The start date of the request, in UTC format (for example, *YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z). The request becomes active at this date and time.
  249    268   
         */
  250    269   
        public var validFrom: aws.smithy.kotlin.runtime.time.Instant? = null
  251    270   
        /**
  252    271   
         * The end date of the request, in UTC format (*YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z).
  253    272   
         * + For a persistent request, the request remains active until the `validUntil` date and time is reached. Otherwise, the request remains active until you cancel it.
  254    273   
         * + For a one-time request, the request remains active until all instances launch, the request is canceled, or the `validUntil` date and time is reached. By default, the request is valid for 7 days from the date the request was created.
  255    274   
         */
  256    275   
        public var validUntil: aws.smithy.kotlin.runtime.time.Instant? = null
  257    276   
  258    277   
        @PublishedApi
  259    278   
        internal constructor()
  260    279   
        @PublishedApi
  261    280   
        internal constructor(x: aws.sdk.kotlin.services.ec2.model.SpotInstanceRequest) : this() {
  262    281   
            this.actualBlockHourlyPrice = x.actualBlockHourlyPrice
  263    282   
            this.availabilityZoneGroup = x.availabilityZoneGroup
  264    283   
            this.blockDurationMinutes = x.blockDurationMinutes
  265    284   
            this.createTime = x.createTime
  266    285   
            this.fault = x.fault
  267    286   
            this.instanceId = x.instanceId
  268    287   
            this.instanceInterruptionBehavior = x.instanceInterruptionBehavior
  269    288   
            this.launchGroup = x.launchGroup
  270    289   
            this.launchSpecification = x.launchSpecification
  271    290   
            this.launchedAvailabilityZone = x.launchedAvailabilityZone
         291  +
            this.launchedAvailabilityZoneId = x.launchedAvailabilityZoneId
  272    292   
            this.productDescription = x.productDescription
  273    293   
            this.spotInstanceRequestId = x.spotInstanceRequestId
  274    294   
            this.spotPrice = x.spotPrice
  275    295   
            this.state = x.state
  276    296   
            this.status = x.status
  277    297   
            this.tags = x.tags
  278    298   
            this.type = x.type
  279    299   
            this.validFrom = x.validFrom
  280    300   
            this.validUntil = x.validUntil
  281    301   
        }

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/SpotPrice.kt

@@ -1,1 +120,132 @@
    8      8   
/**
    9      9   
 * The maximum price per unit hour that you are willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
   10     10   
 *
   11     11   
 * If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
   12     12   
 */
   13     13   
public class SpotPrice private constructor(builder: Builder) {
   14     14   
    /**
   15     15   
     * The Availability Zone.
   16     16   
     */
   17     17   
    public val availabilityZone: kotlin.String? = builder.availabilityZone
          18  +
    /**
          19  +
     * The ID of the Availability Zone.
          20  +
     */
          21  +
    public val availabilityZoneId: kotlin.String? = builder.availabilityZoneId
   18     22   
    /**
   19     23   
     * The instance type.
   20     24   
     */
   21     25   
    public val instanceType: aws.sdk.kotlin.services.ec2.model.InstanceType? = builder.instanceType
   22     26   
    /**
   23     27   
     * A general description of the AMI.
   24     28   
     */
   25     29   
    public val productDescription: aws.sdk.kotlin.services.ec2.model.RiProductDescription? = builder.productDescription
   26     30   
    /**
   27     31   
     * The maximum price per unit hour that you are willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
   28     32   
     *
   29     33   
     * If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
   30     34   
     */
   31     35   
    public val spotPrice: kotlin.String? = builder.spotPrice
   32     36   
    /**
   33     37   
     * The date and time the request was created, in UTC format (for example, *YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z).
   34     38   
     */
   35     39   
    public val timestamp: aws.smithy.kotlin.runtime.time.Instant? = builder.timestamp
   36     40   
   37     41   
    public companion object {
   38     42   
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.ec2.model.SpotPrice = Builder().apply(block).build()
   39     43   
    }
   40     44   
   41     45   
    override fun toString(): kotlin.String = buildString {
   42     46   
        append("SpotPrice(")
   43     47   
        append("availabilityZone=$availabilityZone,")
          48  +
        append("availabilityZoneId=$availabilityZoneId,")
   44     49   
        append("instanceType=$instanceType,")
   45     50   
        append("productDescription=$productDescription,")
   46     51   
        append("spotPrice=$spotPrice,")
   47     52   
        append("timestamp=$timestamp")
   48     53   
        append(")")
   49     54   
    }
   50     55   
   51     56   
    override fun hashCode(): kotlin.Int {
   52     57   
        var result = availabilityZone?.hashCode() ?: 0
          58  +
        result = 31 * result + (this.availabilityZoneId?.hashCode() ?: 0)
   53     59   
        result = 31 * result + (this.instanceType?.hashCode() ?: 0)
   54     60   
        result = 31 * result + (this.productDescription?.hashCode() ?: 0)
   55     61   
        result = 31 * result + (this.spotPrice?.hashCode() ?: 0)
   56     62   
        result = 31 * result + (this.timestamp?.hashCode() ?: 0)
   57     63   
        return result
   58     64   
    }
   59     65   
   60     66   
    override fun equals(other: kotlin.Any?): kotlin.Boolean {
   61     67   
        if (this === other) return true
   62     68   
        if (other == null || this::class != other::class) return false
   63     69   
   64     70   
        other as SpotPrice
   65     71   
   66     72   
        if (availabilityZone != other.availabilityZone) return false
          73  +
        if (availabilityZoneId != other.availabilityZoneId) return false
   67     74   
        if (instanceType != other.instanceType) return false
   68     75   
        if (productDescription != other.productDescription) return false
   69     76   
        if (spotPrice != other.spotPrice) return false
   70     77   
        if (timestamp != other.timestamp) return false
   71     78   
   72     79   
        return true
   73     80   
    }
   74     81   
   75     82   
    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.ec2.model.SpotPrice = Builder(this).apply(block).build()
   76     83   
   77     84   
    @SdkDsl
   78     85   
    public class Builder {
   79     86   
        /**
   80     87   
         * The Availability Zone.
   81     88   
         */
   82     89   
        public var availabilityZone: kotlin.String? = null
          90  +
        /**
          91  +
         * The ID of the Availability Zone.
          92  +
         */
          93  +
        public var availabilityZoneId: kotlin.String? = null
   83     94   
        /**
   84     95   
         * The instance type.
   85     96   
         */
   86     97   
        public var instanceType: aws.sdk.kotlin.services.ec2.model.InstanceType? = null
   87     98   
        /**
   88     99   
         * A general description of the AMI.
   89    100   
         */
   90    101   
        public var productDescription: aws.sdk.kotlin.services.ec2.model.RiProductDescription? = null
   91    102   
        /**
   92    103   
         * The maximum price per unit hour that you are willing to pay for a Spot Instance. We do not recommend using this parameter because it can lead to increased interruptions. If you do not specify this parameter, you will pay the current Spot price.
   93    104   
         *
   94    105   
         * If you specify a maximum price, your instances will be interrupted more frequently than if you do not specify this parameter.
   95    106   
         */
   96    107   
        public var spotPrice: kotlin.String? = null
   97    108   
        /**
   98    109   
         * The date and time the request was created, in UTC format (for example, *YYYY*-*MM*-*DD*T*HH*:*MM*:*SS*Z).
   99    110   
         */
  100    111   
        public var timestamp: aws.smithy.kotlin.runtime.time.Instant? = null
  101    112   
  102    113   
        @PublishedApi
  103    114   
        internal constructor()
  104    115   
        @PublishedApi
  105    116   
        internal constructor(x: aws.sdk.kotlin.services.ec2.model.SpotPrice) : this() {
  106    117   
            this.availabilityZone = x.availabilityZone
         118  +
            this.availabilityZoneId = x.availabilityZoneId
  107    119   
            this.instanceType = x.instanceType
  108    120   
            this.productDescription = x.productDescription
  109    121   
            this.spotPrice = x.spotPrice
  110    122   
            this.timestamp = x.timestamp
  111    123   
        }
  112    124   
  113    125   
        @PublishedApi
  114    126   
        internal fun build(): aws.sdk.kotlin.services.ec2.model.SpotPrice = SpotPrice(this)
  115    127   
  116    128   
        internal fun correctErrors(): Builder {

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/TransitGatewayOptions.kt

@@ -1,1 +58,58 @@
   14     14   
    public val amazonSideAsn: kotlin.Long? = builder.amazonSideAsn
   15     15   
    /**
   16     16   
     * The ID of the default association route table.
   17     17   
     */
   18     18   
    public val associationDefaultRouteTableId: kotlin.String? = builder.associationDefaultRouteTableId
   19     19   
    /**
   20     20   
     * Indicates whether attachment requests are automatically accepted.
   21     21   
     */
   22     22   
    public val autoAcceptSharedAttachments: aws.sdk.kotlin.services.ec2.model.AutoAcceptSharedAttachmentsValue? = builder.autoAcceptSharedAttachments
   23     23   
    /**
   24         -
     * Indicates whether resource attachments are automatically associated with the default association route table. Enabled by default. If `defaultRouteTableAssociation` is set to `enable`, Amazon Web Services Transit Gateway will create the default transit gateway route table.
          24  +
     * Indicates whether resource attachments are automatically associated with the default association route table. Enabled by default. Either `defaultRouteTableAssociation` or `defaultRouteTablePropagation` must be set to `enable` for Amazon Web Services Transit Gateway to create the default transit gateway route table.
   25     25   
     */
   26     26   
    public val defaultRouteTableAssociation: aws.sdk.kotlin.services.ec2.model.DefaultRouteTableAssociationValue? = builder.defaultRouteTableAssociation
   27     27   
    /**
   28         -
     * Indicates whether resource attachments automatically propagate routes to the default propagation route table. Enabled by default. If `defaultRouteTablePropagation` is set to `enable`, Amazon Web Services Transit Gateway will create the default transit gateway route table.
          28  +
     * Indicates whether resource attachments automatically propagate routes to the default propagation route table. Enabled by default. If `defaultRouteTablePropagation` is set to `enable`, Amazon Web Services Transit Gateway creates the default transit gateway route table.
   29     29   
     */
   30     30   
    public val defaultRouteTablePropagation: aws.sdk.kotlin.services.ec2.model.DefaultRouteTablePropagationValue? = builder.defaultRouteTablePropagation
   31     31   
    /**
   32     32   
     * Indicates whether DNS support is enabled.
   33     33   
     */
   34     34   
    public val dnsSupport: aws.sdk.kotlin.services.ec2.model.DnsSupportValue? = builder.dnsSupport
   35     35   
    /**
   36     36   
     * Indicates whether multicast is enabled on the transit gateway
   37     37   
     */
   38     38   
    public val multicastSupport: aws.sdk.kotlin.services.ec2.model.MulticastSupportValue? = builder.multicastSupport
@@ -101,101 +165,165 @@
  121    121   
        public var amazonSideAsn: kotlin.Long? = null
  122    122   
        /**
  123    123   
         * The ID of the default association route table.
  124    124   
         */
  125    125   
        public var associationDefaultRouteTableId: kotlin.String? = null
  126    126   
        /**
  127    127   
         * Indicates whether attachment requests are automatically accepted.
  128    128   
         */
  129    129   
        public var autoAcceptSharedAttachments: aws.sdk.kotlin.services.ec2.model.AutoAcceptSharedAttachmentsValue? = null
  130    130   
        /**
  131         -
         * Indicates whether resource attachments are automatically associated with the default association route table. Enabled by default. If `defaultRouteTableAssociation` is set to `enable`, Amazon Web Services Transit Gateway will create the default transit gateway route table.
         131  +
         * Indicates whether resource attachments are automatically associated with the default association route table. Enabled by default. Either `defaultRouteTableAssociation` or `defaultRouteTablePropagation` must be set to `enable` for Amazon Web Services Transit Gateway to create the default transit gateway route table.
  132    132   
         */
  133    133   
        public var defaultRouteTableAssociation: aws.sdk.kotlin.services.ec2.model.DefaultRouteTableAssociationValue? = null
  134    134   
        /**
  135         -
         * Indicates whether resource attachments automatically propagate routes to the default propagation route table. Enabled by default. If `defaultRouteTablePropagation` is set to `enable`, Amazon Web Services Transit Gateway will create the default transit gateway route table.
         135  +
         * Indicates whether resource attachments automatically propagate routes to the default propagation route table. Enabled by default. If `defaultRouteTablePropagation` is set to `enable`, Amazon Web Services Transit Gateway creates the default transit gateway route table.
  136    136   
         */
  137    137   
        public var defaultRouteTablePropagation: aws.sdk.kotlin.services.ec2.model.DefaultRouteTablePropagationValue? = null
  138    138   
        /**
  139    139   
         * Indicates whether DNS support is enabled.
  140    140   
         */
  141    141   
        public var dnsSupport: aws.sdk.kotlin.services.ec2.model.DnsSupportValue? = null
  142    142   
        /**
  143    143   
         * Indicates whether multicast is enabled on the transit gateway
  144    144   
         */
  145    145   
        public var multicastSupport: aws.sdk.kotlin.services.ec2.model.MulticastSupportValue? = null

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/Volume.kt

@@ -1,1 +51,55 @@
   12     12   
    /**
   13     13   
     * This parameter is not returned by CreateVolume.
   14     14   
     *
   15     15   
     * Information about the volume attachments.
   16     16   
     */
   17     17   
    public val attachments: List<VolumeAttachment>? = builder.attachments
   18     18   
    /**
   19     19   
     * The Availability Zone for the volume.
   20     20   
     */
   21     21   
    public val availabilityZone: kotlin.String? = builder.availabilityZone
          22  +
    /**
          23  +
     * The ID of the Availability Zone for the volume.
          24  +
     */
          25  +
    public val availabilityZoneId: kotlin.String? = builder.availabilityZoneId
   22     26   
    /**
   23     27   
     * The time stamp when volume creation was initiated.
   24     28   
     */
   25     29   
    public val createTime: aws.smithy.kotlin.runtime.time.Instant? = builder.createTime
   26     30   
    /**
   27     31   
     * Indicates whether the volume is encrypted.
   28     32   
     */
   29     33   
    public val encrypted: kotlin.Boolean? = builder.encrypted
   30     34   
    /**
   31     35   
     * This parameter is not returned by CreateVolume.
@@ -73,77 +218,229 @@
   93     97   
    public val volumeType: aws.sdk.kotlin.services.ec2.model.VolumeType? = builder.volumeType
   94     98   
   95     99   
    public companion object {
   96    100   
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.ec2.model.Volume = Builder().apply(block).build()
   97    101   
    }
   98    102   
   99    103   
    override fun toString(): kotlin.String = buildString {
  100    104   
        append("Volume(")
  101    105   
        append("attachments=$attachments,")
  102    106   
        append("availabilityZone=$availabilityZone,")
         107  +
        append("availabilityZoneId=$availabilityZoneId,")
  103    108   
        append("createTime=$createTime,")
  104    109   
        append("encrypted=$encrypted,")
  105    110   
        append("fastRestored=$fastRestored,")
  106    111   
        append("iops=$iops,")
  107    112   
        append("kmsKeyId=$kmsKeyId,")
  108    113   
        append("multiAttachEnabled=$multiAttachEnabled,")
  109    114   
        append("operator=$operator,")
  110    115   
        append("outpostArn=$outpostArn,")
  111    116   
        append("size=$size,")
  112    117   
        append("snapshotId=$snapshotId,")
  113    118   
        append("sseType=$sseType,")
  114    119   
        append("state=$state,")
  115    120   
        append("tags=$tags,")
  116    121   
        append("throughput=$throughput,")
  117    122   
        append("volumeId=$volumeId,")
  118    123   
        append("volumeInitializationRate=$volumeInitializationRate,")
  119    124   
        append("volumeType=$volumeType")
  120    125   
        append(")")
  121    126   
    }
  122    127   
  123    128   
    override fun hashCode(): kotlin.Int {
  124    129   
        var result = attachments?.hashCode() ?: 0
  125    130   
        result = 31 * result + (this.availabilityZone?.hashCode() ?: 0)
         131  +
        result = 31 * result + (this.availabilityZoneId?.hashCode() ?: 0)
  126    132   
        result = 31 * result + (this.createTime?.hashCode() ?: 0)
  127    133   
        result = 31 * result + (this.encrypted?.hashCode() ?: 0)
  128    134   
        result = 31 * result + (this.fastRestored?.hashCode() ?: 0)
  129    135   
        result = 31 * result + (this.iops ?: 0)
  130    136   
        result = 31 * result + (this.kmsKeyId?.hashCode() ?: 0)
  131    137   
        result = 31 * result + (this.multiAttachEnabled?.hashCode() ?: 0)
  132    138   
        result = 31 * result + (this.operator?.hashCode() ?: 0)
  133    139   
        result = 31 * result + (this.outpostArn?.hashCode() ?: 0)
  134    140   
        result = 31 * result + (this.size ?: 0)
  135    141   
        result = 31 * result + (this.snapshotId?.hashCode() ?: 0)
  136    142   
        result = 31 * result + (this.sseType?.hashCode() ?: 0)
  137    143   
        result = 31 * result + (this.state?.hashCode() ?: 0)
  138    144   
        result = 31 * result + (this.tags?.hashCode() ?: 0)
  139    145   
        result = 31 * result + (this.throughput ?: 0)
  140    146   
        result = 31 * result + (this.volumeId?.hashCode() ?: 0)
  141    147   
        result = 31 * result + (this.volumeInitializationRate ?: 0)
  142    148   
        result = 31 * result + (this.volumeType?.hashCode() ?: 0)
  143    149   
        return result
  144    150   
    }
  145    151   
  146    152   
    override fun equals(other: kotlin.Any?): kotlin.Boolean {
  147    153   
        if (this === other) return true
  148    154   
        if (other == null || this::class != other::class) return false
  149    155   
  150    156   
        other as Volume
  151    157   
  152    158   
        if (attachments != other.attachments) return false
  153    159   
        if (availabilityZone != other.availabilityZone) return false
         160  +
        if (availabilityZoneId != other.availabilityZoneId) return false
  154    161   
        if (createTime != other.createTime) return false
  155    162   
        if (encrypted != other.encrypted) return false
  156    163   
        if (fastRestored != other.fastRestored) return false
  157    164   
        if (iops != other.iops) return false
  158    165   
        if (kmsKeyId != other.kmsKeyId) return false
  159    166   
        if (multiAttachEnabled != other.multiAttachEnabled) return false
  160    167   
        if (operator != other.operator) return false
  161    168   
        if (outpostArn != other.outpostArn) return false
  162    169   
        if (size != other.size) return false
  163    170   
        if (snapshotId != other.snapshotId) return false
  164    171   
        if (sseType != other.sseType) return false
  165    172   
        if (state != other.state) return false
  166    173   
        if (tags != other.tags) return false
  167    174   
        if (throughput != other.throughput) return false
  168    175   
        if (volumeId != other.volumeId) return false
  169    176   
        if (volumeInitializationRate != other.volumeInitializationRate) return false
  170    177   
        if (volumeType != other.volumeType) return false
  171    178   
  172    179   
        return true
  173    180   
    }
  174    181   
  175    182   
    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.ec2.model.Volume = Builder(this).apply(block).build()
  176    183   
  177    184   
    @SdkDsl
  178    185   
    public class Builder {
  179    186   
        /**
  180    187   
         * This parameter is not returned by CreateVolume.
  181    188   
         *
  182    189   
         * Information about the volume attachments.
  183    190   
         */
  184    191   
        public var attachments: List<VolumeAttachment>? = null
  185    192   
        /**
  186    193   
         * The Availability Zone for the volume.
  187    194   
         */
  188    195   
        public var availabilityZone: kotlin.String? = null
         196  +
        /**
         197  +
         * The ID of the Availability Zone for the volume.
         198  +
         */
         199  +
        public var availabilityZoneId: kotlin.String? = null
  189    200   
        /**
  190    201   
         * The time stamp when volume creation was initiated.
  191    202   
         */
  192    203   
        public var createTime: aws.smithy.kotlin.runtime.time.Instant? = null
  193    204   
        /**
  194    205   
         * Indicates whether the volume is encrypted.
  195    206   
         */
  196    207   
        public var encrypted: kotlin.Boolean? = null
  197    208   
        /**
  198    209   
         * This parameter is not returned by CreateVolume.
@@ -238,249 +297,309 @@
  258    269   
         * The volume type.
  259    270   
         */
  260    271   
        public var volumeType: aws.sdk.kotlin.services.ec2.model.VolumeType? = null
  261    272   
  262    273   
        @PublishedApi
  263    274   
        internal constructor()
  264    275   
        @PublishedApi
  265    276   
        internal constructor(x: aws.sdk.kotlin.services.ec2.model.Volume) : this() {
  266    277   
            this.attachments = x.attachments
  267    278   
            this.availabilityZone = x.availabilityZone
         279  +
            this.availabilityZoneId = x.availabilityZoneId
  268    280   
            this.createTime = x.createTime
  269    281   
            this.encrypted = x.encrypted
  270    282   
            this.fastRestored = x.fastRestored
  271    283   
            this.iops = x.iops
  272    284   
            this.kmsKeyId = x.kmsKeyId
  273    285   
            this.multiAttachEnabled = x.multiAttachEnabled
  274    286   
            this.operator = x.operator
  275    287   
            this.outpostArn = x.outpostArn
  276    288   
            this.size = x.size
  277    289   
            this.snapshotId = x.snapshotId

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/model/VolumeStatusInfoStatus.kt

@@ -1,1 +51,58 @@
   15     15   
    public object InsufficientData : aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus() {
   16     16   
        override val value: kotlin.String = "insufficient-data"
   17     17   
        override fun toString(): kotlin.String = "InsufficientData"
   18     18   
    }
   19     19   
   20     20   
    public object Ok : aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus() {
   21     21   
        override val value: kotlin.String = "ok"
   22     22   
        override fun toString(): kotlin.String = "Ok"
   23     23   
    }
   24     24   
          25  +
    public object Warning : aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus() {
          26  +
        override val value: kotlin.String = "warning"
          27  +
        override fun toString(): kotlin.String = "Warning"
          28  +
    }
          29  +
   25     30   
    public data class SdkUnknown(override val value: kotlin.String) : aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus() {
   26     31   
        override fun toString(): kotlin.String = "SdkUnknown($value)"
   27     32   
    }
   28     33   
   29     34   
    public companion object {
   30     35   
        /**
   31     36   
         * Convert a raw value to one of the sealed variants or [SdkUnknown]
   32     37   
         */
   33     38   
        public fun fromValue(value: kotlin.String): aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus = when (value) {
   34     39   
            "impaired" -> Impaired
   35     40   
            "insufficient-data" -> InsufficientData
   36     41   
            "ok" -> Ok
          42  +
            "warning" -> Warning
   37     43   
            else -> SdkUnknown(value)
   38     44   
        }
   39     45   
   40     46   
        /**
   41     47   
         * Get a list of all possible variants
   42     48   
         */
   43     49   
        public fun values(): kotlin.collections.List<aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus> = values
   44     50   
   45     51   
        private val values: kotlin.collections.List<aws.sdk.kotlin.services.ec2.model.VolumeStatusInfoStatus> = listOf(
   46     52   
            Impaired,
   47     53   
            InsufficientData,
   48     54   
            Ok,
          55  +
            Warning,
   49     56   
        )
   50     57   
    }
   51     58   
}

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/paginators/Paginators.kt

@@ -66,66 +125,131 @@
   86     86   
import aws.sdk.kotlin.services.ec2.model.DescribeFpgaImagesRequest
   87     87   
import aws.sdk.kotlin.services.ec2.model.DescribeFpgaImagesResponse
   88     88   
import aws.sdk.kotlin.services.ec2.model.DescribeHostReservationOfferingsRequest
   89     89   
import aws.sdk.kotlin.services.ec2.model.DescribeHostReservationOfferingsResponse
   90     90   
import aws.sdk.kotlin.services.ec2.model.DescribeHostReservationsRequest
   91     91   
import aws.sdk.kotlin.services.ec2.model.DescribeHostReservationsResponse
   92     92   
import aws.sdk.kotlin.services.ec2.model.DescribeHostsRequest
   93     93   
import aws.sdk.kotlin.services.ec2.model.DescribeHostsResponse
   94     94   
import aws.sdk.kotlin.services.ec2.model.DescribeIamInstanceProfileAssociationsRequest
   95     95   
import aws.sdk.kotlin.services.ec2.model.DescribeIamInstanceProfileAssociationsResponse
          96  +
import aws.sdk.kotlin.services.ec2.model.DescribeImageReferencesRequest
          97  +
import aws.sdk.kotlin.services.ec2.model.DescribeImageReferencesResponse
          98  +
import aws.sdk.kotlin.services.ec2.model.DescribeImageUsageReportEntriesRequest
          99  +
import aws.sdk.kotlin.services.ec2.model.DescribeImageUsageReportEntriesResponse
         100  +
import aws.sdk.kotlin.services.ec2.model.DescribeImageUsageReportsRequest
         101  +
import aws.sdk.kotlin.services.ec2.model.DescribeImageUsageReportsResponse
   96    102   
import aws.sdk.kotlin.services.ec2.model.DescribeImagesRequest
   97    103   
import aws.sdk.kotlin.services.ec2.model.DescribeImagesResponse
   98    104   
import aws.sdk.kotlin.services.ec2.model.DescribeImportImageTasksRequest
   99    105   
import aws.sdk.kotlin.services.ec2.model.DescribeImportImageTasksResponse
  100    106   
import aws.sdk.kotlin.services.ec2.model.DescribeImportSnapshotTasksRequest
  101    107   
import aws.sdk.kotlin.services.ec2.model.DescribeImportSnapshotTasksResponse
  102    108   
import aws.sdk.kotlin.services.ec2.model.DescribeInstanceConnectEndpointsRequest
  103    109   
import aws.sdk.kotlin.services.ec2.model.DescribeInstanceConnectEndpointsResponse
  104    110   
import aws.sdk.kotlin.services.ec2.model.DescribeInstanceCreditSpecificationsRequest
  105    111   
import aws.sdk.kotlin.services.ec2.model.DescribeInstanceCreditSpecificationsResponse
@@ -309,315 +368,377 @@
  329    335   
import aws.sdk.kotlin.services.ec2.model.GetTransitGatewayRouteTablePropagationsRequest
  330    336   
import aws.sdk.kotlin.services.ec2.model.GetTransitGatewayRouteTablePropagationsResponse
  331    337   
import aws.sdk.kotlin.services.ec2.model.GetVpnConnectionDeviceTypesRequest
  332    338   
import aws.sdk.kotlin.services.ec2.model.GetVpnConnectionDeviceTypesResponse
  333    339   
import aws.sdk.kotlin.services.ec2.model.Host
  334    340   
import aws.sdk.kotlin.services.ec2.model.HostOffering
  335    341   
import aws.sdk.kotlin.services.ec2.model.HostReservation
  336    342   
import aws.sdk.kotlin.services.ec2.model.IamInstanceProfileAssociation
  337    343   
import aws.sdk.kotlin.services.ec2.model.Image
  338    344   
import aws.sdk.kotlin.services.ec2.model.ImageRecycleBinInfo
         345  +
import aws.sdk.kotlin.services.ec2.model.ImageReference
         346  +
import aws.sdk.kotlin.services.ec2.model.ImageUsageReport
         347  +
import aws.sdk.kotlin.services.ec2.model.ImageUsageReportEntry
  339    348   
import aws.sdk.kotlin.services.ec2.model.ImportImageTask
  340    349   
import aws.sdk.kotlin.services.ec2.model.ImportSnapshotTask
  341    350   
import aws.sdk.kotlin.services.ec2.model.InstanceCreditSpecification
  342    351   
import aws.sdk.kotlin.services.ec2.model.InstanceEventWindow
  343    352   
import aws.sdk.kotlin.services.ec2.model.InstanceImageMetadata
  344    353   
import aws.sdk.kotlin.services.ec2.model.InstanceStatus
  345    354   
import aws.sdk.kotlin.services.ec2.model.InstanceTopology
  346    355   
import aws.sdk.kotlin.services.ec2.model.InstanceTypeInfo
  347    356   
import aws.sdk.kotlin.services.ec2.model.InstanceTypeInfoFromInstanceRequirements
  348    357   
import aws.sdk.kotlin.services.ec2.model.InstanceTypeOffering
@@ -2163,2172 +2276,2447 @@
 2183   2192   
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [IamInstanceProfileAssociation]
 2184   2193   
 */
 2185   2194   
@JvmName("describeIamInstanceProfileAssociationsResponseIamInstanceProfileAssociation")
 2186   2195   
public fun Flow<DescribeIamInstanceProfileAssociationsResponse>.iamInstanceProfileAssociations(): Flow<IamInstanceProfileAssociation> =
 2187   2196   
    transform() { response ->
 2188   2197   
        response.iamInstanceProfileAssociations?.forEach {
 2189   2198   
            emit(it)
 2190   2199   
        }
 2191   2200   
    }
 2192   2201   
        2202  +
/**
        2203  +
 * Paginate over [DescribeImageReferencesResponse] results.
        2204  +
 *
        2205  +
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
        2206  +
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
        2207  +
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
        2208  +
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
        2209  +
 * see the failures only after you start collection.
        2210  +
 * @param initialRequest A [DescribeImageReferencesRequest] to start pagination
        2211  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImageReferencesResponse]
        2212  +
 */
        2213  +
public fun Ec2Client.describeImageReferencesPaginated(initialRequest: DescribeImageReferencesRequest): Flow<DescribeImageReferencesResponse> =
        2214  +
    flow {
        2215  +
        var cursor: kotlin.String? = initialRequest.nextToken
        2216  +
        var hasNextPage: Boolean = true
        2217  +
        2218  +
        while (hasNextPage) {
        2219  +
            val req = initialRequest.copy {
        2220  +
                this.nextToken = cursor
        2221  +
            }
        2222  +
            val result = this@describeImageReferencesPaginated.describeImageReferences(req)
        2223  +
            cursor = result.nextToken
        2224  +
            hasNextPage = cursor?.isNotEmpty() == true
        2225  +
            emit(result)
        2226  +
        }
        2227  +
    }
        2228  +
        2229  +
/**
        2230  +
 * Paginate over [DescribeImageReferencesResponse] results.
        2231  +
 *
        2232  +
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
        2233  +
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
        2234  +
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
        2235  +
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
        2236  +
 * see the failures only after you start collection.
        2237  +
 * @param block A builder block used for DSL-style invocation of the operation
        2238  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImageReferencesResponse]
        2239  +
 */
        2240  +
public fun Ec2Client.describeImageReferencesPaginated(block: DescribeImageReferencesRequest.Builder.() -> Unit): Flow<DescribeImageReferencesResponse> =
        2241  +
    describeImageReferencesPaginated(DescribeImageReferencesRequest.Builder().apply(block).build())
        2242  +
        2243  +
/**
        2244  +
 * This paginator transforms the flow returned by [describeImageReferencesPaginated]
        2245  +
 * to access the nested member [ImageReference]
        2246  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [ImageReference]
        2247  +
 */
        2248  +
@JvmName("describeImageReferencesResponseImageReference")
        2249  +
public fun Flow<DescribeImageReferencesResponse>.imageReferences(): Flow<ImageReference> =
        2250  +
    transform() { response ->
        2251  +
        response.imageReferences?.forEach {
        2252  +
            emit(it)
        2253  +
        }
        2254  +
    }
        2255  +
 2193   2256   
/**
 2194   2257   
 * Paginate over [DescribeImagesResponse] results.
 2195   2258   
 *
 2196   2259   
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
 2197   2260   
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
 2198   2261   
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
 2199   2262   
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
 2200   2263   
 * see the failures only after you start collection.
 2201   2264   
 * @param initialRequest A [DescribeImagesRequest] to start pagination
 2202   2265   
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImagesResponse]
 2203   2266   
 */
 2204   2267   
public fun Ec2Client.describeImagesPaginated(initialRequest: DescribeImagesRequest = DescribeImagesRequest { }): Flow<DescribeImagesResponse> =
 2205   2268   
    flow {
 2206   2269   
        var cursor: kotlin.String? = initialRequest.nextToken
 2207   2270   
        var hasNextPage: Boolean = true
 2208   2271   
 2209   2272   
        while (hasNextPage) {
 2210   2273   
            val req = initialRequest.copy {
 2211   2274   
                this.nextToken = cursor
 2212   2275   
            }
 2213   2276   
            val result = this@describeImagesPaginated.describeImages(req)
 2214   2277   
            cursor = result.nextToken
 2215   2278   
            hasNextPage = cursor?.isNotEmpty() == true
 2216   2279   
            emit(result)
 2217   2280   
        }
 2218   2281   
    }
 2219   2282   
 2220   2283   
/**
 2221   2284   
 * Paginate over [DescribeImagesResponse] results.
 2222   2285   
 *
 2223   2286   
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
 2224   2287   
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
 2225   2288   
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
 2226   2289   
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
 2227   2290   
 * see the failures only after you start collection.
 2228   2291   
 * @param block A builder block used for DSL-style invocation of the operation
 2229   2292   
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImagesResponse]
 2230   2293   
 */
 2231   2294   
public fun Ec2Client.describeImagesPaginated(block: DescribeImagesRequest.Builder.() -> Unit): Flow<DescribeImagesResponse> =
 2232   2295   
    describeImagesPaginated(DescribeImagesRequest.Builder().apply(block).build())
 2233   2296   
 2234   2297   
/**
 2235   2298   
 * This paginator transforms the flow returned by [describeImagesPaginated]
 2236   2299   
 * to access the nested member [Image]
 2237   2300   
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [Image]
 2238   2301   
 */
 2239   2302   
@JvmName("describeImagesResponseImage")
 2240   2303   
public fun Flow<DescribeImagesResponse>.images(): Flow<Image> =
 2241   2304   
    transform() { response ->
 2242   2305   
        response.images?.forEach {
 2243   2306   
            emit(it)
 2244   2307   
        }
 2245   2308   
    }
 2246   2309   
        2310  +
/**
        2311  +
 * Paginate over [DescribeImageUsageReportEntriesResponse] results.
        2312  +
 *
        2313  +
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
        2314  +
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
        2315  +
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
        2316  +
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
        2317  +
 * see the failures only after you start collection.
        2318  +
 * @param initialRequest A [DescribeImageUsageReportEntriesRequest] to start pagination
        2319  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImageUsageReportEntriesResponse]
        2320  +
 */
        2321  +
public fun Ec2Client.describeImageUsageReportEntriesPaginated(initialRequest: DescribeImageUsageReportEntriesRequest = DescribeImageUsageReportEntriesRequest { }): Flow<DescribeImageUsageReportEntriesResponse> =
        2322  +
    flow {
        2323  +
        var cursor: kotlin.String? = initialRequest.nextToken
        2324  +
        var hasNextPage: Boolean = true
        2325  +
        2326  +
        while (hasNextPage) {
        2327  +
            val req = initialRequest.copy {
        2328  +
                this.nextToken = cursor
        2329  +
            }
        2330  +
            val result = this@describeImageUsageReportEntriesPaginated.describeImageUsageReportEntries(req)
        2331  +
            cursor = result.nextToken
        2332  +
            hasNextPage = cursor?.isNotEmpty() == true
        2333  +
            emit(result)
        2334  +
        }
        2335  +
    }
        2336  +
        2337  +
/**
        2338  +
 * Paginate over [DescribeImageUsageReportEntriesResponse] results.
        2339  +
 *
        2340  +
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
        2341  +
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
        2342  +
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
        2343  +
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
        2344  +
 * see the failures only after you start collection.
        2345  +
 * @param block A builder block used for DSL-style invocation of the operation
        2346  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImageUsageReportEntriesResponse]
        2347  +
 */
        2348  +
public fun Ec2Client.describeImageUsageReportEntriesPaginated(block: DescribeImageUsageReportEntriesRequest.Builder.() -> Unit): Flow<DescribeImageUsageReportEntriesResponse> =
        2349  +
    describeImageUsageReportEntriesPaginated(DescribeImageUsageReportEntriesRequest.Builder().apply(block).build())
        2350  +
        2351  +
/**
        2352  +
 * This paginator transforms the flow returned by [describeImageUsageReportEntriesPaginated]
        2353  +
 * to access the nested member [ImageUsageReportEntry]
        2354  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [ImageUsageReportEntry]
        2355  +
 */
        2356  +
@JvmName("describeImageUsageReportEntriesResponseImageUsageReportEntry")
        2357  +
public fun Flow<DescribeImageUsageReportEntriesResponse>.imageUsageReportEntries(): Flow<ImageUsageReportEntry> =
        2358  +
    transform() { response ->
        2359  +
        response.imageUsageReportEntries?.forEach {
        2360  +
            emit(it)
        2361  +
        }
        2362  +
    }
        2363  +
        2364  +
/**
        2365  +
 * Paginate over [DescribeImageUsageReportsResponse] results.
        2366  +
 *
        2367  +
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
        2368  +
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
        2369  +
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
        2370  +
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
        2371  +
 * see the failures only after you start collection.
        2372  +
 * @param initialRequest A [DescribeImageUsageReportsRequest] to start pagination
        2373  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImageUsageReportsResponse]
        2374  +
 */
        2375  +
public fun Ec2Client.describeImageUsageReportsPaginated(initialRequest: DescribeImageUsageReportsRequest = DescribeImageUsageReportsRequest { }): Flow<DescribeImageUsageReportsResponse> =
        2376  +
    flow {
        2377  +
        var cursor: kotlin.String? = initialRequest.nextToken
        2378  +
        var hasNextPage: Boolean = true
        2379  +
        2380  +
        while (hasNextPage) {
        2381  +
            val req = initialRequest.copy {
        2382  +
                this.nextToken = cursor
        2383  +
            }
        2384  +
            val result = this@describeImageUsageReportsPaginated.describeImageUsageReports(req)
        2385  +
            cursor = result.nextToken
        2386  +
            hasNextPage = cursor?.isNotEmpty() == true
        2387  +
            emit(result)
        2388  +
        }
        2389  +
    }
        2390  +
        2391  +
/**
        2392  +
 * Paginate over [DescribeImageUsageReportsResponse] results.
        2393  +
 *
        2394  +
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
        2395  +
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
        2396  +
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
        2397  +
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
        2398  +
 * see the failures only after you start collection.
        2399  +
 * @param block A builder block used for DSL-style invocation of the operation
        2400  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImageUsageReportsResponse]
        2401  +
 */
        2402  +
public fun Ec2Client.describeImageUsageReportsPaginated(block: DescribeImageUsageReportsRequest.Builder.() -> Unit): Flow<DescribeImageUsageReportsResponse> =
        2403  +
    describeImageUsageReportsPaginated(DescribeImageUsageReportsRequest.Builder().apply(block).build())
        2404  +
        2405  +
/**
        2406  +
 * This paginator transforms the flow returned by [describeImageUsageReportsPaginated]
        2407  +
 * to access the nested member [ImageUsageReport]
        2408  +
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [ImageUsageReport]
        2409  +
 */
        2410  +
@JvmName("describeImageUsageReportsResponseImageUsageReport")
        2411  +
public fun Flow<DescribeImageUsageReportsResponse>.imageUsageReports(): Flow<ImageUsageReport> =
        2412  +
    transform() { response ->
        2413  +
        response.imageUsageReports?.forEach {
        2414  +
            emit(it)
        2415  +
        }
        2416  +
    }
        2417  +
 2247   2418   
/**
 2248   2419   
 * Paginate over [DescribeImportImageTasksResponse] results.
 2249   2420   
 *
 2250   2421   
 * When this operation is called, a [kotlinx.coroutines.Flow] is created. Flows are lazy (cold) so no service
 2251   2422   
 * calls are made until the flow is collected. This also means there is no guarantee that the request is valid
 2252   2423   
 * until then. Once you start collecting the flow, the SDK will lazily load response pages by making service
 2253   2424   
 * calls until there are no pages left or the flow is cancelled. If there are errors in your request, you will
 2254   2425   
 * see the failures only after you start collection.
 2255   2426   
 * @param initialRequest A [DescribeImportImageTasksRequest] to start pagination
 2256   2427   
 * @return A [kotlinx.coroutines.flow.Flow] that can collect [DescribeImportImageTasksResponse]

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/serde/AssociateRouteTableOperationSerializer.kt

@@ -20,20 +69,72 @@
   40     40   
            builder.headers.setMissing("Content-Type", "application/x-www-form-urlencoded")
   41     41   
        }
   42     42   
        return builder
   43     43   
    }
   44     44   
}
   45     45   
   46     46   
private fun serializeAssociateRouteTableOperationBody(context: ExecutionContext, input: AssociateRouteTableRequest): ByteArray {
   47     47   
    val serializer = FormUrlSerializer()
   48     48   
    val DRYRUN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("DryRun"))
   49     49   
    val GATEWAYID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("GatewayId"))
          50  +
    val PUBLICIPV4POOL_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("PublicIpv4Pool"))
   50     51   
    val ROUTETABLEID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("RouteTableId"))
   51     52   
    val SUBNETID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("SubnetId"))
   52     53   
    val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
   53     54   
        trait(FormUrlSerialName("AssociateRouteTableRequest"))
   54     55   
        trait(QueryLiteral("Action", "AssociateRouteTable"))
   55     56   
        trait(QueryLiteral("Version", "2016-11-15"))
   56     57   
        field(DRYRUN_DESCRIPTOR)
   57     58   
        field(GATEWAYID_DESCRIPTOR)
          59  +
        field(PUBLICIPV4POOL_DESCRIPTOR)
   58     60   
        field(ROUTETABLEID_DESCRIPTOR)
   59     61   
        field(SUBNETID_DESCRIPTOR)
   60     62   
    }
   61     63   
   62     64   
    serializer.serializeStruct(OBJ_DESCRIPTOR) {
   63     65   
        input.dryRun?.let { field(DRYRUN_DESCRIPTOR, it) }
   64     66   
        input.gatewayId?.let { field(GATEWAYID_DESCRIPTOR, it) }
          67  +
        input.publicIpv4Pool?.let { field(PUBLICIPV4POOL_DESCRIPTOR, it) }
   65     68   
        input.routeTableId?.let { field(ROUTETABLEID_DESCRIPTOR, it) }
   66     69   
        input.subnetId?.let { field(SUBNETID_DESCRIPTOR, it) }
   67     70   
    }
   68     71   
    return serializer.toByteArray()
   69     72   
}

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/serde/ClientVpnConnectionDocumentDeserializer.kt

@@ -16,16 +62,65 @@
   36     36   
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
   37     37   
            // IngressPackets com.amazonaws.ec2#ClientVpnConnection$IngressPackets
   38     38   
            "ingressPackets" -> builder.ingressPackets = curr.tryData()
   39     39   
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
   40     40   
            // EgressPackets com.amazonaws.ec2#ClientVpnConnection$EgressPackets
   41     41   
            "egressPackets" -> builder.egressPackets = curr.tryData()
   42     42   
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
   43     43   
            // ClientIp com.amazonaws.ec2#ClientVpnConnection$ClientIp
   44     44   
            "clientIp" -> builder.clientIp = curr.tryData()
   45     45   
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
          46  +
            // ClientIpv6Address com.amazonaws.ec2#ClientVpnConnection$ClientIpv6Address
          47  +
            "clientIpv6Address" -> builder.clientIpv6Address = curr.tryData()
          48  +
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
   46     49   
            // CommonName com.amazonaws.ec2#ClientVpnConnection$CommonName
   47     50   
            "commonName" -> builder.commonName = curr.tryData()
   48     51   
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
   49     52   
            // Status com.amazonaws.ec2#ClientVpnConnection$Status
   50     53   
            "status" -> builder.status = deserializeClientVpnConnectionStatusDocument(curr)
   51     54   
            // ConnectionEndTime com.amazonaws.ec2#ClientVpnConnection$ConnectionEndTime
   52     55   
            "connectionEndTime" -> builder.connectionEndTime = curr.tryData()
   53     56   
                .getOrDeserializeErr { "expected (string: `com.amazonaws.ec2#String`)" }
   54     57   
            // PostureComplianceStatuses com.amazonaws.ec2#ClientVpnConnection$PostureComplianceStatuses
   55     58   
            "postureComplianceStatusSet" -> builder.postureComplianceStatuses = deserializeValueStringListShape(curr)

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/serde/ClientVpnEndpointDocumentDeserializer.kt

@@ -1,1 +35,37 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.ec2.serde
    4      4   
    5      5   
import aws.sdk.kotlin.services.ec2.model.ClientVpnEndpoint
           6  +
import aws.sdk.kotlin.services.ec2.model.EndpointIpAddressType
           7  +
import aws.sdk.kotlin.services.ec2.model.TrafficIpAddressType
    6      8   
import aws.sdk.kotlin.services.ec2.model.TransportProtocol
    7      9   
import aws.sdk.kotlin.services.ec2.model.VpnProtocol
    8     10   
import aws.smithy.kotlin.runtime.serde.getOrDeserializeErr
    9     11   
import aws.smithy.kotlin.runtime.serde.parse
   10     12   
import aws.smithy.kotlin.runtime.serde.parseBoolean
   11     13   
import aws.smithy.kotlin.runtime.serde.parseInt
   12     14   
import aws.smithy.kotlin.runtime.serde.xml.XmlTagReader
   13     15   
import aws.smithy.kotlin.runtime.serde.xml.tryData
   14     16   
   15     17   
internal fun deserializeClientVpnEndpointDocument(reader: XmlTagReader): ClientVpnEndpoint {
@@ -62,64 +98,108 @@
   82     84   
                .parseInt()
   83     85   
                .getOrDeserializeErr { "expected (integer: `com.amazonaws.ec2#Integer`)" }
   84     86   
            // ClientLoginBannerOptions com.amazonaws.ec2#ClientVpnEndpoint$ClientLoginBannerOptions
   85     87   
            "clientLoginBannerOptions" -> builder.clientLoginBannerOptions = deserializeClientLoginBannerResponseOptionsDocument(curr)
   86     88   
            // ClientRouteEnforcementOptions com.amazonaws.ec2#ClientVpnEndpoint$ClientRouteEnforcementOptions
   87     89   
            "clientRouteEnforcementOptions" -> builder.clientRouteEnforcementOptions = deserializeClientRouteEnforcementResponseOptionsDocument(curr)
   88     90   
            // DisconnectOnSessionTimeout com.amazonaws.ec2#ClientVpnEndpoint$DisconnectOnSessionTimeout
   89     91   
            "disconnectOnSessionTimeout" -> builder.disconnectOnSessionTimeout = curr.tryData()
   90     92   
                .parseBoolean()
   91     93   
                .getOrDeserializeErr { "expected (boolean: `com.amazonaws.ec2#Boolean`)" }
          94  +
            // EndpointIpAddressType com.amazonaws.ec2#ClientVpnEndpoint$EndpointIpAddressType
          95  +
            "endpointIpAddressType" -> builder.endpointIpAddressType = curr.tryData()
          96  +
                .parse { EndpointIpAddressType.fromValue(it) }
          97  +
                .getOrDeserializeErr { "expected (enum: `com.amazonaws.ec2#EndpointIpAddressType`)" }
          98  +
            // TrafficIpAddressType com.amazonaws.ec2#ClientVpnEndpoint$TrafficIpAddressType
          99  +
            "trafficIpAddressType" -> builder.trafficIpAddressType = curr.tryData()
         100  +
                .parse { TrafficIpAddressType.fromValue(it) }
         101  +
                .getOrDeserializeErr { "expected (enum: `com.amazonaws.ec2#TrafficIpAddressType`)" }
   92    102   
            else -> {}
   93    103   
        }
   94    104   
        curr.drop()
   95    105   
    }
   96    106   
    builder.correctErrors()
   97    107   
    return builder.build()
   98    108   
}

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/serde/CopyImageOperationSerializer.kt

@@ -24,24 +102,108 @@
   44     44   
        }
   45     45   
        return builder
   46     46   
    }
   47     47   
}
   48     48   
   49     49   
private fun serializeCopyImageOperationBody(context: ExecutionContext, input: CopyImageRequest): ByteArray {
   50     50   
    val serializer = FormUrlSerializer()
   51     51   
    val CLIENTTOKEN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("ClientToken"))
   52     52   
    val COPYIMAGETAGS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("CopyImageTags"))
   53     53   
    val DESCRIPTION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("Description"))
          54  +
    val DESTINATIONAVAILABILITYZONE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("DestinationAvailabilityZone"))
          55  +
    val DESTINATIONAVAILABILITYZONEID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("DestinationAvailabilityZoneId"))
   54     56   
    val DESTINATIONOUTPOSTARN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("DestinationOutpostArn"))
   55     57   
    val DRYRUN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("DryRun"))
   56     58   
    val ENCRYPTED_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("Encrypted"))
   57     59   
    val KMSKEYID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("KmsKeyId"))
   58     60   
    val NAME_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("Name"))
   59     61   
    val SNAPSHOTCOPYCOMPLETIONDURATIONMINUTES_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Long, FormUrlSerialName("SnapshotCopyCompletionDurationMinutes"))
   60     62   
    val SOURCEIMAGEID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("SourceImageId"))
   61     63   
    val SOURCEREGION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("SourceRegion"))
   62     64   
    val TAGSPECIFICATIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("TagSpecification"), FormUrlFlattened)
   63     65   
    val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
   64     66   
        trait(FormUrlSerialName("CopyImageRequest"))
   65     67   
        trait(QueryLiteral("Action", "CopyImage"))
   66     68   
        trait(QueryLiteral("Version", "2016-11-15"))
   67     69   
        field(CLIENTTOKEN_DESCRIPTOR)
   68     70   
        field(COPYIMAGETAGS_DESCRIPTOR)
   69     71   
        field(DESCRIPTION_DESCRIPTOR)
          72  +
        field(DESTINATIONAVAILABILITYZONE_DESCRIPTOR)
          73  +
        field(DESTINATIONAVAILABILITYZONEID_DESCRIPTOR)
   70     74   
        field(DESTINATIONOUTPOSTARN_DESCRIPTOR)
   71     75   
        field(DRYRUN_DESCRIPTOR)
   72     76   
        field(ENCRYPTED_DESCRIPTOR)
   73     77   
        field(KMSKEYID_DESCRIPTOR)
   74     78   
        field(NAME_DESCRIPTOR)
   75     79   
        field(SNAPSHOTCOPYCOMPLETIONDURATIONMINUTES_DESCRIPTOR)
   76     80   
        field(SOURCEIMAGEID_DESCRIPTOR)
   77     81   
        field(SOURCEREGION_DESCRIPTOR)
   78     82   
        field(TAGSPECIFICATIONS_DESCRIPTOR)
   79     83   
    }
   80     84   
   81     85   
    serializer.serializeStruct(OBJ_DESCRIPTOR) {
   82     86   
        input.clientToken?.let { field(CLIENTTOKEN_DESCRIPTOR, it) } ?: field(CLIENTTOKEN_DESCRIPTOR, context.idempotencyTokenProvider.generateToken())
   83     87   
        input.copyImageTags?.let { field(COPYIMAGETAGS_DESCRIPTOR, it) }
   84     88   
        input.description?.let { field(DESCRIPTION_DESCRIPTOR, it) }
          89  +
        input.destinationAvailabilityZone?.let { field(DESTINATIONAVAILABILITYZONE_DESCRIPTOR, it) }
          90  +
        input.destinationAvailabilityZoneId?.let { field(DESTINATIONAVAILABILITYZONEID_DESCRIPTOR, it) }
   85     91   
        input.destinationOutpostArn?.let { field(DESTINATIONOUTPOSTARN_DESCRIPTOR, it) }
   86     92   
        input.dryRun?.let { field(DRYRUN_DESCRIPTOR, it) }
   87     93   
        input.encrypted?.let { field(ENCRYPTED_DESCRIPTOR, it) }
   88     94   
        input.kmsKeyId?.let { field(KMSKEYID_DESCRIPTOR, it) }
   89     95   
        input.name?.let { field(NAME_DESCRIPTOR, it) }
   90     96   
        input.snapshotCopyCompletionDurationMinutes?.let { field(SNAPSHOTCOPYCOMPLETIONDURATIONMINUTES_DESCRIPTOR, it) }
   91     97   
        input.sourceImageId?.let { field(SOURCEIMAGEID_DESCRIPTOR, it) }
   92     98   
        input.sourceRegion?.let { field(SOURCEREGION_DESCRIPTOR, it) }
   93     99   
        if (!input.tagSpecifications.isNullOrEmpty()) {
   94    100   
            listField(TAGSPECIFICATIONS_DESCRIPTOR) {

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/serde/CopySnapshotOperationSerializer.kt

@@ -22,22 +98,101 @@
   42     42   
            builder.headers.setMissing("Content-Type", "application/x-www-form-urlencoded")
   43     43   
        }
   44     44   
        return builder
   45     45   
    }
   46     46   
}
   47     47   
   48     48   
private fun serializeCopySnapshotOperationBody(context: ExecutionContext, input: CopySnapshotRequest): ByteArray {
   49     49   
    val serializer = FormUrlSerializer()
   50     50   
    val COMPLETIONDURATIONMINUTES_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("CompletionDurationMinutes"))
   51     51   
    val DESCRIPTION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("Description"))
          52  +
    val DESTINATIONAVAILABILITYZONE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("DestinationAvailabilityZone"))
   52     53   
    val DESTINATIONOUTPOSTARN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("DestinationOutpostArn"))
   53     54   
    val DESTINATIONREGION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("DestinationRegion"))
   54     55   
    val DRYRUN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("DryRun"))
   55     56   
    val ENCRYPTED_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("Encrypted"))
   56     57   
    val KMSKEYID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("KmsKeyId"))
   57     58   
    val PRESIGNEDURL_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("PresignedUrl"))
   58     59   
    val SOURCEREGION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("SourceRegion"))
   59     60   
    val SOURCESNAPSHOTID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("SourceSnapshotId"))
   60     61   
    val TAGSPECIFICATIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("TagSpecification"), FormUrlFlattened)
   61     62   
    val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
   62     63   
        trait(FormUrlSerialName("CopySnapshotRequest"))
   63     64   
        trait(QueryLiteral("Action", "CopySnapshot"))
   64     65   
        trait(QueryLiteral("Version", "2016-11-15"))
   65     66   
        field(COMPLETIONDURATIONMINUTES_DESCRIPTOR)
   66     67   
        field(DESCRIPTION_DESCRIPTOR)
          68  +
        field(DESTINATIONAVAILABILITYZONE_DESCRIPTOR)
   67     69   
        field(DESTINATIONOUTPOSTARN_DESCRIPTOR)
   68     70   
        field(DESTINATIONREGION_DESCRIPTOR)
   69     71   
        field(DRYRUN_DESCRIPTOR)
   70     72   
        field(ENCRYPTED_DESCRIPTOR)
   71     73   
        field(KMSKEYID_DESCRIPTOR)
   72     74   
        field(PRESIGNEDURL_DESCRIPTOR)
   73     75   
        field(SOURCEREGION_DESCRIPTOR)
   74     76   
        field(SOURCESNAPSHOTID_DESCRIPTOR)
   75     77   
        field(TAGSPECIFICATIONS_DESCRIPTOR)
   76     78   
    }
   77     79   
   78     80   
    serializer.serializeStruct(OBJ_DESCRIPTOR) {
   79     81   
        input.completionDurationMinutes?.let { field(COMPLETIONDURATIONMINUTES_DESCRIPTOR, it) }
   80     82   
        input.description?.let { field(DESCRIPTION_DESCRIPTOR, it) }
          83  +
        input.destinationAvailabilityZone?.let { field(DESTINATIONAVAILABILITYZONE_DESCRIPTOR, it) }
   81     84   
        input.destinationOutpostArn?.let { field(DESTINATIONOUTPOSTARN_DESCRIPTOR, it) }
   82     85   
        input.destinationRegion?.let { field(DESTINATIONREGION_DESCRIPTOR, it) }
   83     86   
        input.dryRun?.let { field(DRYRUN_DESCRIPTOR, it) }
   84     87   
        input.encrypted?.let { field(ENCRYPTED_DESCRIPTOR, it) }
   85     88   
        input.kmsKeyId?.let { field(KMSKEYID_DESCRIPTOR, it) }
   86     89   
        input.presignedUrl?.let { field(PRESIGNEDURL_DESCRIPTOR, it) }
   87     90   
        input.sourceRegion?.let { field(SOURCEREGION_DESCRIPTOR, it) }
   88     91   
        input.sourceSnapshotId?.let { field(SOURCESNAPSHOTID_DESCRIPTOR, it) }
   89     92   
        if (!input.tagSpecifications.isNullOrEmpty()) {
   90     93   
            listField(TAGSPECIFICATIONS_DESCRIPTOR) {

tmp-codegen-diff/services/ec2/generated-src/main/kotlin/aws/sdk/kotlin/services/ec2/serde/CreateClientVpnEndpointOperationSerializer.kt

@@ -1,1 +151,159 @@
    1      1   
// Code generated by smithy-kotlin-codegen. DO NOT EDIT!
    2      2   
    3      3   
package aws.sdk.kotlin.services.ec2.serde
    4      4   
    5      5   
import aws.sdk.kotlin.services.ec2.model.ClientConnectOptions
    6      6   
import aws.sdk.kotlin.services.ec2.model.ClientLoginBannerOptions
    7      7   
import aws.sdk.kotlin.services.ec2.model.ClientRouteEnforcementOptions
    8      8   
import aws.sdk.kotlin.services.ec2.model.ClientVpnAuthenticationRequest
    9      9   
import aws.sdk.kotlin.services.ec2.model.ConnectionLogOptions
   10     10   
import aws.sdk.kotlin.services.ec2.model.CreateClientVpnEndpointRequest
          11  +
import aws.sdk.kotlin.services.ec2.model.EndpointIpAddressType
   11     12   
import aws.sdk.kotlin.services.ec2.model.SelfServicePortal
   12     13   
import aws.sdk.kotlin.services.ec2.model.TagSpecification
          14  +
import aws.sdk.kotlin.services.ec2.model.TrafficIpAddressType
   13     15   
import aws.sdk.kotlin.services.ec2.model.TransportProtocol
   14     16   
import aws.smithy.kotlin.runtime.client.idempotencyTokenProvider
   15     17   
import aws.smithy.kotlin.runtime.http.HttpBody
   16     18   
import aws.smithy.kotlin.runtime.http.HttpMethod
   17     19   
import aws.smithy.kotlin.runtime.http.operation.HttpSerializer
   18     20   
import aws.smithy.kotlin.runtime.http.request.HttpRequestBuilder
   19     21   
import aws.smithy.kotlin.runtime.http.request.url
   20     22   
import aws.smithy.kotlin.runtime.operation.ExecutionContext
   21     23   
import aws.smithy.kotlin.runtime.serde.SdkFieldDescriptor
   22     24   
import aws.smithy.kotlin.runtime.serde.SdkObjectDescriptor
   23     25   
import aws.smithy.kotlin.runtime.serde.SerialKind
   24     26   
import aws.smithy.kotlin.runtime.serde.asSdkSerializable
   25     27   
import aws.smithy.kotlin.runtime.serde.deserializeList
   26     28   
import aws.smithy.kotlin.runtime.serde.deserializeMap
   27     29   
import aws.smithy.kotlin.runtime.serde.deserializeStruct
   28     30   
import aws.smithy.kotlin.runtime.serde.field
   29     31   
import aws.smithy.kotlin.runtime.serde.formurl.FormUrlFlattened
   30     32   
import aws.smithy.kotlin.runtime.serde.formurl.FormUrlSerialName
   31     33   
import aws.smithy.kotlin.runtime.serde.formurl.FormUrlSerializer
   32     34   
import aws.smithy.kotlin.runtime.serde.formurl.QueryLiteral
   33     35   
import aws.smithy.kotlin.runtime.serde.serializeList
   34     36   
import aws.smithy.kotlin.runtime.serde.serializeMap
   35     37   
import aws.smithy.kotlin.runtime.serde.serializeStruct
   36     38   
   37     39   
   38     40   
internal class CreateClientVpnEndpointOperationSerializer: HttpSerializer.NonStreaming<CreateClientVpnEndpointRequest> {
   39     41   
    override fun serialize(context: ExecutionContext, input: CreateClientVpnEndpointRequest): HttpRequestBuilder {
   40     42   
        val builder = HttpRequestBuilder()
   41     43   
        builder.method = HttpMethod.POST
   42     44   
   43     45   
        builder.url {
   44     46   
            path.encoded = "/"
   45     47   
        }
   46     48   
   47     49   
        val payload = serializeCreateClientVpnEndpointOperationBody(context, input)
   48     50   
        builder.body = HttpBody.fromBytes(payload)
   49     51   
        if (builder.body !is HttpBody.Empty) {
   50     52   
            builder.headers.setMissing("Content-Type", "application/x-www-form-urlencoded")
   51     53   
        }
   52     54   
        return builder
   53     55   
    }
   54     56   
}
   55     57   
   56     58   
private fun serializeCreateClientVpnEndpointOperationBody(context: ExecutionContext, input: CreateClientVpnEndpointRequest): ByteArray {
   57     59   
    val serializer = FormUrlSerializer()
   58     60   
    val AUTHENTICATIONOPTIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("Authentication"), FormUrlFlattened)
   59     61   
    val CLIENTCIDRBLOCK_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("ClientCidrBlock"))
   60     62   
    val CLIENTCONNECTOPTIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, FormUrlSerialName("ClientConnectOptions"))
   61     63   
    val CLIENTLOGINBANNEROPTIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, FormUrlSerialName("ClientLoginBannerOptions"))
   62     64   
    val CLIENTROUTEENFORCEMENTOPTIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, FormUrlSerialName("ClientRouteEnforcementOptions"))
   63     65   
    val CLIENTTOKEN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("ClientToken"))
   64     66   
    val CONNECTIONLOGOPTIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Struct, FormUrlSerialName("ConnectionLogOptions"))
   65     67   
    val DESCRIPTION_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("Description"))
   66     68   
    val DISCONNECTONSESSIONTIMEOUT_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("DisconnectOnSessionTimeout"))
   67     69   
    val DNSSERVERS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("DnsServers"), FormUrlFlattened)
   68     70   
    val DRYRUN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("DryRun"))
          71  +
    val ENDPOINTIPADDRESSTYPE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, FormUrlSerialName("EndpointIpAddressType"))
   69     72   
    val SECURITYGROUPIDS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("SecurityGroupId"), FormUrlFlattened)
   70     73   
    val SELFSERVICEPORTAL_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, FormUrlSerialName("SelfServicePortal"))
   71     74   
    val SERVERCERTIFICATEARN_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("ServerCertificateArn"))
   72     75   
    val SESSIONTIMEOUTHOURS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("SessionTimeoutHours"))
   73     76   
    val SPLITTUNNEL_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Boolean, FormUrlSerialName("SplitTunnel"))
   74     77   
    val TAGSPECIFICATIONS_DESCRIPTOR = SdkFieldDescriptor(SerialKind.List, FormUrlSerialName("TagSpecification"), FormUrlFlattened)
          78  +
    val TRAFFICIPADDRESSTYPE_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, FormUrlSerialName("TrafficIpAddressType"))
   75     79   
    val TRANSPORTPROTOCOL_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Enum, FormUrlSerialName("TransportProtocol"))
   76     80   
    val VPCID_DESCRIPTOR = SdkFieldDescriptor(SerialKind.String, FormUrlSerialName("VpcId"))
   77     81   
    val VPNPORT_DESCRIPTOR = SdkFieldDescriptor(SerialKind.Integer, FormUrlSerialName("VpnPort"))
   78     82   
    val OBJ_DESCRIPTOR = SdkObjectDescriptor.build {
   79     83   
        trait(FormUrlSerialName("CreateClientVpnEndpointRequest"))
   80     84   
        trait(QueryLiteral("Action", "CreateClientVpnEndpoint"))
   81     85   
        trait(QueryLiteral("Version", "2016-11-15"))
   82     86   
        field(AUTHENTICATIONOPTIONS_DESCRIPTOR)
   83     87   
        field(CLIENTCIDRBLOCK_DESCRIPTOR)
   84     88   
        field(CLIENTCONNECTOPTIONS_DESCRIPTOR)
   85     89   
        field(CLIENTLOGINBANNEROPTIONS_DESCRIPTOR)
   86     90   
        field(CLIENTROUTEENFORCEMENTOPTIONS_DESCRIPTOR)
   87     91   
        field(CLIENTTOKEN_DESCRIPTOR)
   88     92   
        field(CONNECTIONLOGOPTIONS_DESCRIPTOR)
   89     93   
        field(DESCRIPTION_DESCRIPTOR)
   90     94   
        field(DISCONNECTONSESSIONTIMEOUT_DESCRIPTOR)
   91     95   
        field(DNSSERVERS_DESCRIPTOR)
   92     96   
        field(DRYRUN_DESCRIPTOR)
          97  +
        field(ENDPOINTIPADDRESSTYPE_DESCRIPTOR)
   93     98   
        field(SECURITYGROUPIDS_DESCRIPTOR)
   94     99   
        field(SELFSERVICEPORTAL_DESCRIPTOR)
   95    100   
        field(SERVERCERTIFICATEARN_DESCRIPTOR)
   96    101   
        field(SESSIONTIMEOUTHOURS_DESCRIPTOR)
   97    102   
        field(SPLITTUNNEL_DESCRIPTOR)
   98    103   
        field(TAGSPECIFICATIONS_DESCRIPTOR)
         104  +
        field(TRAFFICIPADDRESSTYPE_DESCRIPTOR)
   99    105   
        field(TRANSPORTPROTOCOL_DESCRIPTOR)
  100    106   
        field(VPCID_DESCRIPTOR)
  101    107   
        field(VPNPORT_DESCRIPTOR)
  102    108   
    }
  103    109   
  104    110   
    serializer.serializeStruct(OBJ_DESCRIPTOR) {
  105    111   
        if (!input.authenticationOptions.isNullOrEmpty()) {
  106    112   
            listField(AUTHENTICATIONOPTIONS_DESCRIPTOR) {
  107    113   
                for (el0 in input.authenticationOptions) {
  108    114   
                    serializeSdkSerializable(asSdkSerializable(el0, ::serializeClientVpnAuthenticationRequestDocument))
  109    115   
                }
  110    116   
            }
  111    117   
        }
  112    118   
        input.clientCidrBlock?.let { field(CLIENTCIDRBLOCK_DESCRIPTOR, it) }
  113    119   
        input.clientConnectOptions?.let { field(CLIENTCONNECTOPTIONS_DESCRIPTOR, it, ::serializeClientConnectOptionsDocument) }
  114    120   
        input.clientLoginBannerOptions?.let { field(CLIENTLOGINBANNEROPTIONS_DESCRIPTOR, it, ::serializeClientLoginBannerOptionsDocument) }
  115    121   
        input.clientRouteEnforcementOptions?.let { field(CLIENTROUTEENFORCEMENTOPTIONS_DESCRIPTOR, it, ::serializeClientRouteEnforcementOptionsDocument) }
  116    122   
        input.clientToken?.let { field(CLIENTTOKEN_DESCRIPTOR, it) } ?: field(CLIENTTOKEN_DESCRIPTOR, context.idempotencyTokenProvider.generateToken())
  117    123   
        input.connectionLogOptions?.let { field(CONNECTIONLOGOPTIONS_DESCRIPTOR, it, ::serializeConnectionLogOptionsDocument) }
  118    124   
        input.description?.let { field(DESCRIPTION_DESCRIPTOR, it) }
  119    125   
        input.disconnectOnSessionTimeout?.let { field(DISCONNECTONSESSIONTIMEOUT_DESCRIPTOR, it) }
  120    126   
        if (!input.dnsServers.isNullOrEmpty()) {
  121    127   
            listField(DNSSERVERS_DESCRIPTOR) {
  122    128   
                for (el0 in input.dnsServers) {
  123    129   
                    serializeString(el0)
  124    130   
                }
  125    131   
            }
  126    132   
        }
  127    133   
        input.dryRun?.let { field(DRYRUN_DESCRIPTOR, it) }
         134  +
        input.endpointIpAddressType?.let { field(ENDPOINTIPADDRESSTYPE_DESCRIPTOR, it.value) }
  128    135   
        if (!input.securityGroupIds.isNullOrEmpty()) {
  129    136   
            listField(SECURITYGROUPIDS_DESCRIPTOR) {
  130    137   
                for (el0 in input.securityGroupIds) {
  131    138   
                    serializeString(el0)
  132    139   
                }
  133    140   
            }
  134    141   
        }
  135    142   
        input.selfServicePortal?.let { field(SELFSERVICEPORTAL_DESCRIPTOR, it.value) }
  136    143   
        input.serverCertificateArn?.let { field(SERVERCERTIFICATEARN_DESCRIPTOR, it) }
  137    144   
        input.sessionTimeoutHours?.let { field(SESSIONTIMEOUTHOURS_DESCRIPTOR, it) }
  138    145   
        input.splitTunnel?.let { field(SPLITTUNNEL_DESCRIPTOR, it) }
  139    146   
        if (!input.tagSpecifications.isNullOrEmpty()) {
  140    147   
            listField(TAGSPECIFICATIONS_DESCRIPTOR) {
  141    148   
                for (el0 in input.tagSpecifications) {
  142    149   
                    serializeSdkSerializable(asSdkSerializable(el0, ::serializeTagSpecificationDocument))
  143    150   
                }
  144    151   
            }
  145    152   
        }
         153  +
        input.trafficIpAddressType?.let { field(TRAFFICIPADDRESSTYPE_DESCRIPTOR, it.value) }
  146    154   
        input.transportProtocol?.let { field(TRANSPORTPROTOCOL_DESCRIPTOR, it.value) }
  147    155   
        input.vpcId?.let { field(VPCID_DESCRIPTOR, it) }
  148    156   
        input.vpnPort?.let { field(VPNPORT_DESCRIPTOR, it) }
  149    157   
    }
  150    158   
    return serializer.toByteArray()
  151    159   
}