Commit 59fef456 authored by AWS SDK Rust Bot's avatar AWS SDK Rust Bot
Browse files

Merge remote-tracking branch "origin/smithy-rs-release-1.x.y" into...

Merge remote-tracking branch "origin/smithy-rs-release-1.x.y" into "merge-smithy-rs-release-1.x.y-to-main"
parents 1395e6f7 ab5e8b08
Loading
Loading
Loading
Loading
+2 −9
Original line number Diff line number Diff line
@@ -104,15 +104,8 @@ class RegionDecorator : ClientCodegenDecorator {
            adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section ->
                rust(
                    """
                    ${section.serviceConfigBuilder}.set_region(
                        ${section.sdkConfig}
                            .service_config()
                            .and_then(|conf| {
                                conf.load_config(service_config_key($envKey, $profileKey))
                                    .map(Region::new)
                            })
                            .or_else(|| ${section.sdkConfig}.region().cloned()),
                    );
                    ${section.serviceConfigBuilder} =
                         ${section.serviceConfigBuilder}.region(${section.sdkConfig}.region().cloned());
                    """,
                )
            }
+1 −13
Original line number Diff line number Diff line
@@ -20,8 +20,6 @@ import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocCustomizat
import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocSection
import software.amazon.smithy.rust.codegen.core.smithy.customize.adhocCustomization
import software.amazon.smithy.rust.codegen.core.smithy.customize.writeCustomizations
import software.amazon.smithy.rust.codegen.core.util.dq
import software.amazon.smithy.rust.codegen.core.util.toSnakeCase

