66
77import { DownloadUrlRequest , DownloadUrlResponse , UploadUrlRequest , UploadUrlResponse } from '@gitpod/content-service/lib/blobs_pb' ;
88import { 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' ;
1010import { AccountStatement } from "@gitpod/gitpod-protocol/lib/accounting-protocol" ;
1111import { AdminBlockUserRequest , AdminGetListRequest , AdminGetListResult , AdminGetWorkspacesRequest , AdminModifyPermanentWorkspaceFeatureFlagRequest , AdminModifyRoleOrPermissionRequest , WorkspaceAndInstance } from '@gitpod/gitpod-protocol/lib/admin-protocol' ;
1212import { GetLicenseInfoResult , LicenseFeature , LicenseValidationResult } from '@gitpod/gitpod-protocol/lib/license-protocol' ;
@@ -2185,7 +2185,9 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
21852185 return ideConfig . ideOptions ;
21862186 }
21872187
2188- async listWorkspaceClusterRTTEndpoints ( ctx : TraceContext ) : Promise < { region : string ; endpoint : string ; } [ ] > {
2188+ async listWorkspaceClusterRTTEndpoints ( ctx : TraceContext ) : Promise < WorkspaceClusterRTTEndpoints > {
2189+ const user = this . checkUser ( "listWorkspaceClusterRTTEndpoints" ) ;
2190+
21892191 const candidates = await this . workspaceClusterDB . findFiltered ( { state : 'available' } ) ;
21902192 const allEndpoints = candidates . flatMap ( c => ( c . admissionPreferences || [ ] ) . filter ( ap => ap . type === 'region' ) ) . map ( ap => {
21912193 const rap = ap as AdmissionPreferenceRegion ;
@@ -2195,7 +2197,10 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
21952197 } ;
21962198 } ) ;
21972199
2198- return [ ...new Set ( allEndpoints ) ] ;
2200+ return {
2201+ lastMeasurement : user . additionalData ?. clusterPreferences ?. lrm ,
2202+ candidates : [ ...new Set ( allEndpoints ) ]
2203+ } ;
21992204 }
22002205
22012206 async setWorkspaceClusterPreferences ( ctx : TraceContext , pref : WorkspaceClusterPreference ) : Promise < void > {
@@ -2206,6 +2211,7 @@ export class GitpodServerImpl implements GitpodServerWithTracing, Disposable {
22062211
22072212 // don't just dump `pref` in here, we have no idea what it contains.
22082213 clusterPref . region = pref . region ;
2214+ clusterPref . lrm = new Date ( ) . toISOString ( ) ;
22092215
22102216 data . clusterPreferences = clusterPref ;
22112217 user . additionalData = data ;
0 commit comments