From f06c49244f2d0738e545db80fee492647f858d22 Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Tue, 20 Feb 2024 16:30:07 +0000 Subject: [PATCH 1/3] refactor: move auto fill feature into an experiment --- coderd/apidoc/docs.go | 6 ++++-- coderd/apidoc/swagger.json | 8 ++++++-- codersdk/deployment.go | 5 +++-- docs/api/schemas.md | 9 +++++---- site/src/api/typesGenerated.ts | 8 ++++++-- .../CreateWorkspacePage/CreateWorkspacePage.tsx | 15 +++++++++------ 6 files changed, 33 insertions(+), 18 deletions(-) diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index ba528c74d6b46..0f8ed177ee257 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -9529,14 +9529,16 @@ const docTemplate = `{ "type": "string", "enum": [ "example", - "shared-ports" + "shared-ports", + "auto-fill-parameters" ], "x-enum-comments": { "ExperimentExample": "This isn't used for anything." }, "x-enum-varnames": [ "ExperimentExample", - "ExperimentSharedPorts" + "ExperimentSharedPorts", + "ExperimentAutoFillParameters" ] }, "codersdk.ExternalAuth": { diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index d09381cf743d1..fd002f6b6bbbd 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -8537,11 +8537,15 @@ }, "codersdk.Experiment": { "type": "string", - "enum": ["example", "shared-ports"], + "enum": ["example", "shared-ports", "auto-fill-parameters"], "x-enum-comments": { "ExperimentExample": "This isn't used for anything." }, - "x-enum-varnames": ["ExperimentExample", "ExperimentSharedPorts"] + "x-enum-varnames": [ + "ExperimentExample", + "ExperimentSharedPorts", + "ExperimentAutoFillParameters" + ] }, "codersdk.ExternalAuth": { "type": "object", diff --git a/codersdk/deployment.go b/codersdk/deployment.go index 63299e93136ef..dd580b6f85774 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2117,8 +2117,9 @@ type Experiment string const ( // Add new experiments here! - ExperimentExample Experiment = "example" // This isn't used for anything. - ExperimentSharedPorts Experiment = "shared-ports" + ExperimentExample Experiment = "example" // This isn't used for anything. + ExperimentSharedPorts Experiment = "shared-ports" + ExperimentAutoFillParameters Experiment = "auto-fill-parameters" ) // ExperimentsAll should include all experiments that are safe for diff --git a/docs/api/schemas.md b/docs/api/schemas.md index be5724e361159..7873500e85370 100644 --- a/docs/api/schemas.md +++ b/docs/api/schemas.md @@ -2917,10 +2917,11 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in #### Enumerated Values -| Value | -| -------------- | -| `example` | -| `shared-ports` | +| Value | +| ---------------------- | +| `example` | +| `shared-ports` | +| `auto-fill-parameters` | ## codersdk.ExternalAuth diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index 9c72b8c1c927a..51b0d066fdc50 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1889,8 +1889,12 @@ export const Entitlements: Entitlement[] = [ ]; // From codersdk/deployment.go -export type Experiment = "example" | "shared-ports"; -export const Experiments: Experiment[] = ["example", "shared-ports"]; +export type Experiment = "auto-fill-parameters" | "example" | "shared-ports"; +export const Experiments: Experiment[] = [ + "auto-fill-parameters", + "example", + "shared-ports", +]; // From codersdk/deployment.go export type FeatureName = diff --git a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx index 2136e6c3600cb..083ad01c7432d 100644 --- a/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx +++ b/site/src/pages/CreateWorkspacePage/CreateWorkspacePage.tsx @@ -26,6 +26,7 @@ import { paramsUsedToCreateWorkspace } from "utils/workspace"; import { CreateWorkspacePageView } from "./CreateWorkspacePageView"; import { CreateWSPermissions, createWorkspaceChecks } from "./permissions"; import { generateWorkspaceName } from "modules/workspaces/generateWorkspaceName"; +import { useDashboard } from "modules/dashboard/useDashboard"; export const createWorkspaceModes = ["form", "auto", "duplicate"] as const; export type CreateWorkspaceMode = (typeof createWorkspaceModes)[number]; @@ -40,6 +41,7 @@ const CreateWorkspacePage: FC = () => { const [searchParams, setSearchParams] = useSearchParams(); const mode = getWorkspaceMode(searchParams); const customVersionId = searchParams.get("version") ?? undefined; + const { experiments } = useDashboard(); const defaultName = searchParams.get("name"); @@ -51,12 +53,6 @@ const CreateWorkspacePage: FC = () => { const templateQuery = useQuery(templateByName(organizationId, templateName)); - const userParametersQuery = useQuery({ - queryKey: ["userParameters"], - queryFn: () => getUserParameters(templateQuery.data!.id), - enabled: templateQuery.isSuccess, - }); - const permissionsQuery = useQuery( checkAuthorization({ checks: createWorkspaceChecks(organizationId), @@ -97,6 +93,13 @@ const CreateWorkspacePage: FC = () => { [navigate], ); + // Auto fill parameters + const userParametersQuery = useQuery({ + queryKey: ["userParameters"], + queryFn: () => getUserParameters(templateQuery.data!.id), + enabled: + experiments.includes("auto-fill-parameters") && templateQuery.isSuccess, + }); const autofillParameters = getAutofillParameters( searchParams, userParametersQuery.data ? userParametersQuery.data : [], From 9f4a9495851076c3534264b61e919981958118e2 Mon Sep 17 00:00:00 2001 From: Bruno Quaresma Date: Wed, 21 Feb 2024 11:14:36 -0300 Subject: [PATCH 2/3] Update deployment.go --- codersdk/deployment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/codersdk/deployment.go b/codersdk/deployment.go index dd580b6f85774..4c1acb143df28 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2119,7 +2119,7 @@ const ( // Add new experiments here! ExperimentExample Experiment = "example" // This isn't used for anything. ExperimentSharedPorts Experiment = "shared-ports" - ExperimentAutoFillParameters Experiment = "auto-fill-parameters" + ExperimentAutoFillParameters Experiment = "auto-fill-parameters" // This should not be taken out of experiments until we have redesigned the feature. ) // ExperimentsAll should include all experiments that are safe for From 438439b729da9d72fa87534a277c356b3b2530ba Mon Sep 17 00:00:00 2001 From: BrunoQuaresma Date: Wed, 21 Feb 2024 14:40:55 +0000 Subject: [PATCH 3/3] Fix gen --- coderd/apidoc/docs.go | 1 + coderd/apidoc/swagger.json | 1 + 2 files changed, 2 insertions(+) diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index cd55755426eb8..a9202da505699 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -9681,6 +9681,7 @@ const docTemplate = `{ "auto-fill-parameters" ], "x-enum-comments": { + "ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.", "ExperimentExample": "This isn't used for anything." }, "x-enum-varnames": [ diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index 455b9fadd587f..5b7482ceb916b 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -8674,6 +8674,7 @@ "type": "string", "enum": ["example", "shared-ports", "auto-fill-parameters"], "x-enum-comments": { + "ExperimentAutoFillParameters": "This should not be taken out of experiments until we have redesigned the feature.", "ExperimentExample": "This isn't used for anything." }, "x-enum-varnames": [