From e7cac83c4ab74bed5e40377c242d0413ea49db52 Mon Sep 17 00:00:00 2001 From: Alaister Young Date: Thu, 25 Sep 2025 16:09:15 +0800 Subject: [PATCH] chore: limit regions for nimbus (#38747) * chore: limit regions for nimbus * fix logic * Autoselect east US if cloud provider is nimbus --------- Co-authored-by: Joshen Lim --- .../interfaces/ProjectCreation/ProjectCreation.utils.ts | 6 +++++- .../interfaces/ProjectCreation/RegionSelector.tsx | 8 +------- apps/studio/pages/new/[slug].tsx | 7 +++++-- packages/shared-data/regions.ts | 2 +- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/apps/studio/components/interfaces/ProjectCreation/ProjectCreation.utils.ts b/apps/studio/components/interfaces/ProjectCreation/ProjectCreation.utils.ts index 47d4233c51..64060ffc0b 100644 --- a/apps/studio/components/interfaces/ProjectCreation/ProjectCreation.utils.ts +++ b/apps/studio/components/interfaces/ProjectCreation/ProjectCreation.utils.ts @@ -15,8 +15,12 @@ export function getAvailableRegions(cloudProvider: CloudProvider): Region { switch (cloudProvider) { case 'AWS': case 'AWS_K8S': - case 'AWS_NIMBUS': return AWS_REGIONS + case 'AWS_NIMBUS': + // Only allow US East for Nimbus + return { + EAST_US: AWS_REGIONS.EAST_US, + } case 'FLY': return FLY_REGIONS default: diff --git a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx index afbee18af5..7e4eaeedc4 100644 --- a/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx +++ b/apps/studio/components/interfaces/ProjectCreation/RegionSelector.tsx @@ -45,13 +45,7 @@ export const RegionSelector = ({ ) const { data: availableRegionsData, isLoading: isLoadingAvailableRegions } = - useOrganizationAvailableRegionsQuery( - { - slug, - cloudProvider, - }, - { enabled: smartRegionEnabled } - ) + useOrganizationAvailableRegionsQuery({ slug, cloudProvider }, { enabled: smartRegionEnabled }) const smartRegions = availableRegionsData?.all.smartGroup ?? [] const allRegions = availableRegionsData?.all.specific ?? [] diff --git a/apps/studio/pages/new/[slug].tsx b/apps/studio/pages/new/[slug].tsx index c1c01b8478..2936e14012 100644 --- a/apps/studio/pages/new/[slug].tsx +++ b/apps/studio/pages/new/[slug].tsx @@ -66,7 +66,7 @@ import { } from 'lib/constants' import passwordStrength from 'lib/password-strength' import { generateStrongPassword } from 'lib/project' -import type { CloudProvider } from 'shared-data' +import { AWS_REGIONS, type CloudProvider } from 'shared-data' import type { NextPageWithLayout } from 'types' import { Badge, @@ -159,6 +159,7 @@ const Wizard: NextPageWithLayout = () => { const projectCreationDisabled = useFlag('disableProjectCreationAndUpdate') const showPostgresVersionSelector = useFlag('showPostgresVersionSelector') const cloudProviderEnabled = useFlag('enableFlyCloudProvider') + const { data: membersExceededLimit } = useFreeProjectLimitCheckQuery( { slug }, { enabled: isFreePlan } @@ -258,7 +259,9 @@ const Wizard: NextPageWithLayout = () => { const regionError = smartRegionEnabled ? availableRegionsError : defaultRegionError const defaultRegion = smartRegionEnabled ? availableRegionsData?.recommendations.smartGroup.name - : _defaultRegion + : defaultProvider === 'AWS_NIMBUS' + ? AWS_REGIONS.EAST_US.displayName + : _defaultRegion const { can: isAdmin } = useAsyncCheckPermissions(PermissionAction.CREATE, 'projects') diff --git a/packages/shared-data/regions.ts b/packages/shared-data/regions.ts index d38d8db339..51d59e0d91 100644 --- a/packages/shared-data/regions.ts +++ b/packages/shared-data/regions.ts @@ -1,5 +1,5 @@ export type CloudProvider = 'FLY' | 'AWS' | 'AWS_K8S' | 'AWS_NIMBUS' -export type Region = typeof AWS_REGIONS | typeof FLY_REGIONS +export type Region = Partial | Partial export const AWS_REGIONS = { WEST_US: {