Skip to content

Commit

Permalink
fix: check psmdb version for sharding
Browse files Browse the repository at this point in the history
  • Loading branch information
fabio-silva committed Sep 23, 2024
1 parent efd5015 commit 67c00b3
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 23 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ export const Messages = {
dbName: 'E.g. postgresql-123',
},
disableShardingTooltip:
'Sharding cannot be disabled unless you pause the cluster',
'Sharding cannot be enabled unless PSMDB Operator version >= 1.17.0',
};
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,12 @@ import {
MenuItem,
Skeleton,
Stack,
Tooltip,
Typography,
} from '@mui/material';
import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined';
import { useCallback, useEffect, useState } from 'react';
import { lt, valid } from 'semver';
import { DbType } from '@percona/types';
import {
AutoCompleteInput,
Expand All @@ -47,17 +50,12 @@ import {
} from './utils.ts';
import { useDatabasePageDefaultValues } from '../../../useDatabaseFormDefaultValues.ts';
import { useNamespacePermissionsForResource } from 'hooks/rbac';
import { DbClusterStatus } from 'shared-types/dbCluster.types.ts';
import { useDBEnginesForNamespaces } from 'hooks/api/namespaces/useNamespaces.ts';

export const FirstStep = ({ loadingDefaultsForEdition }: StepProps) => {
const mode = useDatabasePageMode();
const {
dbClusterData,
defaultValues: {
[DbWizardFormFields.dbVersion]: defaultDbVersion,
[DbWizardFormFields.sharding]: defaultSharding,
},
defaultValues: { [DbWizardFormFields.dbVersion]: defaultDbVersion },
} = useDatabasePageDefaultValues(mode);
const { watch, setValue, getFieldState, resetField, getValues, trigger } =
useFormContext();
Expand All @@ -67,12 +65,6 @@ export const FirstStep = ({ loadingDefaultsForEdition }: StepProps) => {
const dbType: DbType = watch(DbWizardFormFields.dbType);
const dbVersion: DbType = watch(DbWizardFormFields.dbVersion);
const dbNamespace = watch(DbWizardFormFields.k8sNamespace);
const dbClusterStatus = dbClusterData?.status?.status;
const disableShardingChange =
loadingDefaultsForEdition ||
((mode === 'edit' || mode === 'restoreFromBackup') &&
defaultSharding &&
dbClusterStatus !== DbClusterStatus.paused);

const dbEnginesForNamespaces = useDBEnginesForNamespaces();
const dbEnginesFetching = dbEnginesForNamespaces.some(
Expand All @@ -90,6 +82,13 @@ export const FirstStep = ({ loadingDefaultsForEdition }: StepProps) => {
dbEngines.find((engine) => engine.type === dbEngine)
);

const notSupportedMongoOperatorVersionForSharding =
dbType === DbType.Mongo &&
!!valid(dbEngineData?.operatorVersion) &&
lt(dbEngineData?.operatorVersion || '', '1.17.0');
const disableSharding =
mode !== 'new' || notSupportedMongoOperatorVersionForSharding;

const setRandomDbName = useCallback(
(type: DbType) => {
setValue(DbWizardFormFields.dbName, `${type}-${generateShortUID()}`, {
Expand Down Expand Up @@ -372,7 +371,7 @@ export const FirstStep = ({ loadingDefaultsForEdition }: StepProps) => {
label={Messages.labels.shardedCluster}
name={DbWizardFormFields.sharding}
switchFieldProps={{
disabled: disableShardingChange,
disabled: disableSharding,
onChange: (e) => {
if (!e.target.checked) {
resetField(DbWizardFormFields.shardNr, {
Expand All @@ -385,15 +384,15 @@ export const FirstStep = ({ loadingDefaultsForEdition }: StepProps) => {
},
}}
/>
{/*{disableShardingChange && (*/}
{/* <Tooltip*/}
{/* title={Messages.disableShardingTooltip}*/}
{/* arrow*/}
{/* placement="right"*/}
{/* >*/}
{/* <InfoOutlinedIcon color="primary" />*/}
{/* </Tooltip>*/}
{/*)}*/}
{notSupportedMongoOperatorVersionForSharding && (
<Tooltip
title={Messages.disableShardingTooltip}
arrow
placement="right"
>
<InfoOutlinedIcon color="primary" />
</Tooltip>
)}
</Stack>
</>
)}
Expand Down

0 comments on commit 67c00b3

Please sign in to comment.