From 88e2978593755404ea58cc151802ce9d2410bdb1 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 3 Jul 2024 16:36:58 -0400 Subject: [PATCH 1/4] fix: outdated business metric ids --- .../runtime/http/interceptors/InterceptorExecutor.kt | 8 ++++---- runtime/runtime-core/api/runtime-core.api | 4 ++-- .../runtime/businessmetrics/BusinessMetricsUtils.kt | 6 +++--- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/runtime/protocol/http-client/common/src/aws/smithy/kotlin/runtime/http/interceptors/InterceptorExecutor.kt b/runtime/protocol/http-client/common/src/aws/smithy/kotlin/runtime/http/interceptors/InterceptorExecutor.kt index 07a61e725..f440f507a 100644 --- a/runtime/protocol/http-client/common/src/aws/smithy/kotlin/runtime/http/interceptors/InterceptorExecutor.kt +++ b/runtime/protocol/http-client/common/src/aws/smithy/kotlin/runtime/http/interceptors/InterceptorExecutor.kt @@ -343,13 +343,13 @@ internal class InterceptorExecutor( ) { if (modifiedRequest.url != request.url) { if ( - context.executionContext.containsBusinessMetric(SmithyBusinessMetric.ACCOUNT_ID_BASED_ENDPOINT) && + context.executionContext.containsBusinessMetric(SmithyBusinessMetric.ACCOUNT_ID_ENDPOINT) && !modifiedRequest.url.toString().contains(context.executionContext.attributes[AccountIdBasedEndpointAccountId]) ) { - context.executionContext.removeBusinessMetric(SmithyBusinessMetric.ACCOUNT_ID_BASED_ENDPOINT) + context.executionContext.removeBusinessMetric(SmithyBusinessMetric.ACCOUNT_ID_ENDPOINT) } - if (context.executionContext.containsBusinessMetric(SmithyBusinessMetric.SERVICE_ENDPOINT_OVERRIDE)) { - context.executionContext.removeBusinessMetric(SmithyBusinessMetric.SERVICE_ENDPOINT_OVERRIDE) + if (context.executionContext.containsBusinessMetric(SmithyBusinessMetric.ENDPOINT_OVERRIDE)) { + context.executionContext.removeBusinessMetric(SmithyBusinessMetric.ENDPOINT_OVERRIDE) } } } diff --git a/runtime/runtime-core/api/runtime-core.api b/runtime/runtime-core/api/runtime-core.api index ad78caa7d..fb2a498f1 100644 --- a/runtime/runtime-core/api/runtime-core.api +++ b/runtime/runtime-core/api/runtime-core.api @@ -91,13 +91,13 @@ public final class aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtil } public final class aws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric : java/lang/Enum, aws/smithy/kotlin/runtime/businessmetrics/BusinessMetric { - public static final field ACCOUNT_ID_BASED_ENDPOINT Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; + public static final field ACCOUNT_ID_ENDPOINT Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; + public static final field ENDPOINT_OVERRIDE Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field GZIP_REQUEST_COMPRESSION Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field PAGINATOR Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field PROTOCOL_RPC_V2_CBOR Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field RETRY_MODE_ADAPTIVE Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field RETRY_MODE_STANDARD Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; - public static final field SERVICE_ENDPOINT_OVERRIDE Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field SIGV4A_SIGNING Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field WAITER Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static fun getEntries ()Lkotlin/enums/EnumEntries; diff --git a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt index 3a3571407..43f064bf0 100644 --- a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt +++ b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt @@ -74,7 +74,7 @@ public enum class SmithyBusinessMetric(public override val identifier: String) : RETRY_MODE_ADAPTIVE("F"), GZIP_REQUEST_COMPRESSION("L"), PROTOCOL_RPC_V2_CBOR("M"), - SERVICE_ENDPOINT_OVERRIDE("N"), - ACCOUNT_ID_BASED_ENDPOINT("O"), - SIGV4A_SIGNING("P"), + ENDPOINT_OVERRIDE("N"), + ACCOUNT_ID_ENDPOINT("O"), + SIGV4A_SIGNING("S"), } From 2ac351c53a1923e743fa205c4faa8462b6a0e1fe Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 17 Jul 2024 10:34:24 -0400 Subject: [PATCH 2/4] fix: variable names and added missing business metrics to class --- .../amazon/smithy/kotlin/codegen/core/RuntimeTypes.kt | 2 +- .../endpoints/DefaultEndpointProviderGenerator.kt | 8 ++++---- .../endpoints/DefaultEndpointProviderTestGenerator.kt | 4 ++-- .../runtime/businessmetrics/BusinessMetricsUtils.kt | 6 +++++- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/RuntimeTypes.kt b/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/RuntimeTypes.kt index 863ffecca..20f132e51 100644 --- a/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/RuntimeTypes.kt +++ b/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/core/RuntimeTypes.kt @@ -102,7 +102,7 @@ object RuntimeTypes { object BusinessMetrics : RuntimeTypePackage(KotlinDependency.CORE, "businessmetrics") { val AccountIdBasedEndpointAccountId = symbol("AccountIdBasedEndpointAccountId") - val ServiceEndpointOverride = symbol("ServiceEndpointOverride") + val EndpointOverride = symbol("EndpointOverride") val emitBusinessMetric = symbol("emitBusinessMetric") val SmithyBusinessMetric = symbol("SmithyBusinessMetric") } diff --git a/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGenerator.kt b/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGenerator.kt index 00a5fa464..002338207 100644 --- a/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGenerator.kt +++ b/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGenerator.kt @@ -173,8 +173,8 @@ class DefaultEndpointProviderGenerator( write("),") val hasAccountIdBasedEndpoint = "accountId" in endpointInfo.params - val hasServiceEndpointOverride = "endpoint" in endpointInfo.params - val needAdditionalEndpointProperties = hasAccountIdBasedEndpoint || hasServiceEndpointOverride + val hasEndpointOverride = "endpoint" in endpointInfo.params + val needAdditionalEndpointProperties = hasAccountIdBasedEndpoint || hasEndpointOverride if (rule.endpoint.headers.isNotEmpty()) { withBlock("headers = #T {", "},", RuntimeTypes.Http.Headers) { @@ -211,8 +211,8 @@ class DefaultEndpointProviderGenerator( if (hasAccountIdBasedEndpoint) { writer.write("#T to params.accountId", RuntimeTypes.Core.BusinessMetrics.AccountIdBasedEndpointAccountId) } - if (hasServiceEndpointOverride) { - writer.write("#T to true", RuntimeTypes.Core.BusinessMetrics.ServiceEndpointOverride) + if (hasEndpointOverride) { + writer.write("#T to true", RuntimeTypes.Core.BusinessMetrics.EndpointOverride) } } } diff --git a/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderTestGenerator.kt b/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderTestGenerator.kt index 9bc0f675e..f52b73c0f 100644 --- a/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderTestGenerator.kt +++ b/codegen/smithy-kotlin-codegen/src/main/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderTestGenerator.kt @@ -70,7 +70,7 @@ class DefaultEndpointProviderTestGenerator( writer.withBlock( "if (actual.attributes.contains(#T) || actual.attributes.contains(#T)) {", "} else { assertEquals(expected, actual) }", - RuntimeTypes.Core.BusinessMetrics.ServiceEndpointOverride, + RuntimeTypes.Core.BusinessMetrics.EndpointOverride, RuntimeTypes.Core.BusinessMetrics.AccountIdBasedEndpointAccountId, ) { writer.write( @@ -79,7 +79,7 @@ class DefaultEndpointProviderTestGenerator( ) writer.write( "newActualAttributes.remove(#T)", - RuntimeTypes.Core.BusinessMetrics.ServiceEndpointOverride, + RuntimeTypes.Core.BusinessMetrics.EndpointOverride, ) writer.write( "newActualAttributes.remove(#T)", diff --git a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt index 43f064bf0..deca15bec 100644 --- a/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt +++ b/runtime/runtime-core/common/src/aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtils.kt @@ -25,7 +25,7 @@ public val AccountIdBasedEndpointAccountId: AttributeKey = AttributeKey( * If an endpoint is "service endpoint override" based */ @InternalApi -public val ServiceEndpointOverride: AttributeKey = AttributeKey("aws.smithy.kotlin#ServiceEndpointOverride") +public val EndpointOverride: AttributeKey = AttributeKey("aws.smithy.kotlin#EndpointOverride") /** * Emit a business metric to the execution context attributes @@ -76,5 +76,9 @@ public enum class SmithyBusinessMetric(public override val identifier: String) : PROTOCOL_RPC_V2_CBOR("M"), ENDPOINT_OVERRIDE("N"), ACCOUNT_ID_ENDPOINT("O"), + ACCOUNT_ID_MODE_PREFERRED("P"), // TODO: Emit this metric + ACCOUNT_ID_MODE_DISABLED("Q"), // TODO: Emit this metric + ACCOUNT_ID_MODE_REQUIRED("R"), // TODO: Emit this metric SIGV4A_SIGNING("S"), + RESOLVED_ACCOUNT_ID("T"), // TODO: Emit this metric } From 18bd5e30d13a66abaf7deb50829f362a3b993ff3 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 17 Jul 2024 10:41:32 -0400 Subject: [PATCH 3/4] fix: update broken test --- .../endpoints/DefaultEndpointProviderGeneratorTest.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-kotlin-codegen/src/test/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGeneratorTest.kt b/codegen/smithy-kotlin-codegen/src/test/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGeneratorTest.kt index 303467be8..512e708a2 100644 --- a/codegen/smithy-kotlin-codegen/src/test/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGeneratorTest.kt +++ b/codegen/smithy-kotlin-codegen/src/test/kotlin/software/amazon/smithy/kotlin/codegen/rendering/endpoints/DefaultEndpointProviderGeneratorTest.kt @@ -285,7 +285,7 @@ class DefaultEndpointProviderGeneratorTest { Url.parse("https://$moneySign{params.accountId}.$moneySign{params.endpoint}"), attributes = attributesOf { AccountIdBasedEndpointAccountId to params.accountId - ServiceEndpointOverride to true + EndpointOverride to true }, ) """ @@ -303,7 +303,7 @@ class DefaultEndpointProviderGeneratorTest { return Endpoint( Url.parse("https://$moneySign{params.endpoint}"), attributes = attributesOf { - ServiceEndpointOverride to true + EndpointOverride to true }, ) """ From b93219f60c10620adce5693bbc871cf6d113a314 Mon Sep 17 00:00:00 2001 From: 0marperez Date: Wed, 17 Jul 2024 10:41:51 -0400 Subject: [PATCH 4/4] misc: api dump --- runtime/runtime-core/api/runtime-core.api | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/runtime/runtime-core/api/runtime-core.api b/runtime/runtime-core/api/runtime-core.api index 6654a97d5..f9773001d 100644 --- a/runtime/runtime-core/api/runtime-core.api +++ b/runtime/runtime-core/api/runtime-core.api @@ -86,16 +86,20 @@ public final class aws/smithy/kotlin/runtime/businessmetrics/BusinessMetricsUtil public static final fun emitBusinessMetric (Laws/smithy/kotlin/runtime/operation/ExecutionContext;Laws/smithy/kotlin/runtime/businessmetrics/BusinessMetric;)V public static final fun getAccountIdBasedEndpointAccountId ()Laws/smithy/kotlin/runtime/collections/AttributeKey; public static final fun getBusinessMetrics ()Laws/smithy/kotlin/runtime/collections/AttributeKey; - public static final fun getServiceEndpointOverride ()Laws/smithy/kotlin/runtime/collections/AttributeKey; + public static final fun getEndpointOverride ()Laws/smithy/kotlin/runtime/collections/AttributeKey; public static final fun removeBusinessMetric (Laws/smithy/kotlin/runtime/operation/ExecutionContext;Laws/smithy/kotlin/runtime/businessmetrics/BusinessMetric;)V } public final class aws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric : java/lang/Enum, aws/smithy/kotlin/runtime/businessmetrics/BusinessMetric { public static final field ACCOUNT_ID_ENDPOINT Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; + public static final field ACCOUNT_ID_MODE_DISABLED Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; + public static final field ACCOUNT_ID_MODE_PREFERRED Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; + public static final field ACCOUNT_ID_MODE_REQUIRED Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field ENDPOINT_OVERRIDE Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field GZIP_REQUEST_COMPRESSION Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field PAGINATOR Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field PROTOCOL_RPC_V2_CBOR Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; + public static final field RESOLVED_ACCOUNT_ID Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field RETRY_MODE_ADAPTIVE Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field RETRY_MODE_STANDARD Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric; public static final field SIGV4A_SIGNING Laws/smithy/kotlin/runtime/businessmetrics/SmithyBusinessMetric;