diff --git a/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/create-db-cluster.e2e.ts b/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/create-db-cluster.e2e.ts index 31362260b7..879e5be689 100644 --- a/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/create-db-cluster.e2e.ts +++ b/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/create-db-cluster.e2e.ts @@ -222,7 +222,7 @@ test.describe('DB Cluster creation', () => { expect(addedCluster?.spec.engine.resources?.cpu.toString()).toBe('600m'); expect(addedCluster?.spec.engine.resources?.memory.toString()).toBe('1G'); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); // TODO commented, because we use only psmdb in this test // expect(addedCluster?.spec.proxy.replicas).toBe(1); // expect(addedCluster?.spec.proxy.resources.cpu).toBe('1'); diff --git a/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/errors-handling.e2e.ts b/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/errors-handling.e2e.ts index c050cc385e..3acd9a86a5 100644 --- a/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/errors-handling.e2e.ts +++ b/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/errors-handling.e2e.ts @@ -60,7 +60,7 @@ test.describe('DB Cluster creation', () => { await page.getByTestId('select-input-exposure-method').waitFor(); await page.getByTestId('select-exposure-method-button').click(); - await page.getByRole('option', { name: 'LoadBalancer' }).click(); + await page.getByRole('option', { name: 'Load balancer' }).click(); // Introduce an error on advanced configs step: two invalid IPs await page .getByTestId('text-input-source-ranges.0.source-range') diff --git a/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/steps/basic-information-step.ts b/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/steps/basic-information-step.ts index bfd5e681aa..0684e23a97 100644 --- a/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/steps/basic-information-step.ts +++ b/ui/apps/everest/.e2e/pr/db-cluster/db-wizard/create-db-cluster/steps/basic-information-step.ts @@ -15,7 +15,7 @@ import { Page, expect } from '@playwright/test'; -export const DEFAULT_CLUSTER_VERSION = '6.0.9-7'; +export const DEFAULT_CLUSTER_VERSION = '6.0.16-13'; export const basicInformationStepCheck = async ( page: Page, diff --git a/ui/apps/everest/.e2e/release/db-upgrade.e2e.ts b/ui/apps/everest/.e2e/release/db-upgrade.e2e.ts index 52c50faec1..6e1cd272a5 100644 --- a/ui/apps/everest/.e2e/release/db-upgrade.e2e.ts +++ b/ui/apps/everest/.e2e/release/db-upgrade.e2e.ts @@ -220,7 +220,7 @@ test.describe.configure({ retries: 0 }); '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/release/demand-backup.e2e.ts b/ui/apps/everest/.e2e/release/demand-backup.e2e.ts index c2c6854c88..c36f40f8b9 100644 --- a/ui/apps/everest/.e2e/release/demand-backup.e2e.ts +++ b/ui/apps/everest/.e2e/release/demand-backup.e2e.ts @@ -165,7 +165,7 @@ const zephyrMap: Record = { '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/release/init-deploy.e2e.ts b/ui/apps/everest/.e2e/release/init-deploy.e2e.ts index d1e5c53ba2..6ff0ebbdc7 100644 --- a/ui/apps/everest/.e2e/release/init-deploy.e2e.ts +++ b/ui/apps/everest/.e2e/release/init-deploy.e2e.ts @@ -214,9 +214,9 @@ const zephyrMap: Record = { ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); if (size === 3) { - expect(addedCluster?.spec.proxy.expose.type).toBe('external'); + expect(addedCluster?.spec.proxy.expose.type).toBe('LoadBalancer'); } else { - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); } if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); diff --git a/ui/apps/everest/.e2e/release/pitr.e2e.ts b/ui/apps/everest/.e2e/release/pitr.e2e.ts index 10d93aaf53..c9c480c65a 100644 --- a/ui/apps/everest/.e2e/release/pitr.e2e.ts +++ b/ui/apps/everest/.e2e/release/pitr.e2e.ts @@ -294,7 +294,7 @@ function getBackupStorage(): string { '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/release/psmdb-sharding.e2e.ts b/ui/apps/everest/.e2e/release/psmdb-sharding.e2e.ts index 21e2d3652a..b2ae22a33d 100644 --- a/ui/apps/everest/.e2e/release/psmdb-sharding.e2e.ts +++ b/ui/apps/everest/.e2e/release/psmdb-sharding.e2e.ts @@ -182,7 +182,7 @@ test.describe( '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/release/restore-new-cluster.e2e.ts b/ui/apps/everest/.e2e/release/restore-new-cluster.e2e.ts index 24552ce057..b8c4dec4df 100644 --- a/ui/apps/everest/.e2e/release/restore-new-cluster.e2e.ts +++ b/ui/apps/everest/.e2e/release/restore-new-cluster.e2e.ts @@ -175,7 +175,7 @@ function getNextScheduleMinute(incrementMinutes: number): string { '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/release/scheduled-backup.e2e.ts b/ui/apps/everest/.e2e/release/scheduled-backup.e2e.ts index f38ae2b6dd..980cb6632e 100644 --- a/ui/apps/everest/.e2e/release/scheduled-backup.e2e.ts +++ b/ui/apps/everest/.e2e/release/scheduled-backup.e2e.ts @@ -172,7 +172,7 @@ function getNextScheduleMinute(incrementMinutes: number): string { '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('1Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/release/storage-scaling.e2e.ts b/ui/apps/everest/.e2e/release/storage-scaling.e2e.ts index 1ae8e52ec1..882aaa5e87 100644 --- a/ui/apps/everest/.e2e/release/storage-scaling.e2e.ts +++ b/ui/apps/everest/.e2e/release/storage-scaling.e2e.ts @@ -147,7 +147,7 @@ test.describe.configure({ retries: 0 }); '1G' ); expect(addedCluster?.spec.engine.storage.size.toString()).toBe('2Gi'); - expect(addedCluster?.spec.proxy.expose.type).toBe('internal'); + expect(addedCluster?.spec.proxy.expose.type).toBe('ClusterIP'); if (db != 'psmdb') { expect(addedCluster?.spec.proxy.replicas).toBe(size); } diff --git a/ui/apps/everest/.e2e/utils/db-cluster.ts b/ui/apps/everest/.e2e/utils/db-cluster.ts index 377b382946..3c6a8ebb43 100644 --- a/ui/apps/everest/.e2e/utils/db-cluster.ts +++ b/ui/apps/everest/.e2e/utils/db-cluster.ts @@ -106,7 +106,7 @@ export const createDbClusterFn = async ( memory: `${customOptions?.proxyMemory || 1}G`, }, expose: { - type: customOptions?.externalAccess ? 'external' : 'internal', + type: customOptions?.externalAccess ? 'LoadBalancer' : 'ClusterIP', ...(!!customOptions?.externalAccess && customOptions?.sourceRanges && { ipSourceRanges: customOptions?.sourceRanges.flatMap((source) => diff --git a/ui/apps/everest/src/components/cluster-form/advanced-configuration/advanced-configuration.utils.ts b/ui/apps/everest/src/components/cluster-form/advanced-configuration/advanced-configuration.utils.ts index fea9e57c3d..2eeef70fa3 100644 --- a/ui/apps/everest/src/components/cluster-form/advanced-configuration/advanced-configuration.utils.ts +++ b/ui/apps/everest/src/components/cluster-form/advanced-configuration/advanced-configuration.utils.ts @@ -40,11 +40,32 @@ export const getParamsPlaceholderFromDbType = (dbType: DbType) => { return dynamicText; }; +export const mapDeprecatedExposeType = ( + type: string | undefined +): ProxyExposeType => { + if (type === 'internal') { + return ProxyExposeType.ClusterIP; + } + if (type === 'external') { + return ProxyExposeType.LoadBalancer; + } + if ( + type && + Object.values(ProxyExposeType).includes(type as ProxyExposeType) + ) { + return type as ProxyExposeType; + } + + return ProxyExposeType.ClusterIP; +}; + export const advancedConfigurationModalDefaultValues = ( dbCluster: DbCluster ): AdvancedConfigurationFormType => { const sourceRangesSource = dbCluster?.spec?.proxy?.expose?.ipSourceRanges; const lbConfigName = dbCluster?.spec?.proxy?.expose?.loadBalancerConfigName; + const exposeType = dbCluster?.spec?.proxy?.expose?.type; + const mappedExposeType = mapDeprecatedExposeType(exposeType); return { [AdvancedConfigurationFields.storageClass]: @@ -61,11 +82,10 @@ export const advancedConfigurationModalDefaultValues = ( [AdvancedConfigurationFields.podSchedulingPolicy]: dbCluster?.spec.podSchedulingPolicyName, [AdvancedConfigurationFields.loadBalancerConfigName]: - dbCluster?.spec?.proxy?.expose?.type === ProxyExposeType.LoadBalancer + mappedExposeType === ProxyExposeType.LoadBalancer ? lbConfigName || EMPTY_LOAD_BALANCER_CONFIGURATION : '', - [AdvancedConfigurationFields.exposureMethod]: - dbCluster?.spec?.proxy?.expose?.type || ProxyExposeType.ClusterIP, + [AdvancedConfigurationFields.exposureMethod]: mappedExposeType, [AdvancedConfigurationFields.splitHorizonDNSEnabled]: !!dbCluster?.spec.engineFeatures?.psmdb?.splitHorizonDnsConfigName, [AdvancedConfigurationFields.splitHorizonDNS]: diff --git a/ui/apps/everest/src/utils/db.tsx b/ui/apps/everest/src/utils/db.tsx index 0acd46e4f7..f4a0e47115 100644 --- a/ui/apps/everest/src/utils/db.tsx +++ b/ui/apps/everest/src/utils/db.tsx @@ -35,6 +35,7 @@ import { MIN_NUMBER_OF_SHARDS } from 'components/cluster-form'; import { Path, UseFormGetFieldState } from 'react-hook-form'; import cronConverter from './cron-converter'; import { EMPTY_LOAD_BALANCER_CONFIGURATION } from 'consts'; +import { mapDeprecatedExposeType } from 'components/cluster-form/advanced-configuration/advanced-configuration.utils'; export const dbTypeToIcon = (dbType: DbType) => { switch (dbType) { @@ -849,21 +850,26 @@ export const changeDbClusterResources = ( size: `${newResources.disk}${newResources.diskUnit}`, }, }, - proxy: getProxySpec( - dbEngineToDbType(dbCluster.spec.engine.type), - newResources.numberOfProxies.toString(), - '', - dbCluster.spec.proxy?.expose?.type || ProxyExposeType.ClusterIP, - newResources.proxyCpu, - newResources.proxyMemory, - !!sharding, - ((dbCluster.spec.proxy as Proxy)?.expose?.ipSourceRanges || []).map( - (sourceRange) => ({ sourceRange }) - ), - dbCluster.spec.proxy?.expose?.type === ProxyExposeType.LoadBalancer - ? dbCluster.spec.proxy?.expose?.loadBalancerConfigName - : undefined - ), + proxy: (() => { + const exposeType = dbCluster.spec.proxy?.expose?.type; + const mappedExposeType = mapDeprecatedExposeType(exposeType); + + return getProxySpec( + dbEngineToDbType(dbCluster.spec.engine.type), + newResources.numberOfProxies.toString(), + '', + mappedExposeType, + newResources.proxyCpu, + newResources.proxyMemory, + !!sharding, + ((dbCluster.spec.proxy as Proxy)?.expose?.ipSourceRanges || []).map( + (sourceRange) => ({ sourceRange }) + ), + mappedExposeType === ProxyExposeType.LoadBalancer + ? dbCluster.spec.proxy?.expose?.loadBalancerConfigName + : undefined + ); + })(), ...(dbCluster.spec.engine.type === DbEngineType.PSMDB && sharding && { sharding: {