Skip to content

terminal fixes #8

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 23, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 4 additions & 5 deletions .gitpod.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
FROM gitpod/workspace-full:latest

FROM gitpod/workspace-full:latest

# We use latest major version of Node.js distributed VS Code. (see about dialog in your local VS Code)
RUN bash -c ". .nvm/nvm.sh \
&& nvm install 12.18.3 \
&& nvm use 12.18.3 \
&& nvm alias default 12.18.3"
&& nvm install 12 \
&& nvm use 12 \
&& nvm alias default 12"

RUN echo "nvm use default &>/dev/null" >> ~/.bashrc.d/51-nvm-fix

Expand Down
53 changes: 37 additions & 16 deletions extensions/gitpod/src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,19 @@
require('reflect-metadata');
import { GitpodClient, GitpodServer, GitpodServiceImpl } from '@gitpod/gitpod-protocol/lib/gitpod-service';
import { JsonRpcProxyFactory } from '@gitpod/gitpod-protocol/lib/messaging/proxy-factory';
import { NavigatorContext, PullRequestContext } from '@gitpod/gitpod-protocol/lib/protocol';
import { GitpodHostUrl } from '@gitpod/gitpod-protocol/lib/util/gitpod-host-url';
import * as workspaceInstance from '@gitpod/gitpod-protocol/lib/workspace-instance';
import { ControlServiceClient } from '@gitpod/supervisor-api-grpc/lib/control_grpc_pb';
import { ExposePortRequest, ExposePortResponse } from '@gitpod/supervisor-api-grpc/lib/control_pb';
import { ExposePortRequest } from '@gitpod/supervisor-api-grpc/lib/control_pb';
import { InfoServiceClient } from '@gitpod/supervisor-api-grpc/lib/info_grpc_pb';
import { WorkspaceInfoRequest, WorkspaceInfoResponse } from '@gitpod/supervisor-api-grpc/lib/info_pb';
import { WorkspaceInfoRequest } from '@gitpod/supervisor-api-grpc/lib/info_pb';
import { NotificationServiceClient } from '@gitpod/supervisor-api-grpc/lib/notification_grpc_pb';
import { NotifyRequest, NotifyResponse, RespondRequest, SubscribeRequest, SubscribeResponse } from '@gitpod/supervisor-api-grpc/lib/notification_pb';
import { StatusServiceClient } from '@gitpod/supervisor-api-grpc/lib/status_grpc_pb';
import { ExposedPortInfo, OnPortExposedAction, PortsStatus, PortsStatusRequest, PortsStatusResponse, PortVisibility } from '@gitpod/supervisor-api-grpc/lib/status_pb';
import { TokenServiceClient } from '@gitpod/supervisor-api-grpc/lib/token_grpc_pb';
import { GetTokenRequest, GetTokenResponse } from '@gitpod/supervisor-api-grpc/lib/token_pb';
import { GetTokenRequest } from '@gitpod/supervisor-api-grpc/lib/token_pb';
import * as grpc from '@grpc/grpc-js';
import * as fs from 'fs';
import type * as keytarType from 'keytar';
Expand All @@ -29,17 +30,29 @@ import * as vscode from 'vscode';
import { ConsoleLogger, listen as doListen } from 'vscode-ws-jsonrpc';
import { GitpodPluginModel } from './gitpod-plugin-model';
import WebSocket = require('ws');
import { NavigatorContext, PullRequestContext } from '@gitpod/gitpod-protocol/lib/protocol';

