3
3
4
4
package software.aws.toolkits.jetbrains.services.amazonq.profile
5
5
6
+ import software.amazon.awssdk.awscore.exception.AwsServiceException
6
7
import software.amazon.awssdk.services.codewhispererruntime.CodeWhispererRuntimeClient
7
8
import 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
8
12
import software.aws.toolkits.jetbrains.core.AwsClientManager
9
13
import software.aws.toolkits.jetbrains.core.Resource
10
14
import software.aws.toolkits.jetbrains.core.region.AwsRegionProvider
@@ -25,15 +29,31 @@ object QProfileResources {
25
29
val awsRegion = AwsRegionProvider .getInstance()[regionKey] ? : return @flatMap emptyList()
26
30
val client = AwsClientManager
27
31
.getInstance()
28
- .getClient( CodeWhispererRuntimeClient :: class , connectionSettings.withRegion(awsRegion))
32
+ .getClient< CodeWhispererRuntimeClient >( connectionSettings.withRegion(awsRegion))
29
33
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
+ }
33
51
}
34
52
return mappedProfiles
35
53
}
36
54
37
55
override fun expiry (): Duration = Duration .ofSeconds(60 )
38
56
}
57
+
58
+ private val LOG = getLogger<QProfileResources >()
39
59
}
0 commit comments