Skip to content

Commit 2fa1483

Browse files
mustard-mhiQQBot
authored andcommitted
Control ports according to previous status
1 parent 0982a42 commit 2fa1483

File tree

4 files changed

+18
-13
lines changed

4 files changed

+18
-13
lines changed

gitpod-remote/src/portViewProvider.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as vscode from 'vscode';
55
import { GitpodExtensionContext, ExposedServedGitpodWorkspacePort, GitpodWorkspacePort, isExposedServedGitpodWorkspacePort, isExposedServedPort, PortInfo, TunnelDescriptionI } from 'gitpod-shared';
66
import { PortsStatus } from '@gitpod/supervisor-api-grpc/lib/status_pb';
77
import { TunnelVisiblity } from '@gitpod/supervisor-api-grpc/lib/port_pb';
8+
import { PortProtocol, PortVisibility } from 'gitpod-shared/portsview/src/protocol/gitpod';
89

910
const PortCommands = <const>['tunnelNetwork', 'tunnelHost', 'makePublic', 'makePrivate', 'preview', 'openBrowser', 'retryAutoExpose', 'urlCopy', 'queryPortData'];
1011

@@ -34,28 +35,28 @@ export class GitpodPortViewProvider implements vscode.WebviewViewProvider {
3435
...context.getWorkspaceTelemetryProperties(),
3536
action: 'private'
3637
});
37-
context.controlPort(port.status.localPort, { visibility: 'private' });
38+
context.controlPort(port.status.localPort, port.status.exposed, { visibility: PortVisibility.PRIVATE });
3839
}));
3940
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makePublic', ({ port }: PortItem) => {
4041
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {
4142
...context.getWorkspaceTelemetryProperties(),
4243
action: 'public'
4344
});
44-
context.controlPort(port.status.localPort, { visibility: 'public' });
45+
context.controlPort(port.status.localPort, port.status.exposed, { visibility: PortVisibility.PUBLIC });
4546
}));
4647
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makeHTTPS', ({ port }: PortItem) => {
4748
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {
4849
...context.getWorkspaceTelemetryProperties(),
4950
action: 'https'
5051
});
51-
context.controlPort(port.status.localPort, { protocol: 'https' });
52+
context.controlPort(port.status.localPort, port.status.exposed, { protocol: PortProtocol.HTTPS });
5253
}));
5354
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makeHTTP', ({ port }: PortItem) => {
5455
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {
5556
...context.getWorkspaceTelemetryProperties(),
5657
action: 'http'
5758
});
58-
context.controlPort(port.status.localPort, { protocol: 'http' });
59+
context.controlPort(port.status.localPort, port.status.exposed, { protocol: PortProtocol.HTTP });
5960
}));
6061
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.preview', ({ port }: PortItem) => {
6162
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {

gitpod-shared/src/gitpodContext.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
import { GitpodClient, GitpodServer, GitpodServiceImpl, WorkspaceInstanceUpdateListener } from '@gitpod/gitpod-protocol/lib/gitpod-service';
66
import { User } from '@gitpod/gitpod-protocol/lib/protocol';
77
import { Team } from '@gitpod/gitpod-protocol/lib/teams-projects-protocol';
8-
import { WorkspaceInstancePort } from '@gitpod/gitpod-protocol/lib/workspace-instance';
98
import { ControlServiceClient } from '@gitpod/supervisor-api-grpc/lib/control_grpc_pb';
109
import { ExposePortRequest } from '@gitpod/supervisor-api-grpc/lib/control_pb';
1110
import { InfoServiceClient } from '@gitpod/supervisor-api-grpc/lib/info_grpc_pb';
@@ -14,7 +13,7 @@ import { NotificationServiceClient } from '@gitpod/supervisor-api-grpc/lib/notif
1413
import { PortServiceClient } from '@gitpod/supervisor-api-grpc/lib/port_grpc_pb';
1514
import { CloseTunnelRequest, RetryAutoExposeRequest, TunnelPortRequest, TunnelVisiblity } from '@gitpod/supervisor-api-grpc/lib/port_pb';
1615
import { StatusServiceClient } from '@gitpod/supervisor-api-grpc/lib/status_grpc_pb';
17-
import { PortsStatus, PortsStatusRequest, PortsStatusResponse } from '@gitpod/supervisor-api-grpc/lib/status_pb';
16+
import { ExposedPortInfo, PortProtocol, PortVisibility, PortsStatus, PortsStatusRequest, PortsStatusResponse } from '@gitpod/supervisor-api-grpc/lib/status_pb';
1817
import { TerminalServiceClient } from '@gitpod/supervisor-api-grpc/lib/terminal_grpc_pb';
1918
import { TokenServiceClient } from '@gitpod/supervisor-api-grpc/lib/token_grpc_pb';
2019
import { GetTokenRequest } from '@gitpod/supervisor-api-grpc/lib/token_pb';
@@ -311,10 +310,14 @@ export class GitpodExtensionContext implements vscode.ExtensionContext {
311310
}
312311
}
313312

314-
async controlPort(port: number, options: Partial<Pick<WorkspaceInstancePort, 'visibility' | 'protocol'>>): Promise<void> {
313+
async controlPort(port: number, prevStatus: ExposedPortInfo.AsObject | undefined, updateOptions: Partial<Pick<ExposedPortInfo.AsObject, 'visibility' | 'protocol'>>): Promise<void> {
314+
const protocol = updateOptions.protocol ?? prevStatus?.protocol ?? PortProtocol.HTTP;
315+
const visibility = updateOptions.visibility ?? prevStatus?.visibility ?? PortVisibility.PRIVATE;
316+
315317
await this.gitpod.server.openPort(this.info.workspaceId, {
316318
port,
317-
...options,
319+
protocol: protocol === PortProtocol.HTTPS ? 'https' : 'http',
320+
visibility: visibility === PortVisibility.PUBLIC ? 'public' : 'private',
318321
});
319322
}
320323

gitpod-web/src/extension.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -323,7 +323,7 @@ async function registerPorts(context: GitpodExtensionContext): Promise<void> {
323323
currentNotifications.delete(localPort);
324324

325325
if (result === makePublic) {
326-
await gitpodContext?.controlPort(port.status.localPort, { visibility: 'public' });
326+
await gitpodContext?.controlPort(port.status.localPort, port.status.exposed, { visibility: PortVisibility.PUBLIC });
327327
} else if (result === openAction) {
328328
await openPreview(port);
329329
} else if (result === openExternalAction) {

gitpod-web/src/portViewProvider.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import * as vscode from 'vscode';
55
import { GitpodExtensionContext, ExposedServedGitpodWorkspacePort, GitpodWorkspacePort, isExposedServedGitpodWorkspacePort, isExposedServedPort, PortInfo } from 'gitpod-shared';
66
import { PortsStatus } from '@gitpod/supervisor-api-grpc/lib/status_pb';
77
import { TunnelVisiblity } from '@gitpod/supervisor-api-grpc/lib/port_pb';
8+
import { PortProtocol, PortVisibility } from 'gitpod-shared/portsview/src/protocol/gitpod';
89

910
const PortCommands = <const>['tunnelNetwork', 'tunnelHost', 'makePublic', 'makePrivate', 'preview', 'openBrowser', 'retryAutoExpose', 'urlCopy', 'queryPortData'];
1011

@@ -33,28 +34,28 @@ export class GitpodPortViewProvider implements vscode.WebviewViewProvider {
3334
...context.getWorkspaceTelemetryProperties(),
3435
action: 'private'
3536
});
36-
context.controlPort(port.status.localPort, { visibility: 'private' });
37+
context.controlPort(port.status.localPort, port.status.exposed, { visibility: PortVisibility.PRIVATE });
3738
}));
3839
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makePublic', ({ port }: PortItem) => {
3940
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {
4041
...context.getWorkspaceTelemetryProperties(),
4142
action: 'public'
4243
});
43-
context.controlPort(port.status.localPort, { visibility: 'public' });
44+
context.controlPort(port.status.localPort, port.status.exposed, { visibility: PortVisibility.PUBLIC });
4445
}));
4546
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makeHTTPS', ({ port }: PortItem) => {
4647
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {
4748
...context.getWorkspaceTelemetryProperties(),
4849
action: 'https'
4950
});
50-
context.controlPort(port.status.localPort, { protocol: 'https' });
51+
context.controlPort(port.status.localPort, port.status.exposed, { protocol: PortProtocol.HTTPS });
5152
}));
5253
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.makeHTTP', ({ port }: PortItem) => {
5354
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {
5455
...context.getWorkspaceTelemetryProperties(),
5556
action: 'http'
5657
});
57-
context.controlPort(port.status.localPort, { protocol: 'http' });
58+
context.controlPort(port.status.localPort, port.status.exposed, { protocol: PortProtocol.HTTP });
5859
}));
5960
context.subscriptions.push(vscode.commands.registerCommand('gitpod.ports.preview', ({ port }: PortItem) => {
6061
context.telemetryService.sendTelemetryEvent('vscode_execute_command_gitpod_ports', {

0 commit comments

Comments
 (0)