Skip to content

Commit 62ca783

Browse files
author
Simon Emms
committed
Create installation admin controller
1 parent f5c27bf commit 62ca783

File tree

3 files changed

+35
-6
lines changed

3 files changed

+35
-6
lines changed

components/server/src/container-module.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import { SessionHandlerProvider } from './session-handler';
1212
import { GitpodFileParser } from '@gitpod/gitpod-protocol/lib/gitpod-file-parser';
1313
import { WorkspaceFactory } from './workspace/workspace-factory';
1414
import { UserController } from './user/user-controller';
15+
import { InstallationAdminController } from './installation-admin/installation-admin-controller';
1516
import { GitpodServerImpl } from './workspace/gitpod-server-impl';
1617
import { ConfigProvider } from './workspace/config-provider';
1718
import { MessageBusIntegration } from './workspace/messagebus-integration';
@@ -114,6 +115,8 @@ export const productionContainerModule = new ContainerModule((bind, unbind, isBo
114115
bind(EnforcementControllerServerFactory).toAutoFactory(GitpodServerImpl);
115116
bind(EnforcementController).toSelf().inSingletonScope();
116117

118+
bind(InstallationAdminController).toSelf().inSingletonScope();
119+
117120
bind(MessagebusConfiguration).toSelf().inSingletonScope();
118121
bind(MessageBusHelper).to(MessageBusHelperImpl).inSingletonScope();
119122
bind(MessageBusIntegration).toSelf().inSingletonScope();
@@ -123,11 +126,11 @@ export const productionContainerModule = new ContainerModule((bind, unbind, isBo
123126

124127
bind(GitpodServerImpl).toSelf();
125128
bind(WebsocketConnectionManager).toDynamicValue(ctx => {
126-
const serverFactory = () => ctx.container.get<GitpodServerImpl>(GitpodServerImpl);
127-
const hostContextProvider = ctx.container.get<HostContextProvider>(HostContextProvider);
128-
const config = ctx.container.get<Config>(Config);
129-
return new WebsocketConnectionManager(serverFactory, hostContextProvider, config.rateLimiter);
130-
}
129+
const serverFactory = () => ctx.container.get<GitpodServerImpl>(GitpodServerImpl);
130+
const hostContextProvider = ctx.container.get<HostContextProvider>(HostContextProvider);
131+
const config = ctx.container.get<Config>(Config);
132+
return new WebsocketConnectionManager(serverFactory, hostContextProvider, config.rateLimiter);
133+
}
131134
).inSingletonScope();
132135

133136
bind(PrometheusClientCallMetrics).toSelf().inSingletonScope();
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* Copyright (c) 2022 Gitpod GmbH. All rights reserved.
3+
* Licensed under the GNU Affero General Public License (AGPL).
4+
* See License-AGPL.txt in the project root for license information.
5+
*/
6+
7+
import { injectable } from 'inversify';
8+
import * as express from 'express';
9+
10+
@injectable()
11+
export class InstallationAdminController {
12+
get apiRouter(): express.Router {
13+
const router = express.Router();
14+
15+
router.get('/data', async (req: express.Request, res: express.Response) => {
16+
res.send({
17+
sendTelemetry: false
18+
});
19+
});
20+
21+
return router;
22+
}
23+
}

components/server/src/server.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import { Config } from './config';
4444
import { DebugApp } from './debug-app';
4545
import { LocalMessageBroker } from './messaging/local-message-broker';
4646
import { WsPingPongHandler } from './express/ws-ping-pong-handler';
47+
import { InstallationAdminController } from './installation-admin/installation-admin-controller';
4748

4849
@injectable()
4950
export class Server<C extends GitpodClient, S extends GitpodServer> {
@@ -54,6 +55,7 @@ export class Server<C extends GitpodClient, S extends GitpodServer> {
5455
@inject(SessionHandlerProvider) protected sessionHandlerProvider: SessionHandlerProvider;
5556
@inject(Authenticator) protected authenticator: Authenticator;
5657
@inject(UserController) protected readonly userController: UserController;
58+
@inject(InstallationAdminController) protected readonly installationAdminController: InstallationAdminController;
5759
@inject(EnforcementController) protected readonly enforcementController: EnforcementController;
5860
@inject(WebsocketConnectionManager) protected websocketConnectionHandler: WebsocketConnectionManager;
5961
@inject(MessageBusIntegration) protected readonly messagebus: MessageBusIntegration;
@@ -102,7 +104,7 @@ export class Server<C extends GitpodClient, S extends GitpodServer> {
102104
// metrics
103105
app.use((req: express.Request, res: express.Response, next: express.NextFunction) => {
104106
const startTime = Date.now();
105-
req.on("end", () =>{
107+
req.on("end", () => {
106108
const method = req.method;
107109
const route = req.route?.path || req.baseUrl || "unknown";
108110
observeHttpRequestDuration(method, route, res.statusCode, (Date.now() - startTime) / 1000)
@@ -283,6 +285,7 @@ export class Server<C extends GitpodClient, S extends GitpodServer> {
283285
res.send(this.config.version);
284286
});
285287
app.use(this.oauthController.oauthRouter);
288+
app.use('/installation-admin', this.installationAdminController.apiRouter);
286289
}
287290

288291
public async start(port: number) {

0 commit comments

Comments
 (0)