Skip to content

Commit

Permalink
Merge pull request #9816 from GowthamShanmugam/fix_pool_menu_action
Browse files Browse the repository at this point in the history
Bug 1996116: Disabling pool dashboard menu actions for default pool, external cluster and for deletion timestamp
  • Loading branch information
openshift-merge-robot committed Aug 25, 2021
2 parents c317d06 + 1cb7727 commit 95f8576
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 14 deletions.
Expand Up @@ -6,8 +6,11 @@ import { useLocation } from 'react-router-dom';
import { referenceForModel } from '@console/internal/module/k8s/k8s';
import { DetailsPage } from '@console/internal/components/factory';
import { navFactory, ResourceIcon } from '@console/internal/components/utils';
import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';

import { menuActionCreator } from './block-pool-menu-action';
import { CephClusterKind } from '../../types';
import { cephClusterResource } from '../../resources';
import { BlockPoolDashboard } from '../dashboards/block-pool/block-pool-dashboard';
import { CEPH_STORAGE_NAMESPACE } from '../../constants';
import { CephBlockPoolModel } from '../../models';
Expand All @@ -28,6 +31,8 @@ const BlockPoolDetailsPage: React.FC<BlockPoolDetailsPagePros> = (props) => {
const location = useLocation();
const kind = referenceForModel(CephBlockPoolModel);

const [cephClusters] = useK8sWatchResource<CephClusterKind[]>(cephClusterResource);

// Overview page and YAML page
const pagesFor = React.useCallback(
() => [
Expand Down Expand Up @@ -66,9 +71,9 @@ const BlockPoolDetailsPage: React.FC<BlockPoolDetailsPagePros> = (props) => {
kindObj={CephBlockPoolModel}
menuActions={menuActionCreator}
pagesFor={pagesFor}
customData={{ tFunction: t }}
breadcrumbsFor={breadcrumbs}
icon={() => <BlockPoolIcon name={poolName} kind={kind} />}
customData={{ tFunction: t, cephCluster: cephClusters?.[0] }}
/>
);
};
Expand Down
Expand Up @@ -19,14 +19,13 @@ import { PrometheusEndpoint } from '@console/internal/components/graphs/helpers'
import { StorageClassModel } from '@console/internal/models';
import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';

import { menuActions } from './block-pool-menu-action';
import { menuActions, disableMenuAction } from './block-pool-menu-action';
import { healthStateMapping } from '../dashboards/block-pool/states';
import { CephBlockPoolModel } from '../../models';
import { StoragePoolKind, OcsStorageClassKind, CephClusterKind } from '../../types';
import { CEPH_STORAGE_NAMESPACE, CEPH_EXTERNAL_CR_NAME } from '../../constants';
import { CEPH_STORAGE_NAMESPACE } from '../../constants';
import {
BlockPoolColumnInfo,
isDefaultPool,
getScNamesUsingPool,
getPerPoolMetrics,
} from '../../utils/block-pool';
Expand Down Expand Up @@ -203,11 +202,7 @@ const BlockPoolTableRow: React.FC<RowFunctionArgs<StoragePoolKind>> = ({ obj, cu
actions={menuActions}
kind={referenceFor(obj)}
resource={obj}
isDisabled={
obj?.metadata?.deletionTimestamp ||
props?.cephCluster?.metadata?.name === CEPH_EXTERNAL_CR_NAME ||
isDefaultPool(obj)
}
isDisabled={disableMenuAction(obj, props?.cephCluster)}
customData={{ tFunction: t }}
/>
</TableData>
Expand Down
Expand Up @@ -3,9 +3,16 @@ import { TFunction } from 'i18next';
import { asAccessReview } from '@console/internal/components/utils';
import { K8sKind } from '@console/internal/module/k8s';

import { StoragePoolKind } from '../../types';
import { StoragePoolKind, CephClusterKind } from '../../types';
import { updateBlockPoolModal } from '../modals/block-pool-modal/update-block-pool-modal';
import { deleteBlockPoolModal } from '../modals/block-pool-modal/delete-block-pool-modal';
import { CEPH_EXTERNAL_CR_NAME } from '../../constants';
import { isDefaultPool } from '../../utils/block-pool';

export const disableMenuAction = (blockPoolConfig: StoragePoolKind, cephCluster: CephClusterKind) =>
blockPoolConfig?.metadata?.deletionTimestamp ||
cephCluster?.metadata?.name === CEPH_EXTERNAL_CR_NAME ||
isDefaultPool(blockPoolConfig);

const editBlockPool = (kindObj: K8sKind, blockPoolConfig: StoragePoolKind, _, customData) => {
const t: TFunction = customData?.tFunction;
Expand All @@ -32,4 +39,8 @@ export const menuActionCreator = (
blockPoolConfig: StoragePoolKind,
resource?: any,
customData?: any,
) => menuActions.map((action) => action(kindObj, blockPoolConfig, resource, customData));
) => {
if (!disableMenuAction(blockPoolConfig, customData?.cephCluster))
return menuActions.map((action) => action(kindObj, blockPoolConfig, resource, customData));
return [];
};
Expand Up @@ -12,8 +12,8 @@ import {
} from '@patternfly/react-icons';

import { StoragePoolKind, OcsStorageClassKind } from '../types';
import { CephBlockPoolModel } from '../models';
import { CEPH_STORAGE_NAMESPACE, OCS_INTERNAL_CR_NAME } from '../constants/index';
import { CephBlockPoolModel, OCSServiceModel } from '../models';
import { CEPH_STORAGE_NAMESPACE } from '../constants/index';
import { COMPRESSION_ON, ROOK_MODEL, POOL_PROGRESS } from '../constants/storage-pool-const';

export const LoadingComponent: React.FC = () => {
Expand Down Expand Up @@ -208,7 +208,7 @@ export const FooterPrimaryActions = (t: TFunction) => ({

export const isDefaultPool = (blockPoolConfig: StoragePoolKind): boolean =>
!!blockPoolConfig?.metadata.ownerReferences?.find(
(ownerReference) => ownerReference.name === OCS_INTERNAL_CR_NAME,
(ownerReference) => ownerReference.kind === OCSServiceModel.kind,
);

export const BlockPoolColumnInfo = (t: TFunction) => ({
Expand Down

0 comments on commit 95f8576

Please sign in to comment.