export async function activate(context: vscode.ExtensionContext) {
const pendingActivate: Promise<void>[] = [];

const supervisorDeadlines = {
long: 30 * 1000,
normal: 15 * 1000,
short: 5 * 1000
};
const supervisorAddr = process.env.SUPERVISOR_ADDR || 'localhost:22999';
const statusServiceClient = new StatusServiceClient(supervisorAddr, grpc.credentials.createInsecure());
const controlServiceClient = new ControlServiceClient(supervisorAddr, grpc.credentials.createInsecure());
const notificationServiceClient = new NotificationServiceClient(supervisorAddr, grpc.credentials.createInsecure());
const tokenServiceClient = new TokenServiceClient(supervisorAddr, grpc.credentials.createInsecure());
const infoServiceClient = new InfoServiceClient(supervisorAddr, grpc.credentials.createInsecure());
const workspaceInfoResponse = await util.promisify<WorkspaceInfoRequest, WorkspaceInfoResponse>(infoServiceClient.workspaceInfo.bind(infoServiceClient))(new WorkspaceInfoRequest());
const supervisorClientOptions: Partial<grpc.ClientOptions> = {
'grpc.primary_user_agent': `${vscode.env.appName}/${vscode.version} ${context.extensionId}/${context.extensionVersion}`,
};
const supervisorMetadata = new grpc.Metadata();
const statusServiceClient = new StatusServiceClient(supervisorAddr, grpc.credentials.createInsecure(), supervisorClientOptions);
const controlServiceClient = new ControlServiceClient(supervisorAddr, grpc.credentials.createInsecure(), supervisorClientOptions);
const notificationServiceClient = new NotificationServiceClient(supervisorAddr, grpc.credentials.createInsecure(), supervisorClientOptions);
const tokenServiceClient = new TokenServiceClient(supervisorAddr, grpc.credentials.createInsecure(), supervisorClientOptions);
const infoServiceClient = new InfoServiceClient(supervisorAddr, grpc.credentials.createInsecure(), supervisorClientOptions);

const workspaceInfoResponse = await util.promisify(infoServiceClient.workspaceInfo.bind(infoServiceClient, new WorkspaceInfoRequest(), supervisorMetadata, {
deadline: Date.now() + supervisorDeadlines.long
}))();
const checkoutLocation = workspaceInfoResponse.getCheckoutLocation();
const workspaceId = workspaceInfoResponse.getWorkspaceId();
const gitpodHost = workspaceInfoResponse.getGitpodHost();
Expand Down Expand Up @@ -67,7 +80,9 @@ export async function activate(context: vscode.ExtensionContext) {
for (const scope of gitpodScopes) {
getTokenRequest.addScope(scope);
}
const getTokenResponse = await util.promisify<GetTokenRequest, GetTokenResponse>(tokenServiceClient.getToken.bind(tokenServiceClient))(getTokenRequest);
const getTokenResponse = await util.promisify(tokenServiceClient.getToken.bind(tokenServiceClient, getTokenRequest, supervisorMetadata, {
deadline: Date.now() + supervisorDeadlines.long
}))();
return getTokenResponse.getToken();
})();
(async () => {
Expand Down Expand Up @@ -353,7 +368,7 @@ export async function activate(context: vscode.ExtensionContext) {
try {
const req = new PortsStatusRequest();
req.setObserve(true);
const evts = statusServiceClient.portsStatus(req);
const evts = statusServiceClient.portsStatus(req, supervisorMetadata);
stopUpdates = evts.cancel.bind(evts);

await new Promise((resolve, reject) => {
Expand Down Expand Up @@ -402,7 +417,9 @@ export async function activate(context: vscode.ExtensionContext) {
const request = new ExposePortRequest();
request.setPort(portNumber);
request.setTargetPort(portNumber);
await util.promisify<ExposePortRequest, ExposePortResponse>(controlServiceClient.exposePort).bind(controlServiceClient)(request);
await util.promisify(controlServiceClient.exposePort.bind(controlServiceClient, request, supervisorMetadata, {
deadline: Date.now() + supervisorDeadlines.normal
}))();
}
} catch (e) {
reject(e);
Expand Down Expand Up @@ -640,7 +657,9 @@ export async function activate(context: vscode.ExtensionContext) {
getTokenRequest.addScope(scope);
}
}
const getTokenResponse = await util.promisify<GetTokenRequest, GetTokenResponse>(tokenServiceClient.getToken.bind(tokenServiceClient))(getTokenRequest);
const getTokenResponse = await util.promisify(tokenServiceClient.getToken.bind(tokenServiceClient, getTokenRequest, supervisorMetadata, {
deadline: Date.now() + supervisorDeadlines.long
}))();
const accessToken = getTokenResponse.getToken();
gitHubSession = await resolveAuthenticationSession({
id: gitHubSessionID,
Expand Down Expand Up @@ -738,7 +757,7 @@ export async function activate(context: vscode.ExtensionContext) {
while (run) {
try {
console.info('connecting to notification service');
const evts = notificationServiceClient.subscribe(new SubscribeRequest());
const evts = notificationServiceClient.subscribe(new SubscribeRequest(), supervisorMetadata);
stopUpdates = evts.cancel.bind(evts);

await new Promise((resolve, reject) => {
Expand Down Expand Up @@ -769,7 +788,9 @@ export async function activate(context: vscode.ExtensionContext) {
respondRequest.setResponse(notifyResponse);
respondRequest.setRequestid(result.getRequestid());
console.info('sending notification response', request);
notificationServiceClient.respond(respondRequest, (error, _) => {
notificationServiceClient.respond(respondRequest, supervisorMetadata, {
deadline: Date.now() + supervisorDeadlines.normal
}, (error, _) => {
if (error?.code !== grpc.status.DEADLINE_EXCEEDED) {
reject(error);
}
Expand Down
18 changes: 9 additions & 9 deletions extensions/gitpod/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -30,11 +30,11 @@
google-protobuf "^3.8.0-rc.1"

"@grpc/grpc-js@^1.1.5", "@grpc/grpc-js@latest":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.4.tgz#04f0bbefb2636296d17e821f3d52152fbe2f6989"
integrity sha512-z+EI20HYHLd3/uERtwOqP8Q4EPhGbz5RKUpiyo6xPWfR3pcjpf8sfNvY9XytDQ4xo1wNz7NqH1kh2UBonwzbfg==
version "1.2.11"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.11.tgz#68faa56bded64844294dc6429185503376f05ff1"
integrity sha512-DZqx3nHBm2OGY7NKq4sppDEfx4nBAsQH/d/H/yxo/+BwpVLWLGs+OorpwQ+Fqd6EgpDEoi4MhqndjGUeLl/5GA==
dependencies:
"@types/node" "^12.12.47"
"@types/node" ">=12.12.47"
google-auth-library "^6.1.1"
semver "^6.2.0"

Expand All @@ -51,16 +51,16 @@
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.11.2.tgz#2de1ed6670439387da1c9f549a2ade2b0a799256"
integrity sha512-jiE3QIxJ8JLNcb1Ps6rDbysDhN4xa8DJJvuC9prr6w+1tIh+QAbYyNF3tyiZNLDBIuBCf4KEcV2UvQm/V60xfA==

"@types/node@>=12.12.47":
version "14.14.35"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313"
integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==

"@types/node@^10.12.21":
version "10.17.35"
resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.35.tgz#58058f29b870e6ae57b20e4f6e928f02b7129f56"
integrity sha512-gXx7jAWpMddu0f7a+L+txMplp3FnHl53OhQIF9puXKq3hDGY/GjH+MF04oWnV/adPSCrbtHumDCFwzq2VhltWA==

"@types/node@^12.12.47":
version "12.12.62"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.62.tgz#733923d73669188d35950253dd18a21570085d2b"
integrity sha512-qAfo81CsD7yQIM9mVyh6B/U47li5g7cfpVQEDMfQeF8pSZVwzbhwU3crc0qG4DmpsebpJPR49AKOExQyJ05Cpg==

"@types/ps-tree@^1.1.0":
version "1.1.0"
resolved "https://registry.yarnpkg.com/@types/ps-tree/-/ps-tree-1.1.0.tgz#7e2034e8ccdc16f6b0ced7a88529ebcb3b1dc424"
Expand Down
16 changes: 8 additions & 8 deletions remote/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,18 @@
google-protobuf "^3.8.0-rc.1"

"@grpc/grpc-js@^1.1.5", "@grpc/grpc-js@latest":
version "1.2.4"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.4.tgz#04f0bbefb2636296d17e821f3d52152fbe2f6989"
integrity sha512-z+EI20HYHLd3/uERtwOqP8Q4EPhGbz5RKUpiyo6xPWfR3pcjpf8sfNvY9XytDQ4xo1wNz7NqH1kh2UBonwzbfg==
version "1.2.11"
resolved "https://registry.yarnpkg.com/@grpc/grpc-js/-/grpc-js-1.2.11.tgz#68faa56bded64844294dc6429185503376f05ff1"
integrity sha512-DZqx3nHBm2OGY7NKq4sppDEfx4nBAsQH/d/H/yxo/+BwpVLWLGs+OorpwQ+Fqd6EgpDEoi4MhqndjGUeLl/5GA==
dependencies:
"@types/node" "^12.12.47"
"@types/node" ">=12.12.47"
google-auth-library "^6.1.1"
semver "^6.2.0"

"@types/node@^12.12.47":
version "12.19.13"
resolved "https://registry.yarnpkg.com/@types/node/-/node-12.19.13.tgz#888e2b34159fb91496589484ec169618212b51b7"
integrity sha512-qdixo2f0U7z6m0UJUugTJqVF94GNDkdgQhfBtMs8t5898JE7G/D2kJYw4rc1nzjIPLVAsDkY2MdABnLAP5lM1w==
"@types/node@>=12.12.47":
version "14.14.35"
resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.35.tgz#42c953a4e2b18ab931f72477e7012172f4ffa313"
integrity sha512-Lt+wj8NVPx0zUmUwumiVXapmaLUcAk3yPuHCFVXras9k5VT9TdhJqKqGVUQCD60OTMCl0qxJ57OiTL0Mic3Iag==

abort-controller@^3.0.0:
version "3.0.0"
Expand Down
Loading