sealed class SdkConfigSection(name: String) : AdHocSection(name) {
    /**
@@ -56,18 +54,8 @@ object SdkConfigCustomization {
        map: Writable?,
    ) = adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section ->
        val mapBlock = map?.let { writable { rust(".map(#W)", it) } } ?: writable { }
        val envKey = "AWS_${fieldName.toSnakeCase().uppercase()}".dq()
        val profileKey = fieldName.toSnakeCase().dq()

        rustTemplate(
            """
            ${section.serviceConfigBuilder}.set_$fieldName(
                ${section.sdkConfig}
                    .service_config()
                    .and_then(|conf| conf.load_config(service_config_key($envKey, $profileKey)).map(|it| it.parse().unwrap()))
                    .or_else(|| ${section.sdkConfig}.$fieldName()#{map})
            );
            """,
            "${section.serviceConfigBuilder}.set_$fieldName(${section.sdkConfig}.$fieldName()#{map});",
            "map" to mapBlock,
        )
    }
+0 −31
Original line number Diff line number Diff line
@@ -28,21 +28,17 @@ import software.amazon.smithy.rust.codegen.client.smithy.generators.OperationGen
import software.amazon.smithy.rust.codegen.client.smithy.generators.OperationSection
import software.amazon.smithy.rust.codegen.client.smithy.protocols.ClientRestXmlFactory
import software.amazon.smithy.rust.codegen.core.rustlang.Writable
import software.amazon.smithy.rust.codegen.core.rustlang.rust
import software.amazon.smithy.rust.codegen.core.rustlang.rustBlockTemplate
import software.amazon.smithy.rust.codegen.core.rustlang.rustTemplate
import software.amazon.smithy.rust.codegen.core.rustlang.writable
import software.amazon.smithy.rust.codegen.core.smithy.CodegenContext
import software.amazon.smithy.rust.codegen.core.smithy.RuntimeType
import software.amazon.smithy.rust.codegen.core.smithy.customize.AdHocCustomization
import software.amazon.smithy.rust.codegen.core.smithy.customize.adhocCustomization
import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolFunctions
import software.amazon.smithy.rust.codegen.core.smithy.protocols.ProtocolMap
import software.amazon.smithy.rust.codegen.core.smithy.protocols.RestXml
import software.amazon.smithy.rust.codegen.core.smithy.traits.AllowInvalidXmlRoot
import software.amazon.smithy.rust.codegen.core.util.hasTrait
import software.amazon.smithy.rust.codegen.core.util.letIf
import software.amazon.smithy.rustsdk.SdkConfigSection
import software.amazon.smithy.rustsdk.getBuiltIn
import software.amazon.smithy.rustsdk.toWritable
import java.util.logging.Logger
@@ -158,33 +154,6 @@ class S3Decorator : ClientCodegenDecorator {
            }
    }

    override fun extraSections(codegenContext: ClientCodegenContext): List<AdHocCustomization> {
        return listOf(
            adhocCustomization<SdkConfigSection.CopySdkConfigToClientConfig> { section ->
                rust(
                    """
                    ${section.serviceConfigBuilder}.set_disable_multi_region_access_points(
                        ${section.sdkConfig}
                            .service_config()
                            .and_then(|conf| {
                                let str_config = conf.load_config(service_config_key("AWS_S3_DISABLE_MULTIREGION_ACCESS_POINTS", "s3_disable_multi_region_access_points"));
                                str_config.and_then(|it| it.parse::<bool>().ok())
                            }),
                    );
                    ${section.serviceConfigBuilder}.set_use_arn_region(
                        ${section.sdkConfig}
                            .service_config()
                            .and_then(|conf| {
                                let str_config = conf.load_config(service_config_key("AWS_S3_USE_ARN_REGION", "s3_use_arn_region"));
                                str_config.and_then(|it| it.parse::<bool>().ok())
                            }),
                    );
                    """,
                )
            },
        )
    }

    private fun isInInvalidXmlRootAllowList(shape: Shape): Boolean {
        return shape.isStructureShape && invalidXmlRootAllowList.contains(shape.id)
    }
+0 −1
Original line number Diff line number Diff line
@@ -13,7 +13,6 @@ publish = false
[dependencies]
approx = "0.5.1"
aws-config = { path = "../../build/aws-sdk/sdk/aws-config" }
aws-runtime = { path = "../../build/aws-sdk/sdk/aws-runtime" }
aws-credential-types = { path = "../../build/aws-sdk/sdk/aws-credential-types", features = ["test-util"] }
aws-sdk-dynamodb = { path = "../../build/aws-sdk/sdk/dynamodb", features = ["behavior-version-latest"] }
aws-smithy-async = { path = "../../build/aws-sdk/sdk/aws-smithy-async", features = ["test-util"] }
+1 −45
Original line number Diff line number Diff line
@@ -3,13 +3,9 @@
 * SPDX-License-Identifier: Apache-2.0
 */

use aws_runtime::env_config::file::{EnvConfigFileKind, EnvConfigFiles};
use aws_sdk_dynamodb::config::{
    BehaviorVersion, Credentials, Region, StalledStreamProtectionConfig,
};
use aws_sdk_dynamodb::config::{Credentials, Region, StalledStreamProtectionConfig};
use aws_smithy_runtime::client::http::test_util::capture_request;
use http::Uri;
use std::env;

/// Iterative test of loading clients from shared configuration
#[tokio::test]
@@ -31,43 +27,3 @@ async fn shared_config_testbed() {
        &Uri::from_static("http://localhost:8000")
    );
}

#[tokio::test]
async fn service_config_from_profile() {
    let _ = tracing_subscriber::fmt::try_init();

    // Remove env vars that could interfere with the test
    env::remove_var("AWS_DEFAULT_REGION");
    env::remove_var("AWS_REGION");

    let config = r#"
[profile custom]
aws_access_key_id = test-access-key-id
aws_secret_access_key = test-secret-access-key
aws_session_token = test-session-token
region = us-east-1
services = custom

[services custom]
dynamodb =
  region = us-west-1
"#
    .trim();

    let shared_config = aws_config::ConfigLoader::default()
        .behavior_version(BehaviorVersion::latest())
        .profile_name("custom")
        .profile_files(
            EnvConfigFiles::builder()
                .with_contents(EnvConfigFileKind::Config, config)
                .build(),
        )
        .load()
        .await;
    let service_config = aws_sdk_dynamodb::Config::from(&shared_config);

    assert_eq!(
        service_config.region().unwrap(),
        &Region::from_static("us-west-1")
    );
}