Skip to content

Commit 55aa9d3

Browse files
Merge pull request #2133 from SanjalKatiyar/ss_create_fix
Fix StorageSystem Create page routing issue
2 parents 4f4a7de + 2c74788 commit 55aa9d3

File tree

5 files changed

+17
-98
lines changed

5 files changed

+17
-98
lines changed

packages/odf/components/create-storage-system/create-storage-system.tsx

Lines changed: 2 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,12 @@ import {
77
import { DEFAULT_INFRASTRUCTURE } from '@odf/shared/constants';
88
import { useK8sGet } from '@odf/shared/hooks/k8s-get-hook';
99
import { useK8sList } from '@odf/shared/hooks/useK8sList';
10-
import {
11-
InfrastructureModel,
12-
NamespaceModel,
13-
ODFStorageSystem,
14-
} from '@odf/shared/models';
10+
import { InfrastructureModel, NamespaceModel } from '@odf/shared/models';
1511
import { InfrastructureKind } from '@odf/shared/types';
1612
import { useCustomTranslation } from '@odf/shared/useCustomTranslationHook';
17-
import {
18-
getInfrastructurePlatform,
19-
referenceForModel,
20-
} from '@odf/shared/utils';
13+
import { getInfrastructurePlatform } from '@odf/shared/utils';
2114
import { useResolvedExtensions } from '@openshift-console/dynamic-plugin-sdk';
2215
import { Wizard, WizardStep } from '@patternfly/react-core/deprecated';
23-
import { useNavigate, useLocation } from 'react-router-dom-v5-compat';
2416
import { Steps, StepsName } from '../../constants';
2517
import { hasAnyExternalOCS, hasAnyInternalOCS } from '../../utils';
2618
import { createSteps } from './create-steps';
@@ -31,21 +23,6 @@ import { CreateStorageSystemHeader } from './header';
3123
import { initialState, reducer, WizardReducer } from './reducer';
3224
import './create-storage-system.scss';
3325

34-
const CREATE_SS_PAGE_URL = `/odf/resource/${referenceForModel(
35-
ODFStorageSystem
36-
)}/create/~new`;
37-
38-
export const RedirectStorageSystem: React.FC<{}> = () => {
39-
const navigate = useNavigate();
40-
const { pathname: url } = useLocation();
41-
42-
if (url !== CREATE_SS_PAGE_URL) {
43-
navigate(CREATE_SS_PAGE_URL, { replace: true });
44-
}
45-
46-
return null;
47-
};
48-
4926
const CreateStorageSystem: React.FC<{}> = () => {
5027
const { t } = useCustomTranslation();
5128
const [state, dispatch] = React.useReducer<WizardReducer>(

packages/odf/components/system-list/odf-system-list.tsx

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import * as React from 'react';
2-
import { LSO_OPERATOR } from '@odf/core/constants';
2+
import { LSO_OPERATOR, CREATE_SS_PAGE_URL } from '@odf/core/constants';
33
import { storageClusterResource } from '@odf/core/resources';
44
import { isCapacityAutoScalingAllowed } from '@odf/core/utils';
55
import {
@@ -16,18 +16,13 @@ import {
1616
import { useWatchStorageSystems } from '@odf/shared/hooks/useWatchStorageSystems';
1717
import { CustomKebabItem, Kebab } from '@odf/shared/kebab/kebab';
1818
import {
19-
ClusterServiceVersionModel,
2019
InfrastructureModel,
2120
ODFStorageSystem,
2221
StorageClusterModel,
2322
} from '@odf/shared/models';
2423
import { getName, getNamespace } from '@odf/shared/selectors';
2524
import { Status } from '@odf/shared/status/Status';
26-
import {
27-
ClusterServiceVersionKind,
28-
HumanizeResult,
29-
StorageSystemKind,
30-
} from '@odf/shared/types';
25+
import { HumanizeResult, StorageSystemKind } from '@odf/shared/types';
3126
import { useCustomTranslation } from '@odf/shared/useCustomTranslationHook';
3227
import {
3328
humanizeBinaryBytes,
@@ -378,18 +373,7 @@ const StorageSystemRow: React.FC<RowProps<StorageSystemKind, CustomData>> = ({
378373
);
379374
};
380375

381-
type StorageSystemListPageProps = {
382-
showTitle?: boolean;
383-
namespace?: string;
384-
selector?: any;
385-
hideLabelFilter?: boolean;
386-
hideNameLabelFilters?: boolean;
387-
hideColumnManagement?: boolean;
388-
};
389-
390-
export const StorageSystemListPage: React.FC<StorageSystemListPageProps> = ({
391-
selector,
392-
}) => {
376+
export const StorageSystemListPage: React.FC = () => {
393377
const { t } = useCustomTranslation();
394378

395379
const { odfNamespace, isODFNsLoaded, odfNsLoadError } =
@@ -432,21 +416,6 @@ export const StorageSystemListPage: React.FC<StorageSystemListPageProps> = ({
432416
const [storageClusters] = useK8sWatchResource<StorageClusterKind[]>(
433417
storageClusterResource
434418
);
435-
const [csv, csvLoaded, csvError] = useK8sWatchResource<
436-
ClusterServiceVersionKind[]
437-
>({
438-
kind: referenceForModel(ClusterServiceVersionModel),
439-
isList: true,
440-
selector,
441-
});
442-
443-
const odfCsvName: string =
444-
csvLoaded && !csvError
445-
? csv?.find((item) => getName(item)?.includes('odf-operator'))?.metadata
446-
?.name
447-
: null;
448-
449-
const createLink = `/k8s/ns/${odfNamespace}/operators.coreos.com~v1alpha1~ClusterServiceVersion/${odfCsvName}/odf.openshift.io~v1alpha1~StorageSystem/~new`;
450419

451420
const normalizedMetrics = React.useMemo(
452421
() => ({
@@ -471,8 +440,8 @@ export const StorageSystemListPage: React.FC<StorageSystemListPageProps> = ({
471440
return (
472441
<>
473442
<ListPageHeader title={t('StorageSystems')}>
474-
{odfCsvName && odfNamespace && (
475-
<ListPageCreateLink to={createLink}>
443+
{odfNamespace && (
444+
<ListPageCreateLink to={CREATE_SS_PAGE_URL}>
476445
{t('Create StorageSystem')}
477446
</ListPageCreateLink>
478447
)}

packages/odf/components/topology/Topology.tsx

Lines changed: 4 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,7 @@ import {
77
import { getStorageClusterInNs } from '@odf/core/utils';
88
import HandleErrorAndLoading from '@odf/shared/error-handler/ErrorStateHandler';
99
import { useDeepCompareMemoize } from '@odf/shared/hooks/deep-compare-memoize';
10-
import {
11-
ClusterServiceVersionModel,
12-
DeploymentModel,
13-
NodeModel,
14-
} from '@odf/shared/models';
10+
import { DeploymentModel, NodeModel } from '@odf/shared/models';
1511
import { getName, getUID } from '@odf/shared/selectors';
1612
import { BlueInfoCircleIcon } from '@odf/shared/status';
1713
import {
@@ -23,14 +19,12 @@ import {
2319
TopologyViewLevel,
2420
} from '@odf/shared/topology';
2521
import {
26-
ClusterServiceVersionKind,
2722
DeploymentKind,
2823
NodeKind,
2924
PodKind,
3025
StorageClusterKind,
3126
} from '@odf/shared/types';
3227
import { useCustomTranslation } from '@odf/shared/useCustomTranslationHook';
33-
import { referenceForModel } from '@odf/shared/utils';
3428
import {
3529
K8sResourceCommon,
3630
useK8sWatchResource,
@@ -60,7 +54,7 @@ import {
6054
defaultControlButtonsOptions,
6155
createTopologyControlButtons,
6256
} from '@patternfly/react-topology';
63-
import { cephStorageLabel } from '../../constants';
57+
import { cephStorageLabel, CREATE_SS_PAGE_URL } from '../../constants';
6458
import {
6559
nodeResource,
6660
odfDaemonSetResource,
@@ -652,23 +646,7 @@ const TopologyViewErrorMessage: React.FC<TopologyViewErrorMessageProps> = ({
652646
}) => {
653647
const { t } = useCustomTranslation();
654648

655-
const { odfNamespace, isNsSafe } = useODFNamespaceSelector();
656-
657-
const [csv, csvLoaded, csvError] = useSafeK8sWatchResource<
658-
ClusterServiceVersionKind[]
659-
>((ns: string) => ({
660-
kind: referenceForModel(ClusterServiceVersionModel),
661-
isList: true,
662-
namespace: ns,
663-
}));
664-
665-
const odfCsvName: string =
666-
csvLoaded && !csvError
667-
? csv?.find((item) => item?.metadata?.name?.includes('odf-operator'))
668-
?.metadata?.name
669-
: null;
670-
671-
const createLink = `/k8s/ns/${odfNamespace}/operators.coreos.com~v1alpha1~ClusterServiceVersion/${odfCsvName}/odf.openshift.io~v1alpha1~StorageSystem/~new`;
649+
const { isNsSafe } = useODFNamespaceSelector();
672650

673651
// If external mode cluster exists, we do not allow internal mode cluster creation (in case of multiple StorageSystem support)
674652
const hideCreateSSOption = (isExternalMode && !isInternalMode) || !isNsSafe;
@@ -685,7 +663,7 @@ const TopologyViewErrorMessage: React.FC<TopologyViewErrorMessageProps> = ({
685663
t('Set up a storage cluster to view the topology')}
686664
</EmptyStateBody>
687665
{!hideCreateSSOption && (
688-
<Link to={createLink}>{t('Create StorageSystem')} </Link>
666+
<Link to={CREATE_SS_PAGE_URL}>{t('Create StorageSystem')} </Link>
689667
)}
690668
</EmptyState>
691669
);

packages/odf/constants/common.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@ import {
33
ResourceProfileRequirementsMap,
44
} from '@odf/core/types';
55
import { DEFAULT_STORAGE_NAMESPACE } from '@odf/shared/constants';
6+
import { ODFStorageSystem } from '@odf/shared/models';
67
import { Toleration, Taint } from '@odf/shared/types';
8+
import { referenceForModel } from '@odf/shared/utils';
79
import { TFunction } from 'react-i18next';
810

911
export const CEPH_BRAND_NAME = 'Red Hat Ceph Storage';
@@ -109,3 +111,7 @@ export enum TimeUnits {
109111
HOUR = 'Hour',
110112
MIN = 'Min',
111113
}
114+
115+
export const CREATE_SS_PAGE_URL = `/odf/resource/${referenceForModel(
116+
ODFStorageSystem
117+
)}/create/~new`;

plugins/odf/console-extensions.json

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -108,17 +108,6 @@
108108
"required": ["ODF_MODEL"]
109109
}
110110
},
111-
{
112-
"type": "console.resource/create",
113-
"properties": {
114-
"model": {
115-
"group": "odf.openshift.io",
116-
"version": "v1alpha1",
117-
"kind": "StorageSystem"
118-
},
119-
"component": { "$codeRef": "wizard.RedirectStorageSystem" }
120-
}
121-
},
122111
{
123112
"type": "console.page/route",
124113
"properties": {

0 commit comments

Comments
 (0)