@@ -14,14 +14,13 @@ import com.intellij.openapi.project.Project
1414import com.intellij.util.xmlb.annotations.MapAnnotation
1515import com.intellij.util.xmlb.annotations.Property
1616import software.amazon.awssdk.core.SdkClient
17- import software.amazon.awssdk.services.codewhispererruntime.CodeWhispererRuntimeClient
1817import software.aws.toolkits.core.TokenConnectionSettings
1918import software.aws.toolkits.core.utils.debug
2019import software.aws.toolkits.core.utils.getLogger
2120import software.aws.toolkits.core.utils.tryOrNull
2221import software.aws.toolkits.core.utils.warn
2322import software.aws.toolkits.jetbrains.core.AwsClientManager
24- import software.aws.toolkits.jetbrains.core.awsClient
23+ import software.aws.toolkits.jetbrains.core.AwsResourceCache
2524import software.aws.toolkits.jetbrains.core.credentials.AwsBearerTokenConnection
2625import software.aws.toolkits.jetbrains.core.credentials.ToolkitConnectionManager
2726import software.aws.toolkits.jetbrains.core.credentials.pinning.QConnection
@@ -31,6 +30,7 @@ import software.aws.toolkits.jetbrains.utils.notifyInfo
3130import software.aws.toolkits.resources.AmazonQBundle.message
3231import software.aws.toolkits.telemetry.MetricResult
3332import software.aws.toolkits.telemetry.Telemetry
33+ import java.time.Duration
3434import java.util.Collections
3535import kotlin.reflect.KClass
3636
@@ -66,16 +66,14 @@ class QRegionProfileManager : PersistentStateComponent<QProfileState>, Disposabl
6666 fun listRegionProfiles (project : Project ): List <QRegionProfile >? {
6767 val connection = getIdcConnectionOrNull(project) ? : return null
6868 return try {
69- val mappedProfiles = QEndpoints .listRegionEndpoints()
70- .flatMap { (regionKey, _) ->
71- val awsRegion = AwsRegionProvider .getInstance()[regionKey] ? : return @flatMap emptyList()
72- connection.getConnectionSettings()
73- .withRegion(awsRegion)
74- .awsClient<CodeWhispererRuntimeClient >()
75- .listAvailableProfilesPaginator {}
76- .profiles()
77- .map { p -> QRegionProfile (arn = p.arn(), profileName = p.profileName()? : " <no name>" ) }
78- }
69+ val connectionSettings = connection.getConnectionSettings()
70+ val mappedProfiles = AwsResourceCache .getInstance().getResourceNow(
71+ resource = QProfileResources .LIST_REGION_PROFILES ,
72+ connectionSettings = connectionSettings,
73+ timeout = Duration .ofSeconds(30 ),
74+ useStale = true ,
75+ forceFetch = false
76+ )
7977 if (mappedProfiles.size == 1 ) {
8078 switchProfile(project, mappedProfiles.first(), intent = QProfileSwitchIntent .Update )
8179 }
0 commit comments