diff --git a/cli/templatecreate.go b/cli/templatecreate.go index 3d52b236fd299..c23f34dca5af5 100644 --- a/cli/templatecreate.go +++ b/cli/templatecreate.go @@ -49,18 +49,6 @@ func (r *RootCmd) templateCreate() *clibase.Cmd { isTemplateSchedulingOptionsSet := failureTTL != 0 || dormancyThreshold != 0 || dormancyAutoDeletion != 0 || maxTTL != 0 if isTemplateSchedulingOptionsSet || requireActiveVersion { - if failureTTL != 0 || dormancyThreshold != 0 || dormancyAutoDeletion != 0 { - // This call can be removed when workspace_actions is no longer experimental - experiments, exErr := client.Experiments(inv.Context()) - if exErr != nil { - return xerrors.Errorf("get experiments: %w", exErr) - } - - if !experiments.Enabled(codersdk.ExperimentWorkspaceActions) { - return xerrors.Errorf("--failure-ttl, --dormancy-threshold, and --dormancy-auto-deletion are experimental features. Use the workspace_actions CODER_EXPERIMENTS flag to set these configuration values.") - } - } - entitlements, err := client.Entitlements(inv.Context()) if cerr, ok := codersdk.AsError(err); ok && cerr.StatusCode() == http.StatusNotFound { return xerrors.Errorf("your deployment appears to be an AGPL deployment, so you cannot set enterprise-only flags") diff --git a/cli/templateedit.go b/cli/templateedit.go index 099f31027ac8a..8c5ace25c5855 100644 --- a/cli/templateedit.go +++ b/cli/templateedit.go @@ -47,18 +47,6 @@ func (r *RootCmd) templateEdit() *clibase.Cmd { ), Short: "Edit the metadata of a template by name.", Handler: func(inv *clibase.Invocation) error { - // This clause can be removed when workspace_actions is no longer experimental - if failureTTL != 0 || dormancyThreshold != 0 || dormancyAutoDeletion != 0 { - experiments, exErr := client.Experiments(inv.Context()) - if exErr != nil { - return xerrors.Errorf("get experiments: %w", exErr) - } - - if !experiments.Enabled(codersdk.ExperimentWorkspaceActions) { - return xerrors.Errorf("--failure-ttl, --dormancy-threshold, and --dormancy-auto-deletion are experimental features. Use the workspace_actions CODER_EXPERIMENTS flag to set these configuration values.") - } - } - unsetAutostopRequirementDaysOfWeek := len(autostopRequirementDaysOfWeek) == 1 && autostopRequirementDaysOfWeek[0] == "none" requiresScheduling := (len(autostopRequirementDaysOfWeek) > 0 && !unsetAutostopRequirementDaysOfWeek) || autostopRequirementWeeks > 0 || diff --git a/coderd/apidoc/docs.go b/coderd/apidoc/docs.go index 100607bf662fb..b3f90cfa06b09 100644 --- a/coderd/apidoc/docs.go +++ b/coderd/apidoc/docs.go @@ -9108,11 +9108,9 @@ const docTemplate = `{ "codersdk.Experiment": { "type": "string", "enum": [ - "workspace_actions", "deployment_health_page" ], "x-enum-varnames": [ - "ExperimentWorkspaceActions", "ExperimentDeploymentHealthPage" ] }, diff --git a/coderd/apidoc/swagger.json b/coderd/apidoc/swagger.json index ad44650928537..d517185ec2218 100644 --- a/coderd/apidoc/swagger.json +++ b/coderd/apidoc/swagger.json @@ -8153,11 +8153,8 @@ }, "codersdk.Experiment": { "type": "string", - "enum": ["workspace_actions", "deployment_health_page"], - "x-enum-varnames": [ - "ExperimentWorkspaceActions", - "ExperimentDeploymentHealthPage" - ] + "enum": ["deployment_health_page"], + "x-enum-varnames": ["ExperimentDeploymentHealthPage"] }, "codersdk.ExternalAuth": { "type": "object", diff --git a/coderd/database/models.go b/coderd/database/models.go index e8c8ae2c31e50..cf9d8caaaea48 100644 --- a/coderd/database/models.go +++ b/coderd/database/models.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.24.0 +// sqlc v1.25.0 package database diff --git a/coderd/database/querier.go b/coderd/database/querier.go index 3d2631c49f65f..e32c106787a13 100644 --- a/coderd/database/querier.go +++ b/coderd/database/querier.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.24.0 +// sqlc v1.25.0 package database diff --git a/coderd/database/queries.sql.go b/coderd/database/queries.sql.go index 81bbe52386cf9..f9287915d5438 100644 --- a/coderd/database/queries.sql.go +++ b/coderd/database/queries.sql.go @@ -1,6 +1,6 @@ // Code generated by sqlc. DO NOT EDIT. // versions: -// sqlc v1.24.0 +// sqlc v1.25.0 package database diff --git a/codersdk/deployment.go b/codersdk/deployment.go index ce80e32622167..2f4da0675c120 100644 --- a/codersdk/deployment.go +++ b/codersdk/deployment.go @@ -2077,9 +2077,6 @@ func (c *Client) BuildInfo(ctx context.Context) (BuildInfoResponse, error) { type Experiment string const ( - // https://github.com/coder/coder/milestone/19 - ExperimentWorkspaceActions Experiment = "workspace_actions" - // Deployment health page ExperimentDeploymentHealthPage Experiment = "deployment_health_page" diff --git a/docs/api/general.md b/docs/api/general.md index f82c4aaeb3a63..2ca0a6c5d9873 100644 --- a/docs/api/general.md +++ b/docs/api/general.md @@ -563,7 +563,7 @@ curl -X GET http://coder-server:8080/api/v2/experiments \ > 200 Response ```json -["workspace_actions"] +["deployment_health_page"] ``` ### Responses @@ -600,7 +600,7 @@ curl -X GET http://coder-server:8080/api/v2/experiments/available \ > 200 Response ```json -["workspace_actions"] +["deployment_health_page"] ``` ### Responses diff --git a/docs/api/schemas.md b/docs/api/schemas.md index e63452bd15134..a93f5cfc1d9ba 100644 --- a/docs/api/schemas.md +++ b/docs/api/schemas.md @@ -2869,7 +2869,7 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in ## codersdk.Experiment ```json -"workspace_actions" +"deployment_health_page" ``` ### Properties @@ -2878,7 +2878,6 @@ AuthorizationObject can represent a "set" of objects, such as: all workspaces in | Value | | ------------------------ | -| `workspace_actions` | | `deployment_health_page` | ## codersdk.ExternalAuth diff --git a/enterprise/cli/templatecreate_test.go b/enterprise/cli/templatecreate_test.go index 9499810b7df3a..6803ad394033e 100644 --- a/enterprise/cli/templatecreate_test.go +++ b/enterprise/cli/templatecreate_test.go @@ -62,11 +62,6 @@ func TestTemplateCreate(t *testing.T) { t.Run("WorkspaceCleanup", func(t *testing.T) { t.Parallel() - dv := coderdtest.DeploymentValues(t) - dv.Experiments = []string{ - string(codersdk.ExperimentWorkspaceActions), - } - client, user := coderdenttest.New(t, &coderdenttest.Options{ LicenseOptions: &coderdenttest.LicenseOptions{ Features: license.Features{ @@ -74,7 +69,6 @@ func TestTemplateCreate(t *testing.T) { }, }, Options: &coderdtest.Options{ - DeploymentValues: dv, IncludeProvisionerDaemon: true, }, }) diff --git a/enterprise/cli/templateedit_test.go b/enterprise/cli/templateedit_test.go index 36b17e23d2119..75417196a6b8f 100644 --- a/enterprise/cli/templateedit_test.go +++ b/enterprise/cli/templateedit_test.go @@ -89,11 +89,6 @@ func TestTemplateEdit(t *testing.T) { t.Run("WorkspaceCleanup", func(t *testing.T) { t.Parallel() - dv := coderdtest.DeploymentValues(t) - dv.Experiments = []string{ - string(codersdk.ExperimentWorkspaceActions), - } - ownerClient, owner := coderdenttest.New(t, &coderdenttest.Options{ LicenseOptions: &coderdenttest.LicenseOptions{ Features: license.Features{ @@ -101,7 +96,6 @@ func TestTemplateEdit(t *testing.T) { }, }, Options: &coderdtest.Options{ - DeploymentValues: dv, IncludeProvisionerDaemon: true, }, }) diff --git a/site/src/api/typesGenerated.ts b/site/src/api/typesGenerated.ts index da9e0c733ee73..be677e07d58d7 100644 --- a/site/src/api/typesGenerated.ts +++ b/site/src/api/typesGenerated.ts @@ -1813,11 +1813,8 @@ export const Entitlements: Entitlement[] = [ ]; // From codersdk/deployment.go -export type Experiment = "deployment_health_page" | "workspace_actions"; -export const Experiments: Experiment[] = [ - "deployment_health_page", - "workspace_actions", -]; +export type Experiment = "deployment_health_page"; +export const Experiments: Experiment[] = ["deployment_health_page"]; // From codersdk/deployment.go export type FeatureName = diff --git a/site/src/components/Dashboard/DashboardProvider.tsx b/site/src/components/Dashboard/DashboardProvider.tsx index ae05ff0ae7447..7fcefb173eccf 100644 --- a/site/src/components/Dashboard/DashboardProvider.tsx +++ b/site/src/components/Dashboard/DashboardProvider.tsx @@ -113,11 +113,6 @@ export const useDashboard = (): DashboardProviderValue => { }; export const useIsWorkspaceActionsEnabled = (): boolean => { - const { entitlements, experiments } = useDashboard(); - const allowAdvancedScheduling = - entitlements.features["advanced_template_scheduling"].enabled; - // This check can be removed when https://github.com/coder/coder/milestone/19 - // is merged up - const allowWorkspaceActions = experiments.includes("workspace_actions"); - return allowWorkspaceActions && allowAdvancedScheduling; + const { entitlements } = useDashboard(); + return entitlements.features["advanced_template_scheduling"].enabled; }; diff --git a/site/src/components/WorkspaceDeletion/DormantDeletionText.tsx b/site/src/components/WorkspaceDeletion/DormantDeletionText.tsx index f6b1d393bb7f5..924fc59cb47d9 100644 --- a/site/src/components/WorkspaceDeletion/DormantDeletionText.tsx +++ b/site/src/components/WorkspaceDeletion/DormantDeletionText.tsx @@ -10,20 +10,13 @@ interface DormantDeletionTextProps { export const DormantDeletionText: FC = ({ workspace, }) => { - const { entitlements, experiments } = useDashboard(); + const { entitlements } = useDashboard(); const allowAdvancedScheduling = entitlements.features["advanced_template_scheduling"].enabled; // This check can be removed when https://github.com/coder/coder/milestone/19 // is merged up - const allowWorkspaceActions = experiments.includes("workspace_actions"); - if ( - !displayDormantDeletion( - workspace, - allowAdvancedScheduling, - allowWorkspaceActions, - ) - ) { + if (!displayDormantDeletion(workspace, allowAdvancedScheduling)) { return null; } diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx index 89f26cc5d451e..b2326ad543f41 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateScheduleForm.tsx @@ -54,7 +54,6 @@ export interface TemplateScheduleForm { isSubmitting: boolean; error?: unknown; allowAdvancedScheduling: boolean; - allowWorkspaceActions: boolean; // Helpful to show field errors on Storybook initialTouched?: FormikTouched; } @@ -65,7 +64,6 @@ export const TemplateScheduleForm: FC = ({ onCancel, error, allowAdvancedScheduling, - allowWorkspaceActions, isSubmitting, initialTouched, }) => { @@ -562,7 +560,7 @@ export const TemplateScheduleForm: FC = ({ - {allowAdvancedScheduling && allowWorkspaceActions && ( + {allowAdvancedScheduling && ( <> { jest .spyOn(API, "getEntitlements") .mockResolvedValue(MockEntitlementsWithScheduling); - - // remove when https://github.com/coder/coder/milestone/19 is completed. - jest.spyOn(API, "getExperiments").mockResolvedValue(["workspace_actions"]); }); it("Calls the API when user fills in and submits a form", async () => { diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx index d91600361b205..65a2b885719ee 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePage.tsx @@ -18,12 +18,9 @@ const TemplateSchedulePage: FC = () => { const queryClient = useQueryClient(); const orgId = useOrganizationId(); const { template } = useTemplateSettings(); - const { entitlements, experiments } = useDashboard(); + const { entitlements } = useDashboard(); const allowAdvancedScheduling = entitlements.features["advanced_template_scheduling"].enabled; - // This check can be removed when https://github.com/coder/coder/milestone/19 - // is merged up - const allowWorkspaceActions = experiments.includes("workspace_actions"); const { clearLocal } = useLocalStorage(); const { @@ -52,7 +49,6 @@ const TemplateSchedulePage: FC = () => { ; const defaultArgs = { allowAdvancedScheduling: true, - allowWorkspaceActions: true, template: MockTemplate, onSubmit: action("onSubmit"), onCancel: action("cancel"), diff --git a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx index 5ce8fd3eee5fb..8ad9c4d1391d4 100644 --- a/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx +++ b/site/src/pages/TemplateSettingsPage/TemplateSchedulePage/TemplateSchedulePageView.tsx @@ -13,7 +13,6 @@ export interface TemplateSchedulePageViewProps { typeof TemplateScheduleForm >["initialTouched"]; allowAdvancedScheduling: boolean; - allowWorkspaceActions: boolean; } export const TemplateSchedulePageView: FC = ({ @@ -22,7 +21,6 @@ export const TemplateSchedulePageView: FC = ({ onSubmit, isSubmitting, allowAdvancedScheduling, - allowWorkspaceActions, submitError, initialTouched, }) => { @@ -34,7 +32,6 @@ export const TemplateSchedulePageView: FC = ({ = { parameters: { layout: "fullscreen", features: ["advanced_template_scheduling"], - experiments: ["workspace_actions"], }, }; diff --git a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx index 375e47a22b039..b25ef4cae1b99 100644 --- a/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx +++ b/site/src/pages/WorkspacePage/WorkspaceTopbar.tsx @@ -88,16 +88,14 @@ export const WorkspaceTopbar = (props: WorkspaceProps) => { }); // Dormant - const { entitlements, experiments } = useDashboard(); + const { entitlements } = useDashboard(); const allowAdvancedScheduling = entitlements.features["advanced_template_scheduling"].enabled; // This check can be removed when https://github.com/coder/coder/milestone/19 // is merged up - const allowWorkspaceActions = experiments.includes("workspace_actions"); const shouldDisplayDormantData = displayDormantDeletion( workspace, allowAdvancedScheduling, - allowWorkspaceActions, ); return ( diff --git a/site/src/testHelpers/entities.ts b/site/src/testHelpers/entities.ts index 51f2d7f7d87cf..0e4d613b61fd2 100644 --- a/site/src/testHelpers/entities.ts +++ b/site/src/testHelpers/entities.ts @@ -2047,7 +2047,9 @@ export const MockEntitlementsWithUserLimit: TypesGen.Entitlements = { }), }; -export const MockExperiments: TypesGen.Experiment[] = ["workspace_actions"]; +export const MockExperiments: TypesGen.Experiment[] = [ + "deployment_health_page", +]; export const MockAuditLog: TypesGen.AuditLog = { id: "fbd2116a-8961-4954-87ae-e4575bd29ce0", diff --git a/site/src/utils/dormant.test.ts b/site/src/utils/dormant.test.ts index ae02ef017690c..babbb5ef6940b 100644 --- a/site/src/utils/dormant.test.ts +++ b/site/src/utils/dormant.test.ts @@ -4,53 +4,39 @@ import { displayDormantDeletion } from "./dormant"; describe("displayDormantDeletion", () => { const today = new Date(); - it.each<[string, boolean, boolean, boolean]>([ + it.each<[string, boolean, boolean]>([ [ new Date(new Date().setDate(today.getDate() + 15)).toISOString(), true, - true, false, ], // today + 15 days out [ new Date(new Date().setDate(today.getDate() + 14)).toISOString(), true, true, - true, ], // today + 14 [ new Date(new Date().setDate(today.getDate() + 13)).toISOString(), true, true, - true, ], // today + 13 [ new Date(new Date().setDate(today.getDate() + 1)).toISOString(), true, true, - true, ], // today + 1 - [new Date().toISOString(), true, true, true], // today + 0 - [new Date().toISOString(), false, true, false], // Advanced Scheduling off - [new Date().toISOString(), true, false, false], // Workspace Actions off + [new Date().toISOString(), true, true], // today + 0 + [new Date().toISOString(), false, false], // Advanced Scheduling off ])( - `deleting_at=%p, allowAdvancedScheduling=%p, AllowWorkspaceActions=%p, shouldDisplay=%p`, - ( - deleting_at, - allowAdvancedScheduling, - allowWorkspaceActions, - shouldDisplay, - ) => { + `deleting_at=%p, allowAdvancedScheduling=%p, shouldDisplay=%p`, + (deleting_at, allowAdvancedScheduling, shouldDisplay) => { const workspace: TypesGen.Workspace = { ...Mocks.MockWorkspace, deleting_at, }; - expect( - displayDormantDeletion( - workspace, - allowAdvancedScheduling, - allowWorkspaceActions, - ), - ).toBe(shouldDisplay); + expect(displayDormantDeletion(workspace, allowAdvancedScheduling)).toBe( + shouldDisplay, + ); }, ); }); diff --git a/site/src/utils/dormant.ts b/site/src/utils/dormant.ts index 14ac74f4a00bd..1265647878a82 100644 --- a/site/src/utils/dormant.ts +++ b/site/src/utils/dormant.ts @@ -14,14 +14,9 @@ const IMPENDING_DELETION_DISPLAY_THRESHOLD = 14; // 14 days export const displayDormantDeletion = ( workspace: Workspace, allowAdvancedScheduling: boolean, - allowWorkspaceActions: boolean, ) => { const today = new Date(); - if ( - !workspace.deleting_at || - !allowAdvancedScheduling || - !allowWorkspaceActions - ) { + if (!workspace.deleting_at || !allowAdvancedScheduling) { return false; } return ( pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy