From 401053b6b75f7316b4eb46e3e5b2559cb15511d5 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 00:12:18 +0000 Subject: [PATCH 01/14] chore(codegen): add basic AddEndpointDiscoveryPlugin --- .../codegen/AddEndpointDiscoveryPlugin.java | 50 +++++++++++++++++++ .../aws/typescript/codegen/AwsDependency.java | 3 +- ....codegen.integration.TypeScriptIntegration | 3 +- 3 files changed, 54 insertions(+), 2 deletions(-) create mode 100644 codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java new file mode 100644 index 000000000000..578f7899dc1d --- /dev/null +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -0,0 +1,50 @@ +/* + * Copyright 2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.smithy.aws.typescript.codegen; + +import java.util.List; + +import software.amazon.smithy.model.Model; +import software.amazon.smithy.model.shapes.ServiceShape; +import software.amazon.smithy.typescript.codegen.TypeScriptDependency; +import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin; +import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration; +import software.amazon.smithy.utils.ListUtils; +import software.amazon.smithy.utils.SmithyInternalApi; + +/** + * Adds runtime plugins which handle endpoint discovery logic. + */ +@SmithyInternalApi +public class AddEndpointDiscoveryPlugin implements TypeScriptIntegration { + @Override + public List getClientPlugins() { + return ListUtils.of( + RuntimeClientPlugin.builder() + .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, + "EndpointDiscovery", RuntimeClientPlugin.Convention.HAS_CONFIG) + .servicePredicate(AddEndpointDiscoveryPlugin::hasClientEndpointDiscovery) + .build() + ); + } + + private static boolean hasClientEndpointDiscovery( + Model model, + ServiceShape service + ) { + return true; + } +} diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java index a6b9000bd1d6..d358c4ed01b1 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AwsDependency.java @@ -67,7 +67,8 @@ public enum AwsDependency implements SymbolDependencyContainer { MIDDLEWARE_LOGGER(NORMAL_DEPENDENCY, "@aws-sdk/middleware-logger", "3.15.0"), MIDDLEWARE_USER_AGENT("dependencies", "@aws-sdk/middleware-user-agent", "3.15.0"), AWS_SDK_UTIL_USER_AGENT_BROWSER(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-browser", "3.15.0"), - AWS_SDK_UTIL_USER_AGENT_NODE(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-node", "3.15.0"); + AWS_SDK_UTIL_USER_AGENT_NODE(NORMAL_DEPENDENCY, "@aws-sdk/util-user-agent-node", "3.15.0"), + MIDDLEWARE_ENDPOINT_DISCOVERY(NORMAL_DEPENDENCY, "@aws-sdk/middleware-endpoint-discovery", "3.0.0"); public final String packageName; public final String version; diff --git a/codegen/smithy-aws-typescript-codegen/src/main/resources/META-INF/services/software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration b/codegen/smithy-aws-typescript-codegen/src/main/resources/META-INF/services/software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration index 697fc3bcf98d..5f007e313a05 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/resources/META-INF/services/software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration +++ b/codegen/smithy-aws-typescript-codegen/src/main/resources/META-INF/services/software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration @@ -17,4 +17,5 @@ software.amazon.smithy.aws.typescript.codegen.AddUserAgentDependency software.amazon.smithy.aws.typescript.codegen.AddOmitRetryHeadersDependency software.amazon.smithy.aws.typescript.codegen.StripNewEnumNames software.amazon.smithy.aws.typescript.codegen.AddCrossRegionCopyingPlugin -software.amazon.smithy.aws.typescript.codegen.AddDocumentClientPlugin \ No newline at end of file +software.amazon.smithy.aws.typescript.codegen.AddDocumentClientPlugin +software.amazon.smithy.aws.typescript.codegen.AddEndpointDiscoveryPlugin \ No newline at end of file From 756086b53b59c6224d551d43b349c000f95f0936 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 00:23:16 +0000 Subject: [PATCH 02/14] chore(codegen): hasClientEndpointDiscovery if ClientEndpointDiscoveryTrait is present --- .../aws/typescript/codegen/AddEndpointDiscoveryPlugin.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 578f7899dc1d..c814ecf320bd 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -17,6 +17,7 @@ import java.util.List; +import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientEndpointDiscoveryTrait; import software.amazon.smithy.model.Model; import software.amazon.smithy.model.shapes.ServiceShape; import software.amazon.smithy.typescript.codegen.TypeScriptDependency; @@ -45,6 +46,9 @@ private static boolean hasClientEndpointDiscovery( Model model, ServiceShape service ) { - return true; + if(service.getTrait(ClientEndpointDiscoveryTrait.class).isPresent()) { + return true; + } + return false; } } From 8a3f2f39977089bcf6e529994db7ce44b3748df2 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 00:26:31 +0000 Subject: [PATCH 03/14] feat(clients): call resolveEndpointDiscoveryConfig if clientEndpointDiscovery trait is set --- clients/client-dynamodb/DynamoDBClient.ts | 16 ++++++++++++---- clients/client-dynamodb/package.json | 1 + .../TimestreamQueryClient.ts | 16 ++++++++++++---- clients/client-timestream-query/package.json | 1 + .../TimestreamWriteClient.ts | 16 ++++++++++++---- clients/client-timestream-write/package.json | 1 + 6 files changed, 39 insertions(+), 12 deletions(-) diff --git a/clients/client-dynamodb/DynamoDBClient.ts b/clients/client-dynamodb/DynamoDBClient.ts index fbe09183e539..f1f8211b52dd 100644 --- a/clients/client-dynamodb/DynamoDBClient.ts +++ b/clients/client-dynamodb/DynamoDBClient.ts @@ -109,6 +109,11 @@ import { resolveRegionConfig, } from "@aws-sdk/config-resolver"; import { getContentLengthPlugin } from "@aws-sdk/middleware-content-length"; +import { + EndpointDiscoveryInputConfig, + EndpointDiscoveryResolvedConfig, + resolveEndpointDiscoveryConfig, +} from "@aws-sdk/middleware-endpoint-discovery"; import { HostHeaderInputConfig, HostHeaderResolvedConfig, @@ -368,7 +373,8 @@ type DynamoDBClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptio RetryInputConfig & HostHeaderInputConfig & AwsAuthInputConfig & - UserAgentInputConfig; + UserAgentInputConfig & + EndpointDiscoveryInputConfig; /** * The configuration interface of DynamoDBClient class constructor that set the region, credentials and other options. */ @@ -381,7 +387,8 @@ type DynamoDBClientResolvedConfigType = __SmithyResolvedConfiguration<__HttpHand RetryResolvedConfig & HostHeaderResolvedConfig & AwsAuthResolvedConfig & - UserAgentResolvedConfig; + UserAgentResolvedConfig & + EndpointDiscoveryResolvedConfig; /** * The resolved configuration interface of DynamoDBClient class. This is resolved and normalized from the {@link DynamoDBClientConfig | constructor configuration interface}. */ @@ -430,8 +437,9 @@ export class DynamoDBClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - super(_config_6); - this.config = _config_6; + let _config_7 = resolveEndpointDiscoveryConfig(_config_6); + super(_config_7); + this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); this.middlewareStack.use(getContentLengthPlugin(this.config)); this.middlewareStack.use(getHostHeaderPlugin(this.config)); diff --git a/clients/client-dynamodb/package.json b/clients/client-dynamodb/package.json index d751831d8f38..cc6c45f2380b 100644 --- a/clients/client-dynamodb/package.json +++ b/clients/client-dynamodb/package.json @@ -34,6 +34,7 @@ "@aws-sdk/hash-node": "3.15.0", "@aws-sdk/invalid-dependency": "3.15.0", "@aws-sdk/middleware-content-length": "3.15.0", + "@aws-sdk/middleware-endpoint-discovery": "3.0.0", "@aws-sdk/middleware-host-header": "3.15.0", "@aws-sdk/middleware-logger": "3.15.0", "@aws-sdk/middleware-retry": "3.15.0", diff --git a/clients/client-timestream-query/TimestreamQueryClient.ts b/clients/client-timestream-query/TimestreamQueryClient.ts index 6a08a1156547..f8fbdcd086f7 100644 --- a/clients/client-timestream-query/TimestreamQueryClient.ts +++ b/clients/client-timestream-query/TimestreamQueryClient.ts @@ -11,6 +11,11 @@ import { resolveRegionConfig, } from "@aws-sdk/config-resolver"; import { getContentLengthPlugin } from "@aws-sdk/middleware-content-length"; +import { + EndpointDiscoveryInputConfig, + EndpointDiscoveryResolvedConfig, + resolveEndpointDiscoveryConfig, +} from "@aws-sdk/middleware-endpoint-discovery"; import { HostHeaderInputConfig, HostHeaderResolvedConfig, @@ -170,7 +175,8 @@ type TimestreamQueryClientConfigType = Partial<__SmithyConfiguration<__HttpHandl RetryInputConfig & HostHeaderInputConfig & AwsAuthInputConfig & - UserAgentInputConfig; + UserAgentInputConfig & + EndpointDiscoveryInputConfig; /** * The configuration interface of TimestreamQueryClient class constructor that set the region, credentials and other options. */ @@ -183,7 +189,8 @@ type TimestreamQueryClientResolvedConfigType = __SmithyResolvedConfiguration<__H RetryResolvedConfig & HostHeaderResolvedConfig & AwsAuthResolvedConfig & - UserAgentResolvedConfig; + UserAgentResolvedConfig & + EndpointDiscoveryResolvedConfig; /** * The resolved configuration interface of TimestreamQueryClient class. This is resolved and normalized from the {@link TimestreamQueryClientConfig | constructor configuration interface}. */ @@ -216,8 +223,9 @@ export class TimestreamQueryClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - super(_config_6); - this.config = _config_6; + let _config_7 = resolveEndpointDiscoveryConfig(_config_6); + super(_config_7); + this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); this.middlewareStack.use(getContentLengthPlugin(this.config)); this.middlewareStack.use(getHostHeaderPlugin(this.config)); diff --git a/clients/client-timestream-query/package.json b/clients/client-timestream-query/package.json index b8affb8d484e..4c3c6fd687b1 100644 --- a/clients/client-timestream-query/package.json +++ b/clients/client-timestream-query/package.json @@ -34,6 +34,7 @@ "@aws-sdk/hash-node": "3.15.0", "@aws-sdk/invalid-dependency": "3.15.0", "@aws-sdk/middleware-content-length": "3.15.0", + "@aws-sdk/middleware-endpoint-discovery": "3.0.0", "@aws-sdk/middleware-host-header": "3.15.0", "@aws-sdk/middleware-logger": "3.15.0", "@aws-sdk/middleware-retry": "3.15.0", diff --git a/clients/client-timestream-write/TimestreamWriteClient.ts b/clients/client-timestream-write/TimestreamWriteClient.ts index 2163a906db39..70625f3897d6 100644 --- a/clients/client-timestream-write/TimestreamWriteClient.ts +++ b/clients/client-timestream-write/TimestreamWriteClient.ts @@ -26,6 +26,11 @@ import { resolveRegionConfig, } from "@aws-sdk/config-resolver"; import { getContentLengthPlugin } from "@aws-sdk/middleware-content-length"; +import { + EndpointDiscoveryInputConfig, + EndpointDiscoveryResolvedConfig, + resolveEndpointDiscoveryConfig, +} from "@aws-sdk/middleware-endpoint-discovery"; import { HostHeaderInputConfig, HostHeaderResolvedConfig, @@ -215,7 +220,8 @@ type TimestreamWriteClientConfigType = Partial<__SmithyConfiguration<__HttpHandl RetryInputConfig & HostHeaderInputConfig & AwsAuthInputConfig & - UserAgentInputConfig; + UserAgentInputConfig & + EndpointDiscoveryInputConfig; /** * The configuration interface of TimestreamWriteClient class constructor that set the region, credentials and other options. */ @@ -228,7 +234,8 @@ type TimestreamWriteClientResolvedConfigType = __SmithyResolvedConfiguration<__H RetryResolvedConfig & HostHeaderResolvedConfig & AwsAuthResolvedConfig & - UserAgentResolvedConfig; + UserAgentResolvedConfig & + EndpointDiscoveryResolvedConfig; /** * The resolved configuration interface of TimestreamWriteClient class. This is resolved and normalized from the {@link TimestreamWriteClientConfig | constructor configuration interface}. */ @@ -259,8 +266,9 @@ export class TimestreamWriteClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - super(_config_6); - this.config = _config_6; + let _config_7 = resolveEndpointDiscoveryConfig(_config_6); + super(_config_7); + this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); this.middlewareStack.use(getContentLengthPlugin(this.config)); this.middlewareStack.use(getHostHeaderPlugin(this.config)); diff --git a/clients/client-timestream-write/package.json b/clients/client-timestream-write/package.json index a904e2355fdf..964050682885 100644 --- a/clients/client-timestream-write/package.json +++ b/clients/client-timestream-write/package.json @@ -34,6 +34,7 @@ "@aws-sdk/hash-node": "3.15.0", "@aws-sdk/invalid-dependency": "3.15.0", "@aws-sdk/middleware-content-length": "3.15.0", + "@aws-sdk/middleware-endpoint-discovery": "3.0.0", "@aws-sdk/middleware-host-header": "3.15.0", "@aws-sdk/middleware-logger": "3.15.0", "@aws-sdk/middleware-retry": "3.15.0", From 3e1c16cd40f7be917dd1861d39748cae2b41d84f Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 00:42:16 +0000 Subject: [PATCH 04/14] chore(codegen): add and populate config interface fields for endpoint discovery --- .../codegen/AddEndpointDiscoveryPlugin.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index c814ecf320bd..03da1d5a1ea1 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -15,15 +15,23 @@ package software.amazon.smithy.aws.typescript.codegen; +import java.util.Collections; import java.util.List; +import java.util.Map; +import java.util.function.Consumer; import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientEndpointDiscoveryTrait; +import software.amazon.smithy.codegen.core.SymbolProvider; import software.amazon.smithy.model.Model; import software.amazon.smithy.model.shapes.ServiceShape; +import software.amazon.smithy.typescript.codegen.LanguageTarget; import software.amazon.smithy.typescript.codegen.TypeScriptDependency; +import software.amazon.smithy.typescript.codegen.TypeScriptSettings; +import software.amazon.smithy.typescript.codegen.TypeScriptWriter; import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin; import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration; import software.amazon.smithy.utils.ListUtils; +import software.amazon.smithy.utils.MapUtils; import software.amazon.smithy.utils.SmithyInternalApi; /** @@ -31,6 +39,23 @@ */ @SmithyInternalApi public class AddEndpointDiscoveryPlugin implements TypeScriptIntegration { + + @Override + public void addConfigInterfaceFields( + TypeScriptSettings settings, + Model model, + SymbolProvider symbolProvider, + TypeScriptWriter writer + ) { + ServiceShape service = settings.getService(model); + if (hasClientEndpointDiscovery(model, service)) { + writer.addImport("Provider", "__Provider", TypeScriptDependency.AWS_SDK_TYPES.packageName); + writer.writeDocs("The provider which populates default for endpointDisvoveryEnabled configuration, if it's\n" + + "not passed during client creation.\n@internal") + .write("endpointDiscoveryEnabledProvider?: __Provider;\n"); + } + } + @Override public List getClientPlugins() { return ListUtils.of( @@ -42,6 +67,40 @@ public List getClientPlugins() { ); } + @Override + public Map> getRuntimeConfigWriters( + TypeScriptSettings settings, + Model model, + SymbolProvider symbolProvider, + LanguageTarget target + ) { + ServiceShape service = settings.getService(model); + if (!hasClientEndpointDiscovery(model, service)) { + return Collections.emptyMap(); + } + switch (target) { + case BROWSER: + return MapUtils.of( + "endpointDiscoveryEnabledProvider", writer -> { + writer.write("endpointDiscoveryEnabledProvider: () => Promise.resolve(undefined),"); + } + ); + case NODE: + return MapUtils.of( + "endpointDiscoveryEnabledProvider", writer -> { + writer.addDependency(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY); + writer.addImport("NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS", + "NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS", + AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.packageName); + writer.write("endpointDiscoveryEnabledProvider: loadNodeConfig(" + + "NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS),"); + } + ); + default: + return Collections.emptyMap(); + } + } + private static boolean hasClientEndpointDiscovery( Model model, ServiceShape service From cfca32a0f4eab613e2f7450f0a470a2a5d14e4be Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 00:43:25 +0000 Subject: [PATCH 05/14] feat(clients): add and populate config interface fields for endpoint discovery --- clients/client-dynamodb/DynamoDBClient.ts | 7 +++++++ clients/client-dynamodb/runtimeConfig.browser.ts | 1 + clients/client-dynamodb/runtimeConfig.ts | 2 ++ clients/client-timestream-query/TimestreamQueryClient.ts | 7 +++++++ clients/client-timestream-query/runtimeConfig.browser.ts | 1 + clients/client-timestream-query/runtimeConfig.ts | 2 ++ clients/client-timestream-write/TimestreamWriteClient.ts | 7 +++++++ clients/client-timestream-write/runtimeConfig.browser.ts | 1 + clients/client-timestream-write/runtimeConfig.ts | 2 ++ 9 files changed, 30 insertions(+) diff --git a/clients/client-dynamodb/DynamoDBClient.ts b/clients/client-dynamodb/DynamoDBClient.ts index f1f8211b52dd..c23fa7a59315 100644 --- a/clients/client-dynamodb/DynamoDBClient.ts +++ b/clients/client-dynamodb/DynamoDBClient.ts @@ -364,6 +364,13 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ * @internal */ defaultUserAgentProvider?: Provider<__UserAgent>; + + /** + * The provider which populates default for endpointDisvoveryEnabled configuration, if it's + * not passed during client creation. + * @internal + */ + endpointDiscoveryEnabledProvider?: __Provider; } type DynamoDBClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & diff --git a/clients/client-dynamodb/runtimeConfig.browser.ts b/clients/client-dynamodb/runtimeConfig.browser.ts index 44bdf9022581..1145c09be4f5 100644 --- a/clients/client-dynamodb/runtimeConfig.browser.ts +++ b/clients/client-dynamodb/runtimeConfig.browser.ts @@ -25,6 +25,7 @@ export const ClientDefaultValues: Required = { serviceId: ClientSharedValues.serviceId, clientVersion: packageInfo.version, }), + endpointDiscoveryEnabledProvider: () => Promise.resolve(undefined), maxAttempts: DEFAULT_MAX_ATTEMPTS, region: invalidProvider("Region is missing"), requestHandler: new FetchHttpHandler(), diff --git a/clients/client-dynamodb/runtimeConfig.ts b/clients/client-dynamodb/runtimeConfig.ts index 64123f8d7b02..c1bf3bbf9e1d 100644 --- a/clients/client-dynamodb/runtimeConfig.ts +++ b/clients/client-dynamodb/runtimeConfig.ts @@ -4,6 +4,7 @@ import { decorateDefaultCredentialProvider } from "@aws-sdk/client-sts"; import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@aws-sdk/config-resolver"; import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; import { Hash } from "@aws-sdk/hash-node"; +import { NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS } from "@aws-sdk/middleware-endpoint-discovery"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS } from "@aws-sdk/middleware-retry"; import { loadConfig as loadNodeConfig } from "@aws-sdk/node-config-provider"; import { NodeHttpHandler, streamCollector } from "@aws-sdk/node-http-handler"; @@ -28,6 +29,7 @@ export const ClientDefaultValues: Required = { serviceId: ClientSharedValues.serviceId, clientVersion: packageInfo.version, }), + endpointDiscoveryEnabledProvider: loadNodeConfig(NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS), maxAttempts: loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS), region: loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS), requestHandler: new NodeHttpHandler(), diff --git a/clients/client-timestream-query/TimestreamQueryClient.ts b/clients/client-timestream-query/TimestreamQueryClient.ts index f8fbdcd086f7..8b8aab23674e 100644 --- a/clients/client-timestream-query/TimestreamQueryClient.ts +++ b/clients/client-timestream-query/TimestreamQueryClient.ts @@ -166,6 +166,13 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ * @internal */ defaultUserAgentProvider?: Provider<__UserAgent>; + + /** + * The provider which populates default for endpointDisvoveryEnabled configuration, if it's + * not passed during client creation. + * @internal + */ + endpointDiscoveryEnabledProvider?: __Provider; } type TimestreamQueryClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & diff --git a/clients/client-timestream-query/runtimeConfig.browser.ts b/clients/client-timestream-query/runtimeConfig.browser.ts index 3fe09aa715c6..9206655b88e7 100644 --- a/clients/client-timestream-query/runtimeConfig.browser.ts +++ b/clients/client-timestream-query/runtimeConfig.browser.ts @@ -25,6 +25,7 @@ export const ClientDefaultValues: Required = { serviceId: ClientSharedValues.serviceId, clientVersion: packageInfo.version, }), + endpointDiscoveryEnabledProvider: () => Promise.resolve(undefined), maxAttempts: DEFAULT_MAX_ATTEMPTS, region: invalidProvider("Region is missing"), requestHandler: new FetchHttpHandler(), diff --git a/clients/client-timestream-query/runtimeConfig.ts b/clients/client-timestream-query/runtimeConfig.ts index 877cc2126251..6b8b3fead9a5 100644 --- a/clients/client-timestream-query/runtimeConfig.ts +++ b/clients/client-timestream-query/runtimeConfig.ts @@ -4,6 +4,7 @@ import { decorateDefaultCredentialProvider } from "@aws-sdk/client-sts"; import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@aws-sdk/config-resolver"; import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; import { Hash } from "@aws-sdk/hash-node"; +import { NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS } from "@aws-sdk/middleware-endpoint-discovery"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS } from "@aws-sdk/middleware-retry"; import { loadConfig as loadNodeConfig } from "@aws-sdk/node-config-provider"; import { NodeHttpHandler, streamCollector } from "@aws-sdk/node-http-handler"; @@ -28,6 +29,7 @@ export const ClientDefaultValues: Required = { serviceId: ClientSharedValues.serviceId, clientVersion: packageInfo.version, }), + endpointDiscoveryEnabledProvider: loadNodeConfig(NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS), maxAttempts: loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS), region: loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS), requestHandler: new NodeHttpHandler(), diff --git a/clients/client-timestream-write/TimestreamWriteClient.ts b/clients/client-timestream-write/TimestreamWriteClient.ts index 70625f3897d6..946137f51148 100644 --- a/clients/client-timestream-write/TimestreamWriteClient.ts +++ b/clients/client-timestream-write/TimestreamWriteClient.ts @@ -211,6 +211,13 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ * @internal */ defaultUserAgentProvider?: Provider<__UserAgent>; + + /** + * The provider which populates default for endpointDisvoveryEnabled configuration, if it's + * not passed during client creation. + * @internal + */ + endpointDiscoveryEnabledProvider?: __Provider; } type TimestreamWriteClientConfigType = Partial<__SmithyConfiguration<__HttpHandlerOptions>> & diff --git a/clients/client-timestream-write/runtimeConfig.browser.ts b/clients/client-timestream-write/runtimeConfig.browser.ts index c890b6da7a2c..029e196a5c96 100644 --- a/clients/client-timestream-write/runtimeConfig.browser.ts +++ b/clients/client-timestream-write/runtimeConfig.browser.ts @@ -25,6 +25,7 @@ export const ClientDefaultValues: Required = { serviceId: ClientSharedValues.serviceId, clientVersion: packageInfo.version, }), + endpointDiscoveryEnabledProvider: () => Promise.resolve(undefined), maxAttempts: DEFAULT_MAX_ATTEMPTS, region: invalidProvider("Region is missing"), requestHandler: new FetchHttpHandler(), diff --git a/clients/client-timestream-write/runtimeConfig.ts b/clients/client-timestream-write/runtimeConfig.ts index 21223a2c294d..88d3e1fdb78e 100644 --- a/clients/client-timestream-write/runtimeConfig.ts +++ b/clients/client-timestream-write/runtimeConfig.ts @@ -4,6 +4,7 @@ import { decorateDefaultCredentialProvider } from "@aws-sdk/client-sts"; import { NODE_REGION_CONFIG_FILE_OPTIONS, NODE_REGION_CONFIG_OPTIONS } from "@aws-sdk/config-resolver"; import { defaultProvider as credentialDefaultProvider } from "@aws-sdk/credential-provider-node"; import { Hash } from "@aws-sdk/hash-node"; +import { NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS } from "@aws-sdk/middleware-endpoint-discovery"; import { NODE_MAX_ATTEMPT_CONFIG_OPTIONS } from "@aws-sdk/middleware-retry"; import { loadConfig as loadNodeConfig } from "@aws-sdk/node-config-provider"; import { NodeHttpHandler, streamCollector } from "@aws-sdk/node-http-handler"; @@ -28,6 +29,7 @@ export const ClientDefaultValues: Required = { serviceId: ClientSharedValues.serviceId, clientVersion: packageInfo.version, }), + endpointDiscoveryEnabledProvider: loadNodeConfig(NODE_ENDPOINT_DISCOVERY_CONFIG_OPTIONS), maxAttempts: loadNodeConfig(NODE_MAX_ATTEMPT_CONFIG_OPTIONS), region: loadNodeConfig(NODE_REGION_CONFIG_OPTIONS, NODE_REGION_CONFIG_FILE_OPTIONS), requestHandler: new NodeHttpHandler(), From cf0e77375115ada60360240cc123015fbba0810e Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 04:07:25 +0000 Subject: [PATCH 06/14] chore(codegen): remove redundant model from hasClientEndpointDiscovery --- .../codegen/AddEndpointDiscoveryPlugin.java | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 03da1d5a1ea1..758df6068487 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -48,7 +48,7 @@ public void addConfigInterfaceFields( TypeScriptWriter writer ) { ServiceShape service = settings.getService(model); - if (hasClientEndpointDiscovery(model, service)) { + if (hasClientEndpointDiscovery(service)) { writer.addImport("Provider", "__Provider", TypeScriptDependency.AWS_SDK_TYPES.packageName); writer.writeDocs("The provider which populates default for endpointDisvoveryEnabled configuration, if it's\n" + "not passed during client creation.\n@internal") @@ -62,7 +62,7 @@ public List getClientPlugins() { RuntimeClientPlugin.builder() .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, "EndpointDiscovery", RuntimeClientPlugin.Convention.HAS_CONFIG) - .servicePredicate(AddEndpointDiscoveryPlugin::hasClientEndpointDiscovery) + .servicePredicate((m, s) -> hasClientEndpointDiscovery(s)) .build() ); } @@ -75,7 +75,7 @@ public Map> getRuntimeConfigWriters( LanguageTarget target ) { ServiceShape service = settings.getService(model); - if (!hasClientEndpointDiscovery(model, service)) { + if (!hasClientEndpointDiscovery(service)) { return Collections.emptyMap(); } switch (target) { @@ -101,10 +101,7 @@ public Map> getRuntimeConfigWriters( } } - private static boolean hasClientEndpointDiscovery( - Model model, - ServiceShape service - ) { + private static boolean hasClientEndpointDiscovery(ServiceShape service) { if(service.getTrait(ClientEndpointDiscoveryTrait.class).isPresent()) { return true; } From 4a42db9a25b06c70c2d0a2a7734ae21dcd128464 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 04:58:23 +0000 Subject: [PATCH 07/14] chore(codegen): add import for endpoint discovery command --- .../codegen/AddEndpointDiscoveryPlugin.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 758df6068487..0487ba4845ac 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -21,9 +21,12 @@ import java.util.function.Consumer; import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientEndpointDiscoveryTrait; +import software.amazon.smithy.codegen.core.CodegenException; import software.amazon.smithy.codegen.core.SymbolProvider; import software.amazon.smithy.model.Model; +import software.amazon.smithy.model.shapes.OperationShape; import software.amazon.smithy.model.shapes.ServiceShape; +import software.amazon.smithy.model.shapes.ShapeId; import software.amazon.smithy.typescript.codegen.LanguageTarget; import software.amazon.smithy.typescript.codegen.TypeScriptDependency; import software.amazon.smithy.typescript.codegen.TypeScriptSettings; @@ -49,6 +52,8 @@ public void addConfigInterfaceFields( ) { ServiceShape service = settings.getService(model); if (hasClientEndpointDiscovery(service)) { + // Add import for endpoint discovery command here, as getClientPlugins doesn't have access to writer. + addEndpointDiscoveryCommandImport(model, symbolProvider, service, writer); writer.addImport("Provider", "__Provider", TypeScriptDependency.AWS_SDK_TYPES.packageName); writer.writeDocs("The provider which populates default for endpointDisvoveryEnabled configuration, if it's\n" + "not passed during client creation.\n@internal") @@ -101,6 +106,22 @@ public Map> getRuntimeConfigWriters( } } + private void addEndpointDiscoveryCommandImport( + Model model, + SymbolProvider symbolProvider, + ServiceShape service, + TypeScriptWriter writer + ) { + if (!hasClientEndpointDiscovery(service)) { + throw new CodegenException( + "EndpointDiscovery command import called for service without endpoint discovery" + ); + } + ShapeId operationShapeId = service.getTrait(ClientEndpointDiscoveryTrait.class).orElse(null).getOperation(); + OperationShape operation = model.expectShape(operationShapeId, OperationShape.class); + writer.addUseImports(symbolProvider.toSymbol(operation)); + } + private static boolean hasClientEndpointDiscovery(ServiceShape service) { if(service.getTrait(ClientEndpointDiscoveryTrait.class).isPresent()) { return true; From 28c6552e0cb0c1e12d0f908ccb5a9e29f2098747 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 05:00:00 +0000 Subject: [PATCH 08/14] feat(clients): add import for endpoint discovery command --- clients/client-dynamodb/DynamoDBClient.ts | 6 +++++- clients/client-timestream-query/TimestreamQueryClient.ts | 6 +++++- clients/client-timestream-write/TimestreamWriteClient.ts | 6 +++++- 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/clients/client-dynamodb/DynamoDBClient.ts b/clients/client-dynamodb/DynamoDBClient.ts index c23fa7a59315..d69fea5718fe 100644 --- a/clients/client-dynamodb/DynamoDBClient.ts +++ b/clients/client-dynamodb/DynamoDBClient.ts @@ -19,7 +19,11 @@ import { DescribeContributorInsightsCommandInput, DescribeContributorInsightsCommandOutput, } from "./commands/DescribeContributorInsightsCommand"; -import { DescribeEndpointsCommandInput, DescribeEndpointsCommandOutput } from "./commands/DescribeEndpointsCommand"; +import { + DescribeEndpointsCommand, + DescribeEndpointsCommandInput, + DescribeEndpointsCommandOutput, +} from "./commands/DescribeEndpointsCommand"; import { DescribeExportCommandInput, DescribeExportCommandOutput } from "./commands/DescribeExportCommand"; import { DescribeGlobalTableCommandInput, diff --git a/clients/client-timestream-query/TimestreamQueryClient.ts b/clients/client-timestream-query/TimestreamQueryClient.ts index 8b8aab23674e..24779b94afb2 100644 --- a/clients/client-timestream-query/TimestreamQueryClient.ts +++ b/clients/client-timestream-query/TimestreamQueryClient.ts @@ -1,5 +1,9 @@ import { CancelQueryCommandInput, CancelQueryCommandOutput } from "./commands/CancelQueryCommand"; -import { DescribeEndpointsCommandInput, DescribeEndpointsCommandOutput } from "./commands/DescribeEndpointsCommand"; +import { + DescribeEndpointsCommand, + DescribeEndpointsCommandInput, + DescribeEndpointsCommandOutput, +} from "./commands/DescribeEndpointsCommand"; import { QueryCommandInput, QueryCommandOutput } from "./commands/QueryCommand"; import { ClientDefaultValues as __ClientDefaultValues } from "./runtimeConfig"; import { diff --git a/clients/client-timestream-write/TimestreamWriteClient.ts b/clients/client-timestream-write/TimestreamWriteClient.ts index 946137f51148..56e93409384a 100644 --- a/clients/client-timestream-write/TimestreamWriteClient.ts +++ b/clients/client-timestream-write/TimestreamWriteClient.ts @@ -3,7 +3,11 @@ import { CreateTableCommandInput, CreateTableCommandOutput } from "./commands/Cr import { DeleteDatabaseCommandInput, DeleteDatabaseCommandOutput } from "./commands/DeleteDatabaseCommand"; import { DeleteTableCommandInput, DeleteTableCommandOutput } from "./commands/DeleteTableCommand"; import { DescribeDatabaseCommandInput, DescribeDatabaseCommandOutput } from "./commands/DescribeDatabaseCommand"; -import { DescribeEndpointsCommandInput, DescribeEndpointsCommandOutput } from "./commands/DescribeEndpointsCommand"; +import { + DescribeEndpointsCommand, + DescribeEndpointsCommandInput, + DescribeEndpointsCommandOutput, +} from "./commands/DescribeEndpointsCommand"; import { DescribeTableCommandInput, DescribeTableCommandOutput } from "./commands/DescribeTableCommand"; import { ListDatabasesCommandInput, ListDatabasesCommandOutput } from "./commands/ListDatabasesCommand"; import { ListTablesCommandInput, ListTablesCommandOutput } from "./commands/ListTablesCommand"; From 89d015827caf5c60cf13d6f6dd5f85a29f19cdbb Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 05:38:47 +0000 Subject: [PATCH 09/14] chore(codegen): add DescribeEndpointsCommand in resolve function params --- .../aws/typescript/codegen/AddEndpointDiscoveryPlugin.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 0487ba4845ac..fcf1488e8f12 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -55,8 +55,8 @@ public void addConfigInterfaceFields( // Add import for endpoint discovery command here, as getClientPlugins doesn't have access to writer. addEndpointDiscoveryCommandImport(model, symbolProvider, service, writer); writer.addImport("Provider", "__Provider", TypeScriptDependency.AWS_SDK_TYPES.packageName); - writer.writeDocs("The provider which populates default for endpointDisvoveryEnabled configuration, if it's\n" - + "not passed during client creation.\n@internal") + writer.writeDocs("The provider which populates default for endpointDiscoveryEnabled configuration," + + " if it's\nnot passed during client creation.\n@internal") .write("endpointDiscoveryEnabledProvider?: __Provider;\n"); } } @@ -67,6 +67,8 @@ public List getClientPlugins() { RuntimeClientPlugin.builder() .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, "EndpointDiscovery", RuntimeClientPlugin.Convention.HAS_CONFIG) + // ToDo: The Endpoint Discovery Command Name needs to be read from ClientEndpointDiscoveryTrait. + .additionalResolveFunctionParameters("DescribeEndpointsCommand") .servicePredicate((m, s) -> hasClientEndpointDiscovery(s)) .build() ); From 2efb79226b5b6d20fba113bb959aefb4027ca3e1 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 05:40:31 +0000 Subject: [PATCH 10/14] feat(clients): add DescribeEndpointsCommand in resolve function params --- clients/client-dynamodb/DynamoDBClient.ts | 4 ++-- clients/client-timestream-query/TimestreamQueryClient.ts | 4 ++-- clients/client-timestream-write/TimestreamWriteClient.ts | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/clients/client-dynamodb/DynamoDBClient.ts b/clients/client-dynamodb/DynamoDBClient.ts index d69fea5718fe..ffd1feb57429 100644 --- a/clients/client-dynamodb/DynamoDBClient.ts +++ b/clients/client-dynamodb/DynamoDBClient.ts @@ -370,7 +370,7 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ defaultUserAgentProvider?: Provider<__UserAgent>; /** - * The provider which populates default for endpointDisvoveryEnabled configuration, if it's + * The provider which populates default for endpointDiscoveryEnabled configuration, if it's * not passed during client creation. * @internal */ @@ -448,7 +448,7 @@ export class DynamoDBClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - let _config_7 = resolveEndpointDiscoveryConfig(_config_6); + let _config_7 = resolveEndpointDiscoveryConfig(_config_6, DescribeEndpointsCommand); super(_config_7); this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); diff --git a/clients/client-timestream-query/TimestreamQueryClient.ts b/clients/client-timestream-query/TimestreamQueryClient.ts index 24779b94afb2..373810a5db7b 100644 --- a/clients/client-timestream-query/TimestreamQueryClient.ts +++ b/clients/client-timestream-query/TimestreamQueryClient.ts @@ -172,7 +172,7 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ defaultUserAgentProvider?: Provider<__UserAgent>; /** - * The provider which populates default for endpointDisvoveryEnabled configuration, if it's + * The provider which populates default for endpointDiscoveryEnabled configuration, if it's * not passed during client creation. * @internal */ @@ -234,7 +234,7 @@ export class TimestreamQueryClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - let _config_7 = resolveEndpointDiscoveryConfig(_config_6); + let _config_7 = resolveEndpointDiscoveryConfig(_config_6, DescribeEndpointsCommand); super(_config_7); this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); diff --git a/clients/client-timestream-write/TimestreamWriteClient.ts b/clients/client-timestream-write/TimestreamWriteClient.ts index 56e93409384a..1017dcc1f4a9 100644 --- a/clients/client-timestream-write/TimestreamWriteClient.ts +++ b/clients/client-timestream-write/TimestreamWriteClient.ts @@ -217,7 +217,7 @@ export interface ClientDefaults extends Partial<__SmithyResolvedConfiguration<__ defaultUserAgentProvider?: Provider<__UserAgent>; /** - * The provider which populates default for endpointDisvoveryEnabled configuration, if it's + * The provider which populates default for endpointDiscoveryEnabled configuration, if it's * not passed during client creation. * @internal */ @@ -277,7 +277,7 @@ export class TimestreamWriteClient extends __Client< let _config_4 = resolveHostHeaderConfig(_config_3); let _config_5 = resolveAwsAuthConfig(_config_4); let _config_6 = resolveUserAgentConfig(_config_5); - let _config_7 = resolveEndpointDiscoveryConfig(_config_6); + let _config_7 = resolveEndpointDiscoveryConfig(_config_6, DescribeEndpointsCommand); super(_config_7); this.config = _config_7; this.middlewareStack.use(getRetryPlugin(this.config)); From f37daaea6ba6fe06c0eb052e3377fbc4dfe87f12 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 13:21:33 +0000 Subject: [PATCH 11/14] chore(codegen): call getEndpointDiscovery*Plugin from commands --- .../codegen/AddEndpointDiscoveryPlugin.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index fcf1488e8f12..2f27a3dd71c1 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -20,6 +20,7 @@ import java.util.Map; import java.util.function.Consumer; +import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientDiscoveredEndpointTrait; import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientEndpointDiscoveryTrait; import software.amazon.smithy.codegen.core.CodegenException; import software.amazon.smithy.codegen.core.SymbolProvider; @@ -33,6 +34,7 @@ import software.amazon.smithy.typescript.codegen.TypeScriptWriter; import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin; import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration; +import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin.Convention; import software.amazon.smithy.utils.ListUtils; import software.amazon.smithy.utils.MapUtils; import software.amazon.smithy.utils.SmithyInternalApi; @@ -70,7 +72,22 @@ public List getClientPlugins() { // ToDo: The Endpoint Discovery Command Name needs to be read from ClientEndpointDiscoveryTrait. .additionalResolveFunctionParameters("DescribeEndpointsCommand") .servicePredicate((m, s) -> hasClientEndpointDiscovery(s)) + .build(), + // ToDo: The value ClientDiscoveredEndpointTrait.isRequired() needs to be passed to Plugin instead + // of creating two functions Required and Optional. The map of identifiers also needs to be passed. + RuntimeClientPlugin.builder() + .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, + "EndpointDiscoveryRequired", RuntimeClientPlugin.Convention.HAS_MIDDLEWARE) + .additionalResolveFunctionParameters(new String[]{"clientStack", "options"}) + .operationPredicate((m, s, o) -> isClientDiscoveredEndpointRequired(s, o)) + .build(), + RuntimeClientPlugin.builder() + .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, + "EndpointDiscoveryOptional", RuntimeClientPlugin.Convention.HAS_MIDDLEWARE) + .additionalResolveFunctionParameters(new String[]{"clientStack", "options"}) + .operationPredicate((m, s, o) -> isClientDiscoveredEndpointOptional(s, o)) .build() + ); } @@ -125,9 +142,23 @@ private void addEndpointDiscoveryCommandImport( } private static boolean hasClientEndpointDiscovery(ServiceShape service) { - if(service.getTrait(ClientEndpointDiscoveryTrait.class).isPresent()) { + if(service.hasTrait(ClientEndpointDiscoveryTrait.class)) { return true; } return false; } + + private static boolean isClientDiscoveredEndpointRequired(ServiceShape service, OperationShape operation) { + if (hasClientEndpointDiscovery(service) && operation.hasTrait(ClientDiscoveredEndpointTrait.class)) { + return operation.getTrait(ClientDiscoveredEndpointTrait.class).orElse(null).isRequired(); + } + return false; + } + + private static boolean isClientDiscoveredEndpointOptional(ServiceShape service, OperationShape operation) { + if (!hasClientEndpointDiscovery(service) && operation.hasTrait(ClientDiscoveredEndpointTrait.class)) { + return !operation.getTrait(ClientDiscoveredEndpointTrait.class).orElse(null).isRequired(); + } + return false; + } } From 72e2daf81d05bedfaf64df3becf8a64571e35717 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 13:22:17 +0000 Subject: [PATCH 12/14] feat(clients): call getEndpointDiscovery*Plugin from commands --- clients/client-timestream-query/commands/CancelQueryCommand.ts | 2 ++ clients/client-timestream-query/commands/QueryCommand.ts | 2 ++ .../client-timestream-write/commands/CreateDatabaseCommand.ts | 2 ++ clients/client-timestream-write/commands/CreateTableCommand.ts | 2 ++ .../client-timestream-write/commands/DeleteDatabaseCommand.ts | 2 ++ clients/client-timestream-write/commands/DeleteTableCommand.ts | 2 ++ .../client-timestream-write/commands/DescribeDatabaseCommand.ts | 2 ++ .../client-timestream-write/commands/DescribeTableCommand.ts | 2 ++ .../client-timestream-write/commands/ListDatabasesCommand.ts | 2 ++ clients/client-timestream-write/commands/ListTablesCommand.ts | 2 ++ .../commands/ListTagsForResourceCommand.ts | 2 ++ clients/client-timestream-write/commands/TagResourceCommand.ts | 2 ++ .../client-timestream-write/commands/UntagResourceCommand.ts | 2 ++ .../client-timestream-write/commands/UpdateDatabaseCommand.ts | 2 ++ clients/client-timestream-write/commands/UpdateTableCommand.ts | 2 ++ clients/client-timestream-write/commands/WriteRecordsCommand.ts | 2 ++ 16 files changed, 32 insertions(+) diff --git a/clients/client-timestream-query/commands/CancelQueryCommand.ts b/clients/client-timestream-query/commands/CancelQueryCommand.ts index db562730495b..d5ff79819262 100644 --- a/clients/client-timestream-query/commands/CancelQueryCommand.ts +++ b/clients/client-timestream-query/commands/CancelQueryCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0CancelQueryCommand, serializeAws_json1_0CancelQueryCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -64,6 +65,7 @@ export class CancelQueryCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-query/commands/QueryCommand.ts b/clients/client-timestream-query/commands/QueryCommand.ts index 484a5b1e88b9..77fa1f439c01 100644 --- a/clients/client-timestream-query/commands/QueryCommand.ts +++ b/clients/client-timestream-query/commands/QueryCommand.ts @@ -1,6 +1,7 @@ import { ServiceInputTypes, ServiceOutputTypes, TimestreamQueryClientResolvedConfig } from "../TimestreamQueryClient"; import { QueryRequest, QueryResponse } from "../models/models_0"; import { deserializeAws_json1_0QueryCommand, serializeAws_json1_0QueryCommand } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -55,6 +56,7 @@ export class QueryCommand extends $Command { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/CreateDatabaseCommand.ts b/clients/client-timestream-write/commands/CreateDatabaseCommand.ts index a4cec4f02f79..894ce21e3ac5 100644 --- a/clients/client-timestream-write/commands/CreateDatabaseCommand.ts +++ b/clients/client-timestream-write/commands/CreateDatabaseCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0CreateDatabaseCommand, serializeAws_json1_0CreateDatabaseCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -63,6 +64,7 @@ export class CreateDatabaseCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/CreateTableCommand.ts b/clients/client-timestream-write/commands/CreateTableCommand.ts index 0dbb388abfd4..4f64aeea3d39 100644 --- a/clients/client-timestream-write/commands/CreateTableCommand.ts +++ b/clients/client-timestream-write/commands/CreateTableCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0CreateTableCommand, serializeAws_json1_0CreateTableCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -67,6 +68,7 @@ export class CreateTableCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/DeleteDatabaseCommand.ts b/clients/client-timestream-write/commands/DeleteDatabaseCommand.ts index 89ee4b8276e4..0caafabf6bf6 100644 --- a/clients/client-timestream-write/commands/DeleteDatabaseCommand.ts +++ b/clients/client-timestream-write/commands/DeleteDatabaseCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0DeleteDatabaseCommand, serializeAws_json1_0DeleteDatabaseCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -68,6 +69,7 @@ export class DeleteDatabaseCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/DeleteTableCommand.ts b/clients/client-timestream-write/commands/DeleteTableCommand.ts index 5016520cebc3..d2bf1a3ed6b0 100644 --- a/clients/client-timestream-write/commands/DeleteTableCommand.ts +++ b/clients/client-timestream-write/commands/DeleteTableCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0DeleteTableCommand, serializeAws_json1_0DeleteTableCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -65,6 +66,7 @@ export class DeleteTableCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/DescribeDatabaseCommand.ts b/clients/client-timestream-write/commands/DescribeDatabaseCommand.ts index afb5662dd2d3..bb7f592fc190 100644 --- a/clients/client-timestream-write/commands/DescribeDatabaseCommand.ts +++ b/clients/client-timestream-write/commands/DescribeDatabaseCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0DescribeDatabaseCommand, serializeAws_json1_0DescribeDatabaseCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -62,6 +63,7 @@ export class DescribeDatabaseCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/DescribeTableCommand.ts b/clients/client-timestream-write/commands/DescribeTableCommand.ts index 2eaf61601646..b802ddba76a5 100644 --- a/clients/client-timestream-write/commands/DescribeTableCommand.ts +++ b/clients/client-timestream-write/commands/DescribeTableCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0DescribeTableCommand, serializeAws_json1_0DescribeTableCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -63,6 +64,7 @@ export class DescribeTableCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/ListDatabasesCommand.ts b/clients/client-timestream-write/commands/ListDatabasesCommand.ts index 4e66b5f8bb62..01c81d8a07c8 100644 --- a/clients/client-timestream-write/commands/ListDatabasesCommand.ts +++ b/clients/client-timestream-write/commands/ListDatabasesCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0ListDatabasesCommand, serializeAws_json1_0ListDatabasesCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -62,6 +63,7 @@ export class ListDatabasesCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/ListTablesCommand.ts b/clients/client-timestream-write/commands/ListTablesCommand.ts index fa6e2e2e148f..3e30ca501180 100644 --- a/clients/client-timestream-write/commands/ListTablesCommand.ts +++ b/clients/client-timestream-write/commands/ListTablesCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0ListTablesCommand, serializeAws_json1_0ListTablesCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -61,6 +62,7 @@ export class ListTablesCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/ListTagsForResourceCommand.ts b/clients/client-timestream-write/commands/ListTagsForResourceCommand.ts index 96b008f0a671..f8a153de5312 100644 --- a/clients/client-timestream-write/commands/ListTagsForResourceCommand.ts +++ b/clients/client-timestream-write/commands/ListTagsForResourceCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0ListTagsForResourceCommand, serializeAws_json1_0ListTagsForResourceCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -62,6 +63,7 @@ export class ListTagsForResourceCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/TagResourceCommand.ts b/clients/client-timestream-write/commands/TagResourceCommand.ts index d1f825816c4d..8492d03ba1fb 100644 --- a/clients/client-timestream-write/commands/TagResourceCommand.ts +++ b/clients/client-timestream-write/commands/TagResourceCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0TagResourceCommand, serializeAws_json1_0TagResourceCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -64,6 +65,7 @@ export class TagResourceCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/UntagResourceCommand.ts b/clients/client-timestream-write/commands/UntagResourceCommand.ts index 21456aeb3416..a63ca6cf02c0 100644 --- a/clients/client-timestream-write/commands/UntagResourceCommand.ts +++ b/clients/client-timestream-write/commands/UntagResourceCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0UntagResourceCommand, serializeAws_json1_0UntagResourceCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -62,6 +63,7 @@ export class UntagResourceCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/UpdateDatabaseCommand.ts b/clients/client-timestream-write/commands/UpdateDatabaseCommand.ts index 3d3bf19425ba..d426588cc146 100644 --- a/clients/client-timestream-write/commands/UpdateDatabaseCommand.ts +++ b/clients/client-timestream-write/commands/UpdateDatabaseCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0UpdateDatabaseCommand, serializeAws_json1_0UpdateDatabaseCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -64,6 +65,7 @@ export class UpdateDatabaseCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/UpdateTableCommand.ts b/clients/client-timestream-write/commands/UpdateTableCommand.ts index eead49e2b9ef..61e5f0fec030 100644 --- a/clients/client-timestream-write/commands/UpdateTableCommand.ts +++ b/clients/client-timestream-write/commands/UpdateTableCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0UpdateTableCommand, serializeAws_json1_0UpdateTableCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -66,6 +67,7 @@ export class UpdateTableCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); diff --git a/clients/client-timestream-write/commands/WriteRecordsCommand.ts b/clients/client-timestream-write/commands/WriteRecordsCommand.ts index 5e8a63632ca1..5474ccc8a6d8 100644 --- a/clients/client-timestream-write/commands/WriteRecordsCommand.ts +++ b/clients/client-timestream-write/commands/WriteRecordsCommand.ts @@ -4,6 +4,7 @@ import { deserializeAws_json1_0WriteRecordsCommand, serializeAws_json1_0WriteRecordsCommand, } from "../protocols/Aws_json1_0"; +import { getEndpointDiscoveryRequiredPlugin } from "@aws-sdk/middleware-endpoint-discovery"; import { getSerdePlugin } from "@aws-sdk/middleware-serde"; import { HttpRequest as __HttpRequest, HttpResponse as __HttpResponse } from "@aws-sdk/protocol-http"; import { Command as $Command } from "@aws-sdk/smithy-client"; @@ -73,6 +74,7 @@ export class WriteRecordsCommand extends $Command< options?: __HttpHandlerOptions ): Handler { this.middlewareStack.use(getSerdePlugin(configuration, this.serialize, this.deserialize)); + this.middlewareStack.use(getEndpointDiscoveryRequiredPlugin(configuration, { clientStack, options })); const stack = clientStack.concat(this.middlewareStack); From 82a4c546a55310dc1fc387a3ea4212e088492227 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 14:58:55 +0000 Subject: [PATCH 13/14] fix(codegen): pass parameters for plugin function --- .../aws/typescript/codegen/AddEndpointDiscoveryPlugin.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 2f27a3dd71c1..0d5cec5aa869 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -78,13 +78,13 @@ public List getClientPlugins() { RuntimeClientPlugin.builder() .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, "EndpointDiscoveryRequired", RuntimeClientPlugin.Convention.HAS_MIDDLEWARE) - .additionalResolveFunctionParameters(new String[]{"clientStack", "options"}) + .additionalPluginFunctionParameters(new String[]{"clientStack", "options"}) .operationPredicate((m, s, o) -> isClientDiscoveredEndpointRequired(s, o)) .build(), RuntimeClientPlugin.builder() .withConventions(AwsDependency.MIDDLEWARE_ENDPOINT_DISCOVERY.dependency, "EndpointDiscoveryOptional", RuntimeClientPlugin.Convention.HAS_MIDDLEWARE) - .additionalResolveFunctionParameters(new String[]{"clientStack", "options"}) + .additionalPluginFunctionParameters(new String[]{"clientStack", "options"}) .operationPredicate((m, s, o) -> isClientDiscoveredEndpointOptional(s, o)) .build() From b1231afed4c16ee9a1c35f28fd311dc21128af52 Mon Sep 17 00:00:00 2001 From: Trivikram Kamat <16024985+trivikr@users.noreply.github.com> Date: Thu, 13 May 2021 15:28:25 +0000 Subject: [PATCH 14/14] fix(codegen): checkstyle errors --- .../aws/typescript/codegen/AddEndpointDiscoveryPlugin.java | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java index 0d5cec5aa869..508594316260 100644 --- a/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java +++ b/codegen/smithy-aws-typescript-codegen/src/main/java/software/amazon/smithy/aws/typescript/codegen/AddEndpointDiscoveryPlugin.java @@ -19,7 +19,6 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; - import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientDiscoveredEndpointTrait; import software.amazon.smithy.aws.traits.clientendpointdiscovery.ClientEndpointDiscoveryTrait; import software.amazon.smithy.codegen.core.CodegenException; @@ -34,7 +33,6 @@ import software.amazon.smithy.typescript.codegen.TypeScriptWriter; import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin; import software.amazon.smithy.typescript.codegen.integration.TypeScriptIntegration; -import software.amazon.smithy.typescript.codegen.integration.RuntimeClientPlugin.Convention; import software.amazon.smithy.utils.ListUtils; import software.amazon.smithy.utils.MapUtils; import software.amazon.smithy.utils.SmithyInternalApi; @@ -44,7 +42,7 @@ */ @SmithyInternalApi public class AddEndpointDiscoveryPlugin implements TypeScriptIntegration { - + @Override public void addConfigInterfaceFields( TypeScriptSettings settings, @@ -87,7 +85,6 @@ public List getClientPlugins() { .additionalPluginFunctionParameters(new String[]{"clientStack", "options"}) .operationPredicate((m, s, o) -> isClientDiscoveredEndpointOptional(s, o)) .build() - ); } @@ -142,7 +139,7 @@ private void addEndpointDiscoveryCommandImport( } private static boolean hasClientEndpointDiscovery(ServiceShape service) { - if(service.hasTrait(ClientEndpointDiscoveryTrait.class)) { + if (service.hasTrait(ClientEndpointDiscoveryTrait.class)) { return true; } return false;