Skip to content

Commit f90bba1

Browse files
committed
fixup
1 parent b499b06 commit f90bba1

File tree

4 files changed

+41
-40
lines changed

4 files changed

+41
-40
lines changed

components/dashboard/src/projects/Prebuilds.tsx

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,14 +40,13 @@ export default function () {
4040
}
4141
const registration = getGitpodService().registerClient({
4242
onPrebuildUpdate: (update) => {
43-
4443
if (!project) {
4544
return;
4645
}
4746
if (update.prebuildInfo.projectId === project.id) {
4847
// TODO(at) create a proper model to update the state
4948
setPrebuilds((prev) => {
50-
const existingPrebuild = prev.find(p => p.id);
49+
const existingPrebuild = prev.find(p => p.id === update.prebuildInfo.id);
5150
if (existingPrebuild) {
5251
existingPrebuild.status = update.status;
5352
return [...prev];

components/server/ee/src/workspace/gitpod-server-impl.ts

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { injectable, inject } from "inversify";
88
import { GitpodServerImpl } from "../../../src/workspace/gitpod-server-impl";
99
import { TraceContext } from "@gitpod/gitpod-protocol/lib/util/tracing";
10-
import { GitpodServer, GitpodClient, AdminGetListRequest, User, AdminGetListResult, Permission, AdminBlockUserRequest, AdminModifyRoleOrPermissionRequest, RoleOrPermission, AdminModifyPermanentWorkspaceFeatureFlagRequest, UserFeatureSettings, AdminGetWorkspacesRequest, WorkspaceAndInstance, GetWorkspaceTimeoutResult, WorkspaceTimeoutDuration, WorkspaceTimeoutValues, SetWorkspaceTimeoutResult, WorkspaceContext, CreateWorkspaceMode, WorkspaceCreationResult, PrebuiltWorkspaceContext, CommitContext, PrebuiltWorkspace, PermissionName, WorkspaceInstance, EduEmailDomain, ProviderRepository, Queue } from "@gitpod/gitpod-protocol";
10+
import { GitpodServer, GitpodClient, AdminGetListRequest, User, AdminGetListResult, Permission, AdminBlockUserRequest, AdminModifyRoleOrPermissionRequest, RoleOrPermission, AdminModifyPermanentWorkspaceFeatureFlagRequest, UserFeatureSettings, AdminGetWorkspacesRequest, WorkspaceAndInstance, GetWorkspaceTimeoutResult, WorkspaceTimeoutDuration, WorkspaceTimeoutValues, SetWorkspaceTimeoutResult, WorkspaceContext, CreateWorkspaceMode, WorkspaceCreationResult, PrebuiltWorkspaceContext, CommitContext, PrebuiltWorkspace, PermissionName, WorkspaceInstance, EduEmailDomain, ProviderRepository, Queue, PrebuildUpdate } from "@gitpod/gitpod-protocol";
1111
import { ResponseError } from "vscode-jsonrpc";
1212
import { TakeSnapshotRequest, AdmissionLevel, ControlAdmissionRequest, StopWorkspacePolicy, DescribeWorkspaceRequest, SetTimeoutRequest } from "@gitpod/ws-manager/lib";
1313
import { ErrorCodes } from "@gitpod/gitpod-protocol/lib/messaging/error";
@@ -76,6 +76,37 @@ export class GitpodServerEEImpl extends GitpodServerImpl<GitpodClient, GitpodSer
7676
initialize(client: GitpodClient | undefined, clientRegion: string | undefined, user: User, accessGuard: ResourceAccessGuard): void {
7777
super.initialize(client, clientRegion, user, accessGuard);
7878
this.listenToCreditAlerts();
79+
this.listenForPrebuildUpdates();
80+
}
81+
82+
protected async listenForPrebuildUpdates() {
83+
// 'registering for prebuild updates for all projects this user has access to
84+
const projects = await this.getAccessiibleProjects();
85+
for (const projectId of projects) {
86+
this.disposables.push(this.messageBusIntegration.listenForPrebuildUpdates(
87+
(ctx: TraceContext, update: PrebuildUpdate) => {
88+
this.client?.onPrebuildUpdate(update);
89+
},
90+
projectId
91+
));
92+
}
93+
94+
// TODO(at) we need to keep the list of accessible project up to date
95+
}
96+
97+
protected async getAccessiibleProjects() {
98+
if (!this.user) {
99+
return [];
100+
}
101+
102+
// update all project this user has access to
103+
const allProjects: string[] = [];
104+
const teams = await this.teamDB.findTeamsByUser(this.user.id);
105+
for (const team of teams) {
106+
allProjects.push(...(await this.projectsService.getTeamProjects(team.id)).map(p => p.id));
107+
}
108+
allProjects.push(...(await this.projectsService.getUserProjects(this.user.id)).map(p => p.id));
109+
return allProjects;
79110
}
80111

81112
/**

components/server/src/workspace/gitpod-server-impl.ts

Lines changed: 1 addition & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import { BlobServiceClient } from "@gitpod/content-service/lib/blobs_grpc_pb";
88
import { DownloadUrlRequest, DownloadUrlResponse, UploadUrlRequest, UploadUrlResponse } from '@gitpod/content-service/lib/blobs_pb';
99
import { AppInstallationDB, UserDB, UserMessageViewsDB, WorkspaceDB, DBWithTracing, TracedWorkspaceDB, DBGitpodToken, DBUser, UserStorageResourcesDB, TeamDB } from '@gitpod/gitpod-db/lib';
10-
import { AuthProviderEntry, AuthProviderInfo, Branding, CommitContext, Configuration, CreateWorkspaceMode, DisposableCollection, GetWorkspaceTimeoutResult, GitpodClient, 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, PrebuildInfo, TeamMemberRole, WithDefaultConfig, FindPrebuildsParams, PrebuildUpdate } from '@gitpod/gitpod-protocol';
10+
import { AuthProviderEntry, AuthProviderInfo, Branding, CommitContext, Configuration, CreateWorkspaceMode, DisposableCollection, GetWorkspaceTimeoutResult, GitpodClient, 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, PrebuildInfo, TeamMemberRole, WithDefaultConfig, FindPrebuildsParams } from '@gitpod/gitpod-protocol';
1111
import { AccountStatement } from "@gitpod/gitpod-protocol/lib/accounting-protocol";
1212
import { AdminBlockUserRequest, AdminGetListRequest, AdminGetListResult, AdminGetWorkspacesRequest, AdminModifyPermanentWorkspaceFeatureFlagRequest, AdminModifyRoleOrPermissionRequest, WorkspaceAndInstance } from '@gitpod/gitpod-protocol/lib/admin-protocol';
1313
import { GetLicenseInfoResult, LicenseFeature, LicenseValidationResult } from '@gitpod/gitpod-protocol/lib/license-protocol';
@@ -123,25 +123,6 @@ export class GitpodServerImpl<Client extends GitpodClient, Server extends Gitpod
123123
log.info({ userId: this.user?.id }, 'initializeClient');
124124

125125
this.listenForWorkspaceInstanceUpdates();
126-
this.listenForPrebuildUpdates();
127-
}
128-
129-
protected allProjectsForUser: string[] = [];
130-
protected listenForPrebuildUpdates(): void {
131-
const mayAccessProject = (projectId: string) => {
132-
return this.allProjectsForUser.includes(projectId);
133-
}
134-
135-
// 'registering for *ALL* prebuild updates and filtering for relevant ones inside of the
136-
// event handler
137-
this.disposables.push(this.messageBusIntegration.listenForPrebuildUpdates(
138-
(ctx: TraceContext, update: PrebuildUpdate) => {
139-
const { projectId } = update.prebuildInfo;
140-
if (mayAccessProject(projectId)) {
141-
this.client?.onPrebuildUpdate(update);
142-
}
143-
}
144-
));
145126
}
146127

147128
protected listenForWorkspaceInstanceUpdates(): void {
@@ -274,15 +255,6 @@ export class GitpodServerImpl<Client extends GitpodClient, Server extends Gitpod
274255
if (updatedUser) {
275256
this.user = updatedUser;
276257
}
277-
278-
// update all project this user has access to
279-
const allProjectsForUser: string[] = [];
280-
const teams = await this.teamDB.findTeamsByUser(this.user.id);
281-
for (const team of teams) {
282-
allProjectsForUser.push(...(await this.projectsService.getTeamProjects(team.id)).map(p => p.id));
283-
}
284-
allProjectsForUser.push(...(await this.projectsService.getUserProjects(this.user.id)).map(p => p.id));
285-
this.allProjectsForUser = allProjectsForUser;
286258
}
287259
}
288260
protected termsAccepted: boolean | undefined;

components/ws-manager-bridge/ee/src/bridge.ts

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -94,16 +94,15 @@ export class WorkspaceManagerBridgeEE extends WorkspaceManagerBridge {
9494
type: headlessUpdateType,
9595
workspaceID: workspaceId,
9696
});
97+
}
9798

98-
// todo(at) notify about prebuild updated
99-
{
100-
const prebuildInfo = await this.workspaceDB.trace({span}).findPrebuildInfo(prebuild.id);
101-
if (prebuildInfo) {
102-
prebuildInfo.status = prebuild.state; // todo(at) this looks odd, should the status be updated in DB?
103-
this.messagebus.notifyOnPrebuildUpdate({ prebuildInfo, status: prebuild.state });
104-
}
99+
// todo(at) notify about prebuild updated
100+
{
101+
const prebuildInfo = await this.workspaceDB.trace({span}).findPrebuildInfo(prebuild.id);
102+
if (prebuildInfo) {
103+
prebuildInfo.status = prebuild.state; // todo(at) this looks odd, should the status be updated in DB?
104+
this.messagebus.notifyOnPrebuildUpdate({ prebuildInfo, status: prebuild.state });
105105
}
106-
107106
}
108107
} catch (e) {
109108
TraceContext.logError({span}, e);

0 commit comments

Comments
 (0)