From 8dfbf24d917224312f449d228db2b49a70ddf3ca Mon Sep 17 00:00:00 2001 From: Chuck Driesler Date: Thu, 13 Mar 2025 19:39:59 +0000 Subject: [PATCH] feat(workspaces): enable move project region (#4135) --- .../server/assets/workspacesCore/typedefs/regions.graphql | 2 ++ .../server/modules/workspaces/graph/resolvers/regions.ts | 4 ++-- .../workspaces/tests/integration/projects.graph.spec.ts | 3 ++- utils/helm/speckle-server/templates/_helpers.tpl | 3 +++ utils/helm/speckle-server/values.schema.json | 5 +++++ utils/helm/speckle-server/values.yaml | 2 ++ 6 files changed, 16 insertions(+), 3 deletions(-) diff --git a/packages/server/assets/workspacesCore/typedefs/regions.graphql b/packages/server/assets/workspacesCore/typedefs/regions.graphql index 2db19667b..34688e12d 100644 --- a/packages/server/assets/workspacesCore/typedefs/regions.graphql +++ b/packages/server/assets/workspacesCore/typedefs/regions.graphql @@ -21,4 +21,6 @@ extend type WorkspaceProjectMutations { - TODO: Eventually delete data in previous region """ moveToRegion(projectId: String!, regionKey: String!): String! + @hasServerRole(role: SERVER_ADMIN) + @hasStreamRole(role: STREAM_OWNER) } diff --git a/packages/server/modules/workspaces/graph/resolvers/regions.ts b/packages/server/modules/workspaces/graph/resolvers/regions.ts index 506a4ef3a..aefff525b 100644 --- a/packages/server/modules/workspaces/graph/resolvers/regions.ts +++ b/packages/server/modules/workspaces/graph/resolvers/regions.ts @@ -18,7 +18,7 @@ import { getAvailableRegionsFactory } from '@/modules/workspaces/services/regions' import { Roles } from '@speckle/shared' -import { getFeatureFlags, isTestEnv } from '@/modules/shared/helpers/envHelper' +import { getFeatureFlags } from '@/modules/shared/helpers/envHelper' import { WorkspacesNotYetImplementedError } from '@/modules/workspaces/errors/workspace' import { scheduleJob } from '@/modules/multiregion/services/queue' @@ -61,7 +61,7 @@ export default { }, WorkspaceProjectMutations: { moveToRegion: async (_parent, args, context) => { - if (!FF_MOVE_PROJECT_REGION_ENABLED && !isTestEnv()) { + if (!FF_MOVE_PROJECT_REGION_ENABLED) { throw new WorkspacesNotYetImplementedError() } diff --git a/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts b/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts index d9dd4dcf5..8673ffca6 100644 --- a/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts +++ b/packages/server/modules/workspaces/tests/integration/projects.graph.spec.ts @@ -522,7 +522,8 @@ isMultiRegionTestMode() const adminUser: BasicTestUser = { id: '', name: 'John Speckle', - email: createRandomEmail() + email: createRandomEmail(), + role: Roles.Server.Admin } const testWorkspace: SetOptional = { diff --git a/utils/helm/speckle-server/templates/_helpers.tpl b/utils/helm/speckle-server/templates/_helpers.tpl index 0407a297e..1e733bbed 100644 --- a/utils/helm/speckle-server/templates/_helpers.tpl +++ b/utils/helm/speckle-server/templates/_helpers.tpl @@ -572,6 +572,9 @@ Generate the environment variables for Speckle server and Speckle objects deploy - name: FF_WORKSPACES_NEW_PLANS_ENABLED value: {{ .Values.featureFlags.workspacesNewPlanEnabled | quote }} +- name: FF_MOVE_PROJECT_REGION_ENABLED + value: {{ .Values.featureFlags.moveProjectRegionEnabled | quote }} + {{- if .Values.featureFlags.workspacesModuleEnabled }} - name: LICENSE_TOKEN valueFrom: diff --git a/utils/helm/speckle-server/values.schema.json b/utils/helm/speckle-server/values.schema.json index e7891f70f..09b6e39ea 100644 --- a/utils/helm/speckle-server/values.schema.json +++ b/utils/helm/speckle-server/values.schema.json @@ -99,6 +99,11 @@ "type": "boolean", "description": "Toggles whether the new (Q1 2025) plans for workspaces are available. workspacesModuleEnabled must also be enabled for this to take effect.", "default": false + }, + "moveProjectRegionEnabled": { + "type": "boolean", + "description": "Enables the ability to move a project region (manually or automatically)", + "default": false } } }, diff --git a/utils/helm/speckle-server/values.yaml b/utils/helm/speckle-server/values.yaml index 48cdd0cb0..3b7476913 100644 --- a/utils/helm/speckle-server/values.yaml +++ b/utils/helm/speckle-server/values.yaml @@ -61,6 +61,8 @@ featureFlags: noPersonalEmailsEnabled: false ## @param featureFlags.workspacesNewPlanEnabled Toggles whether the new (Q1 2025) plans for workspaces are available. workspacesModuleEnabled must also be enabled for this to take effect. workspacesNewPlanEnabled: false + ## @param featureFlags.moveProjectRegionEnabled Enables the ability to move a project region (manually or automatically) + moveProjectRegionEnabled: false analytics: ## @param analytics.enabled Enable or disable analytics