feat: add port-sharing backend (#11939)

This commit is contained in:
Garrett Delfosse
2024-02-13 09:31:20 -05:00
committed by GitHub
parent c939416702
commit 3ab3a62bef
48 changed files with 1947 additions and 59 deletions
+4
View File
@@ -736,6 +736,10 @@ export const updateTemplateSettings = async (
await expect(page).toHaveURL(`/templates/${templateName}/settings`);
for (const [key, value] of Object.entries(templateSettingValues)) {
// Skip max_port_share_level for now since the frontend is not yet able to handle it
if (key === "max_port_share_level") {
continue;
}
const labelText = capitalize(key).replace("_", " ");
await page.getByLabel(labelText, { exact: true }).fill(value);
}
+40 -2
View File
@@ -369,6 +369,12 @@ export interface DangerousConfig {
readonly allow_all_cors: boolean;
}
// From codersdk/workspaceagentportshare.go
export interface DeleteWorkspaceAgentPortShareRequest {
readonly agent_name: string;
readonly port: number;
}
// From codersdk/deployment.go
export interface DeploymentConfig {
readonly config?: DeploymentValues;
@@ -1043,6 +1049,7 @@ export interface Template {
readonly time_til_dormant_ms: number;
readonly time_til_dormant_autodelete_ms: number;
readonly require_active_version: boolean;
readonly max_port_share_level: WorkspaceAgentPortShareLevel;
}
// From codersdk/templates.go
@@ -1302,6 +1309,7 @@ export interface UpdateTemplateMeta {
readonly require_active_version: boolean;
readonly deprecation_message?: string;
readonly disable_everyone_group_access: boolean;
readonly max_port_share_level?: WorkspaceAgentPortShareLevel;
}
// From codersdk/users.go
@@ -1362,6 +1370,13 @@ export interface UploadResponse {
readonly hash: string;
}
// From codersdk/workspaceagentportshare.go
export interface UpsertWorkspaceAgentPortShareRequest {
readonly agent_name: string;
readonly port: number;
readonly share_level: WorkspaceAgentPortShareLevel;
}
// From codersdk/users.go
export interface User {
readonly id: string;
@@ -1611,6 +1626,19 @@ export interface WorkspaceAgentMetadataResult {
readonly error: string;
}
// From codersdk/workspaceagentportshare.go
export interface WorkspaceAgentPortShare {
readonly workspace_id: string;
readonly agent_name: string;
readonly port: number;
readonly share_level: WorkspaceAgentPortShareLevel;
}
// From codersdk/workspaceagentportshare.go
export interface WorkspaceAgentPortShares {
readonly shares: WorkspaceAgentPortShare[];
}
// From codersdk/workspaceagents.go
export interface WorkspaceAgentScript {
readonly log_source_id: string;
@@ -1860,8 +1888,8 @@ export const Entitlements: Entitlement[] = [
];
// From codersdk/deployment.go
export type Experiment = "example";
export const Experiments: Experiment[] = ["example"];
export type Experiment = "example" | "shared-ports";
export const Experiments: Experiment[] = ["example", "shared-ports"];
// From codersdk/deployment.go
export type FeatureName =
@@ -1870,6 +1898,7 @@ export type FeatureName =
| "appearance"
| "audit_log"
| "browser_only"
| "control_shared_ports"
| "external_provisioner_daemons"
| "external_token_encryption"
| "high_availability"
@@ -1887,6 +1916,7 @@ export const FeatureNames: FeatureName[] = [
"appearance",
"audit_log",
"browser_only",
"control_shared_ports",
"external_provisioner_daemons",
"external_token_encryption",
"high_availability",
@@ -2148,6 +2178,14 @@ export const WorkspaceAgentLifecycles: WorkspaceAgentLifecycle[] = [
"starting",
];
// From codersdk/workspaceagentportshare.go
export type WorkspaceAgentPortShareLevel = "authenticated" | "owner" | "public";
export const WorkspaceAgentPortShareLevels: WorkspaceAgentPortShareLevel[] = [
"authenticated",
"owner",
"public",
];
// From codersdk/workspaceagents.go
export type WorkspaceAgentStartupScriptBehavior = "blocking" | "non-blocking";
export const WorkspaceAgentStartupScriptBehaviors: WorkspaceAgentStartupScriptBehavior[] =
@@ -48,6 +48,7 @@ const validFormValues: FormValues = {
update_workspace_dormant_at: false,
require_active_version: false,
disable_everyone_group_access: false,
max_port_share_level: "owner",
};
const renderTemplateSettingsPage = async () => {
+1
View File
@@ -489,6 +489,7 @@ export const MockTemplate: TypesGen.Template = {
require_active_version: false,
deprecated: false,
deprecation_message: "",
max_port_share_level: "owner",
};
export const MockTemplateVersionFiles: TemplateVersionFiles = {