33
44package software.aws.toolkits.jetbrains.services.amazonq.profile
55
6+ import software.amazon.awssdk.awscore.exception.AwsServiceException
67import software.amazon.awssdk.services.codewhispererruntime.CodeWhispererRuntimeClient
78import software.aws.toolkits.core.ClientConnectionSettings
9+ import software.aws.toolkits.core.utils.debug
10+ import software.aws.toolkits.core.utils.getLogger
11+ import software.aws.toolkits.core.utils.warn
812import software.aws.toolkits.jetbrains.core.AwsClientManager
913import software.aws.toolkits.jetbrains.core.Resource
1014import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider
@@ -25,15 +29,31 @@ object QProfileResources {
2529 val awsRegion = AwsRegionProvider .getInstance()[regionKey] ? : return @flatMap emptyList()
2630 val client = AwsClientManager
2731 .getInstance()
28- .getClient( CodeWhispererRuntimeClient :: class , connectionSettings.withRegion(awsRegion))
32+ .getClient< CodeWhispererRuntimeClient >( connectionSettings.withRegion(awsRegion))
2933
30- client.listAvailableProfilesPaginator {}
31- .profiles()
32- .map { p -> QRegionProfile (arn = p.arn(), profileName = p.profileName() ? : " <no name>" ) }
34+ try {
35+ val profiles = client.listAvailableProfilesPaginator {}
36+ .profiles()
37+ .map { p -> QRegionProfile (arn = p.arn(), profileName = p.profileName() ? : " <no name>" ) }
38+ LOG .debug { " Found profiles for region $regionKey : $profiles " }
39+
40+ profiles
41+ } catch (e: Exception ) {
42+ LOG .warn(e) { " Failed to list Q profiles for region $regionKey " }
43+
44+ // service has low TPS so only suppress if not a service error
45+ if (e is AwsServiceException ) {
46+ throw e
47+ }
48+
49+ emptyList()
50+ }
3351 }
3452 return mappedProfiles
3553 }
3654
3755 override fun expiry (): Duration = Duration .ofSeconds(60 )
3856 }
57+
58+ private val LOG = getLogger<QProfileResources >()
3959}
0 commit comments