Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -134,14 +134,6 @@ export const useConsoleDataViewData = <
return filteredData;
}

if (typeof sortColumn.props.sort === 'string') {
return filteredData.sort(
sortResourceByValue(sortDirection, (obj) =>
_.get(obj, (sortColumn.props.sort as unknown) as string, ''),
),
);
}

if (typeof sortColumn.sortFunction === 'string') {
return filteredData.sort(
sortResourceByValue(sortDirection, (obj) => _.get(obj, sortColumn.sortFunction as string)),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import type { VolumeSnapshotContentKind } from '@console/internal/module/k8s';
import { referenceForModel } from '@console/internal/module/k8s';
import PaneBody from '@console/shared/src/components/layout/PaneBody';
import { Status } from '@console/shared/src/components/status/Status';
import { volumeSnapshotStatus } from '../../status';
import { snapshotStatus } from '@console/shared/src/sorts/snapshot';

const { editYaml, events } = navFactory;

Expand All @@ -43,7 +43,7 @@ const Details: FC<DetailsProps> = ({ obj }) => {
<DescriptionListGroup>
<DescriptionListTerm>{t('console-app~Status')}</DescriptionListTerm>
<DescriptionListDescription>
<Status status={volumeSnapshotStatus(obj)} />
<Status status={snapshotStatus(obj)} />
</DescriptionListDescription>
</DescriptionListGroup>
</ResourceSummary>
Expand Down Expand Up @@ -113,7 +113,7 @@ const VolumeSnapshotContentDetailsPage: FC<DetailsPageProps> = (props) => {
editYaml(),
events(ResourceEventStream),
];
return <DetailsPage {...props} getResourceStatus={volumeSnapshotStatus} pages={pages} />;
return <DetailsPage {...props} getResourceStatus={snapshotStatus} pages={pages} />;
};

type DetailsProps = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,8 @@ import {
ListPageCreate,
ListPageHeader,
} from '@console/dynamic-plugin-sdk/src/lib-core';
import { sorts } from '@console/internal/components/factory/table';
import { sortResourceByValue } from '@console/internal/components/factory/Table/sort';
import type { PageComponentProps } from '@console/internal/components/utils/horizontal-nav';
import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';
import { ResourceLink } from '@console/internal/components/utils/resource-link';
Expand All @@ -30,7 +32,7 @@ import { Timestamp } from '@console/shared/src/components/datetime/Timestamp';
import { LoadingBox } from '@console/shared/src/components/loading/LoadingBox';
import { Status } from '@console/shared/src/components/status/Status';
import { DASH } from '@console/shared/src/constants/ui';
import { volumeSnapshotStatus } from '../../status';
import { snapshotStatus } from '@console/shared/src/sorts/snapshot';

const kind = referenceForModel(VolumeSnapshotContentModel);

Expand Down Expand Up @@ -59,7 +61,7 @@ const getDataViewRows: GetDataViewRows<VolumeSnapshotContentKind> = (data, colum
props: getNameCellProps(name),
},
[tableColumnInfo[1].id]: {
cell: <Status status={volumeSnapshotStatus(obj)} />,
cell: <Status status={snapshotStatus(obj)} />,
},
[tableColumnInfo[2].id]: {
cell: sizeMetrics,
Expand Down Expand Up @@ -115,13 +117,15 @@ const useVolumeSnapshotContentColumns = (): TableColumn<VolumeSnapshotContentKin
},
{
title: t('console-app~Status'),
sort: 'snapshotStatus',
sort: (data, direction) =>
data.sort(sortResourceByValue(direction, sorts.volumeSnapshotStatus)),
id: tableColumnInfo[1].id,
props: { modifier: 'nowrap' },
},
{
title: t('console-app~Size'),
sort: 'volumeSnapshotSize',
sort: (data, direction) =>
data.sort(sortResourceByValue(direction, sorts.volumeSnapshotContentSize)),
id: tableColumnInfo[2].id,
props: { modifier: 'nowrap' },
},
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,7 @@ import PaneBody from '@console/shared/src/components/layout/PaneBody';
import { Status } from '@console/shared/src/components/status/Status';
import { FLAGS } from '@console/shared/src/constants/common';
import { useFlag } from '@console/shared/src/hooks/useFlag';
import { snapshotSource } from '@console/shared/src/sorts/snapshot';
import { volumeSnapshotStatus } from '../../status';
import { snapshotSource, snapshotStatus } from '@console/shared/src/sorts/snapshot';

const { editYaml, events } = navFactory;

Expand Down Expand Up @@ -59,7 +58,7 @@ const Details: FC<DetailsProps> = ({ obj }) => {
<DescriptionListGroup>
<DescriptionListTerm>{t('console-app~Status')}</DescriptionListTerm>
<DescriptionListDescription>
<Status status={volumeSnapshotStatus(obj)} />
<Status status={snapshotStatus(obj)} />
</DescriptionListDescription>
</DescriptionListGroup>
</ResourceSummary>
Expand Down Expand Up @@ -143,7 +142,7 @@ export const VolumeSnapshotDetailsPage: FC<DetailsPageProps> = (props) => {
<DetailsPage
{...props}
customActionMenu={customActionMenu}
getResourceStatus={volumeSnapshotStatus}
getResourceStatus={snapshotStatus}
pages={pages}
/>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import {
ListPageHeader,
ListPageCreateLink,
} from '@console/dynamic-plugin-sdk/src/lib-core';
import { sorts } from '@console/internal/components/factory/table';
import { sortResourceByValue } from '@console/internal/components/factory/Table/sort';
import { useK8sWatchResource } from '@console/internal/components/utils/k8s-watch-hook';
import { ResourceLink } from '@console/internal/components/utils/resource-link';
import { convertToBaseValue, humanizeBinaryBytes } from '@console/internal/components/utils/units';
Expand All @@ -43,8 +45,7 @@ import { FLAGS } from '@console/shared/src/constants/common';
import { DASH } from '@console/shared/src/constants/ui';
import { useFlag } from '@console/shared/src/hooks/useFlag';
import { getName, getNamespace } from '@console/shared/src/selectors/common';
import { snapshotSource } from '@console/shared/src/sorts/snapshot';
import { volumeSnapshotStatus } from '../../status';
import { snapshotSource, snapshotStatus } from '@console/shared/src/sorts/snapshot';

const kind = referenceForModel(VolumeSnapshotModel);

Expand Down Expand Up @@ -88,7 +89,7 @@ const getDataViewRows: GetDataViewRows<VolumeSnapshotKind, VolumeSnapshotRowData
cell: <ResourceLink kind={NamespaceModel.kind} name={namespace} />,
},
[tableColumnInfo[2].id]: {
cell: <Status status={volumeSnapshotStatus(obj)} />,
cell: <Status status={snapshotStatus(obj)} />,
},
[tableColumnInfo[3].id]: {
cell: sizeMetrics,
Expand Down Expand Up @@ -165,19 +166,22 @@ const useVolumeSnapshotColumns = (
},
{
title: t('console-app~Status'),
sort: 'snapshotStatus',
sort: (data, direction) =>
data.sort(sortResourceByValue(direction, sorts.volumeSnapshotStatus)),
id: tableColumnInfo[2].id,
props: { modifier: 'nowrap' },
},
{
title: t('console-app~Size'),
sort: 'volumeSnapshotSize',
sort: (data, direction) =>
data.sort(sortResourceByValue(direction, sorts.volumeSnapshotSize)),
id: tableColumnInfo[3].id,
props: { modifier: 'nowrap' },
},
{
title: t('console-app~Source'),
sort: 'volumeSnapshotSource',
sort: (data, direction) =>
data.sort(sortResourceByValue(direction, sorts.volumeSnapshotSource)),
id: tableColumnInfo[4].id,
props: { modifier: 'nowrap' },
},
Expand Down Expand Up @@ -222,7 +226,7 @@ const VolumeSnapshotTable: FC<VolumeSnapshotTableProps> = ({ data, loaded, ...pr

const columns = useVolumeSnapshotColumns(customRowData);

const volumeSnapshotStatusFilterOptions = useMemo<DataViewFilterOption[]>(
const snapshotStatusFilterOptions = useMemo<DataViewFilterOption[]>(
() => [
{
value: 'Ready',
Expand Down Expand Up @@ -252,17 +256,17 @@ const VolumeSnapshotTable: FC<VolumeSnapshotTableProps> = ({ data, loaded, ...pr
filterId="status"
title={t('console-app~Status')}
placeholder={t('console-app~Filter by status')}
options={volumeSnapshotStatusFilterOptions}
options={snapshotStatusFilterOptions}
/>,
],
[t, volumeSnapshotStatusFilterOptions],
[t, snapshotStatusFilterOptions],
);

const matchesAdditionalFilters = useCallback(
(resource: VolumeSnapshotKind, filters: VolumeSnapshotFilters) => {
// Status filter
if (filters.status.length > 0) {
const status = volumeSnapshotStatus(resource);
const status = snapshotStatus(resource);
if (!filters.status.includes(status)) {
return false;
}
Expand Down
10 changes: 2 additions & 8 deletions frontend/packages/console-app/src/status/snapshot.ts
Original file line number Diff line number Diff line change
@@ -1,19 +1,13 @@
import type { TFunction } from 'i18next';
import type { RowFilter } from '@console/dynamic-plugin-sdk/src/extensions/console-types';
import type { VolumeSnapshotStatus } from '@console/internal/module/k8s';

export const volumeSnapshotStatus = ({ status }: { status?: VolumeSnapshotStatus }) => {
const readyToUse = status?.readyToUse;
const isError = !!status?.error?.message;
return readyToUse ? 'Ready' : isError ? 'Error' : 'Pending';
};
import { snapshotStatus } from '@console/shared/src/sorts/snapshot';

export const snapshotStatusFilters = (t: TFunction): RowFilter[] => {
return [
{
filterGroupName: t('console-app~Status'),
type: 'snapshot-status',
reducer: volumeSnapshotStatus,
reducer: snapshotStatus,
filter: () => null,
items: [
{ id: 'Ready', title: 'Ready' },
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { nodeStatus } from '@console/app/src/status/node';
import { volumeSnapshotStatus } from '@console/app/src/status/snapshot';
import { podPhaseFilterReducer } from '@console/internal/module/k8s';
import { snapshotStatus } from '@console/shared/src/sorts/snapshot';
import type { StatusGroupMapper } from './InventoryItem';
import { InventoryStatusGroup } from './status-group';

Expand Down Expand Up @@ -69,4 +69,4 @@ export const getPVCStatusGroups: StatusGroupMapper = (resources) =>
export const getPVStatusGroups: StatusGroupMapper = (resources) =>
getStatusGroups(resources, PV_STATUS_GROUP_MAPPING, (pv) => pv.status.phase, 'status');
export const getVSStatusGroups: StatusGroupMapper = (resources) =>
getStatusGroups(resources, VS_STATUS_GROUP_MAPPING, volumeSnapshotStatus, 'status');
getStatusGroups(resources, VS_STATUS_GROUP_MAPPING, snapshotStatus, 'status');
16 changes: 15 additions & 1 deletion frontend/packages/console-shared/src/sorts/snapshot.ts
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
import { convertToBaseValue } from '@console/internal/components/utils/units';
import type { VolumeSnapshotKind } from '@console/internal/module/k8s';
import type {
VolumeSnapshotContentKind,
VolumeSnapshotKind,
VolumeSnapshotStatus,
} from '@console/internal/module/k8s';

export const snapshotStatus = ({ status }: { status?: VolumeSnapshotStatus }): string => {
const readyToUse = status?.readyToUse;
const isError = !!status?.error?.message;
return readyToUse ? 'Ready' : isError ? 'Error' : 'Pending';
};

export const snapshotSize = (snapshot: VolumeSnapshotKind): number => {
const size = snapshot?.status?.restoreSize;
Expand All @@ -9,3 +19,7 @@ export const snapshotSize = (snapshot: VolumeSnapshotKind): number => {
export const snapshotSource = (snapshot: VolumeSnapshotKind): string =>
snapshot.spec?.source?.persistentVolumeClaimName ??
snapshot.spec?.source?.volumeSnapshotContentName;

export const snapshotContentSize = (snapshot: VolumeSnapshotContentKind): number => {
return snapshot?.status?.restoreSize ?? 0;
};
4 changes: 2 additions & 2 deletions frontend/public/components/factory/table-filters.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import * as _ from 'lodash';
import * as fuzzy from 'fuzzysearch';
import { nodeStatus } from '@console/app/src/status/node';
import { volumeSnapshotStatus } from '@console/app/src/status/snapshot';
import { snapshotStatus } from '@console/shared/src/sorts/snapshot';
import { getNodeRoles } from '@console/shared/src/selectors/node';
import { getLabelsAsString } from '@console/shared/src/utils/label-filter';
import { Alert, Rule } from '@console/dynamic-plugin-sdk/src/api/common-types';
Expand Down Expand Up @@ -220,7 +220,7 @@ export const tableFilters = (isExactSearch: boolean): FilterMap => {
return true;
}

const status = volumeSnapshotStatus(snapshot);
const status = snapshotStatus(snapshot);
return statuses.selected.includes(status) || !_.includes(statuses.all, status);
},
'node-disk-name': (name, disks) => matchFn(name.selected?.[0], disks?.path),
Expand Down
12 changes: 11 additions & 1 deletion frontend/public/components/factory/table.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,12 @@ import { useNavigate } from 'react-router';
import { getMachinePhase } from '@console/shared/src/selectors/machine';
import { getMachineSetInstanceType } from '@console/shared/src/selectors/machineSet';
import { pvcUsed } from '@console/shared/src/sorts/pvc';
import { snapshotSize, snapshotSource } from '@console/shared/src/sorts/snapshot';
import {
snapshotContentSize,
snapshotSize,
snapshotSource,
snapshotStatus,
} from '@console/shared/src/sorts/snapshot';
import { ALL_NAMESPACES_KEY } from '@console/shared/src/constants/common';
import { getName } from '@console/shared/src/selectors/common';
import { useDeepCompareMemoize } from '@console/shared/src/hooks/useDeepCompareMemoize';
Expand All @@ -49,6 +54,7 @@ import {
MachineKind,
VolumeSnapshotKind,
ClusterOperator,
VolumeSnapshotContentKind,
} from '../../module/k8s/types';
import { getClusterOperatorStatus } from '../../module/k8s/cluster-operator';
import { getClusterOperatorVersion, getJobTypeAndCompletions } from '../../module/k8s';
Expand Down Expand Up @@ -86,7 +92,11 @@ export const sorts = {
getTemplateInstanceStatus,
machinePhase: (machine: MachineKind): string => getMachinePhase(machine),
pvcUsed: (pvc: K8sResourceKind): number => pvcUsed(pvc),
volumeSnapshotStatus: (snapshot: VolumeSnapshotKind | VolumeSnapshotContentKind): string =>
snapshotStatus(snapshot),
volumeSnapshotSize: (snapshot: VolumeSnapshotKind): number => snapshotSize(snapshot),
volumeSnapshotContentSize: (snapshot: VolumeSnapshotContentKind): number =>
snapshotContentSize(snapshot),
volumeSnapshotSource: (snapshot: VolumeSnapshotKind): string => snapshotSource(snapshot),
snapshotLastRestore: (snapshot: K8sResourceKind, { restores }) =>
restores[getName(snapshot)]?.status?.restoreTime,
Expand Down
3 changes: 2 additions & 1 deletion frontend/public/module/k8s/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1087,6 +1087,7 @@ export type MachineHealthCheckKind = K8sResourceCommon & {
export type VolumeSnapshotKind = K8sResourceCommon & {
status?: VolumeSnapshotStatus & {
boundVolumeSnapshotContentName?: string;
restoreSize?: string;
};
spec: {
source: {
Expand All @@ -1100,6 +1101,7 @@ export type VolumeSnapshotKind = K8sResourceCommon & {
export type VolumeSnapshotContentKind = K8sResourceCommon & {
status: VolumeSnapshotStatus & {
snapshotHandle?: string;
restoreSize?: number;
};
spec: {
volumeSnapshotRef: {
Expand All @@ -1118,7 +1120,6 @@ export type VolumeSnapshotContentKind = K8sResourceCommon & {

export type VolumeSnapshotStatus = {
readyToUse: boolean;
restoreSize?: number;
error?: {
message: string;
time: string;
Expand Down