6
6
7
7
import { DownloadUrlRequest , DownloadUrlResponse , UploadUrlRequest , UploadUrlResponse } from '@gitpod/content-service/lib/blobs_pb' ;
8
8
import { AppInstallationDB , UserDB , UserMessageViewsDB , WorkspaceDB , DBWithTracing , TracedWorkspaceDB , DBGitpodToken , DBUser , UserStorageResourcesDB , TeamDB } from '@gitpod/gitpod-db/lib' ;
9
- import { AuthProviderEntry , AuthProviderInfo , Branding , CommitContext , Configuration , CreateWorkspaceMode , DisposableCollection , GetWorkspaceTimeoutResult , GitpodClient as GitpodApiClient , GitpodServer , GitpodToken , GitpodTokenType , InstallPluginsParams , PermissionName , PortVisibility , PrebuiltWorkspace , PrebuiltWorkspaceContext , PreparePluginUploadParams , ResolvedPlugins , ResolvePluginsParams , SetWorkspaceTimeoutResult , StartPrebuildContext , StartWorkspaceResult , Terms , Token , UninstallPluginParams , User , UserEnvVar , UserEnvVarValue , UserInfo , WhitelistedRepository , Workspace , WorkspaceContext , WorkspaceCreationResult , WorkspaceImageBuild , WorkspaceInfo , WorkspaceInstance , WorkspaceInstancePort , WorkspaceInstanceUser , WorkspaceTimeoutDuration , GuessGitTokenScopesParams , GuessedGitTokenScopes , Team , TeamMemberInfo , TeamMembershipInvite , CreateProjectParams , Project , ProviderRepository , TeamMemberRole , WithDefaultConfig , FindPrebuildsParams , PrebuildWithStatus , StartPrebuildResult , ClientHeaderFields , WorkspaceClusterPreference } from '@gitpod/gitpod-protocol' ;
9
+ import { AuthProviderEntry , AuthProviderInfo , Branding , CommitContext , Configuration , CreateWorkspaceMode , DisposableCollection , GetWorkspaceTimeoutResult , GitpodClient as GitpodApiClient , GitpodServer , GitpodToken , GitpodTokenType , InstallPluginsParams , PermissionName , PortVisibility , PrebuiltWorkspace , PrebuiltWorkspaceContext , PreparePluginUploadParams , ResolvedPlugins , ResolvePluginsParams , SetWorkspaceTimeoutResult , StartPrebuildContext , StartWorkspaceResult , Terms , Token , UninstallPluginParams , User , UserEnvVar , UserEnvVarValue , UserInfo , WhitelistedRepository , Workspace , WorkspaceContext , WorkspaceCreationResult , WorkspaceImageBuild , WorkspaceInfo , WorkspaceInstance , WorkspaceInstancePort , WorkspaceInstanceUser , WorkspaceTimeoutDuration , GuessGitTokenScopesParams , GuessedGitTokenScopes , Team , TeamMemberInfo , TeamMembershipInvite , CreateProjectParams , Project , ProviderRepository , TeamMemberRole , WithDefaultConfig , FindPrebuildsParams , PrebuildWithStatus , StartPrebuildResult , ClientHeaderFields , WorkspaceClusterPreference , WorkspaceClusterRTTEndpoints } from '@gitpod/gitpod-protocol' ;
10
10
import { AccountStatement } from "@gitpod/gitpod-protocol/lib/accounting-protocol" ;
11
11
import { AdminBlockUserRequest , AdminGetListRequest , AdminGetListResult , AdminGetWorkspacesRequest , AdminModifyPermanentWorkspaceFeatureFlagRequest , AdminModifyRoleOrPermissionRequest , WorkspaceAndInstance } from '@gitpod/gitpod-protocol/lib/admin-protocol' ;
12
12
import { GetLicenseInfoResult , LicenseFeature , LicenseValidationResult } from '@gitpod/gitpod-protocol/lib/license-protocol' ;
@@ -2185,7 +2185,9 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2185
2185
return ideConfig . ideOptions ;
2186
2186
}
2187
2187
2188
- async listWorkspaceClusterRTTEndpoints ( ctx : TraceContext ) : Promise < { region : string ; endpoint : string ; } [ ] > {
2188
+ async listWorkspaceClusterRTTEndpoints ( ctx : TraceContext ) : Promise < WorkspaceClusterRTTEndpoints > {
2189
+ const user = this . checkUser ( "listWorkspaceClusterRTTEndpoints" ) ;
2190
+
2189
2191
const candidates = await this . workspaceClusterDB . findFiltered ( { state : 'available' } ) ;
2190
2192
const allEndpoints = candidates . flatMap ( c => ( c . admissionPreferences || [ ] ) . filter ( ap => ap . type === 'region' ) ) . map ( ap => {
2191
2193
const rap = ap as AdmissionPreferenceRegion ;
@@ -2195,7 +2197,10 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2195
2197
} ;
2196
2198
} ) ;
2197
2199
2198
- return [ ...new Set ( allEndpoints ) ] ;
2200
+ return {
2201
+ lastMeasurement : user . additionalData ?. clusterPreferences ?. lrm ,
2202
+ candidates : [ ...new Set ( allEndpoints ) ]
2203
+ } ;
2199
2204
}
2200
2205
2201
2206
async setWorkspaceClusterPreferences ( ctx : TraceContext , pref : WorkspaceClusterPreference ) : Promise < void > {
@@ -2206,6 +2211,7 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
2206
2211
2207
2212
// don't just dump `pref` in here, we have no idea what it contains.
2208
2213
clusterPref . region = pref . region ;
2214
+ clusterPref . lrm = new Date ( ) . toISOString ( ) ;
2209
2215
2210
2216
data . clusterPreferences = clusterPref ;
2211
2217
user . additionalData = data ;
0 commit comments