Skip to content

Commit 0b6d121

Browse files
committed
Remove kebab factory uses from resourceQuota and pod-list pages
1 parent 2243c06 commit 0b6d121

File tree

6 files changed

+143
-56
lines changed

6 files changed

+143
-56
lines changed

frontend/packages/console-app/console-extensions.json

Lines changed: 40 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -432,7 +432,9 @@
432432
"kind": "VolumeAttributesClass",
433433
"group": "storage.k8s.io"
434434
},
435-
"provider": { "$codeRef": "volumeAttributesClassProvider.useVolumeAttributesClassActionsProvider" }
435+
"provider": {
436+
"$codeRef": "volumeAttributesClassProvider.useVolumeAttributesClassActionsProvider"
437+
}
436438
},
437439
"flags": {
438440
"required": ["VAC_PLATFORM_SUPPORT"]
@@ -528,6 +530,41 @@
528530
"provider": { "$codeRef": "prometheusProvider.usePrometheusActionsProvider" }
529531
}
530532
},
533+
{
534+
"type": "console.action/resource-provider",
535+
"properties": {
536+
"model": {
537+
"group": "",
538+
"version": "v1",
539+
"kind": "ResourceQuota"
540+
},
541+
"provider": { "$codeRef": "defaultProvider.useDefaultActionsProvider" }
542+
}
543+
},
544+
{
545+
"type": "console.action/resource-provider",
546+
"properties": {
547+
"model": {
548+
"group": "quota.openshift.io",
549+
"version": "v1",
550+
"kind": "ClusterResourceQuota"
551+
},
552+
"provider": { "$codeRef": "defaultProvider.useDefaultActionsProvider" }
553+
}
554+
},
555+
{
556+
"type": "console.action/resource-provider",
557+
"properties": {
558+
"model": {
559+
"group": "quota.openshift.io",
560+
"version": "v1",
561+
"kind": "AppliedClusterResourceQuota"
562+
},
563+
"provider": {
564+
"$codeRef": "appliedClusterResourceQuotaProvider.useAppliedClusterResourceQuotaActionsProvider"
565+
}
566+
}
567+
},
531568
{
532569
"type": "console.page/route",
533570
"properties": {
@@ -1286,8 +1323,8 @@
12861323
"kind": "VolumeAttributesClass"
12871324
}
12881325
},
1289-
"flags": {
1290-
"required": ["VAC_PLATFORM_SUPPORT"]
1326+
"flags": {
1327+
"required": ["VAC_PLATFORM_SUPPORT"]
12911328
}
12921329
},
12931330
{

frontend/packages/console-app/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,7 @@
9999
"customResourceDefinitionProvider": "src/actions/providers/custom-resource-definition-provider.ts",
100100
"machineConfigPoolProvider": "src/actions/providers/machine-config-pool-provider.ts",
101101
"serviceMonitorProvider": "src/actions/providers/service-monitor-provider.ts",
102+
"appliedClusterResourceQuotaProvider": "src/actions/providers/applied-cluster-resource-quota-provider.ts",
102103
"userProvider": "src/actions/providers/user-provider.ts"
103104
}
104105
}
Lines changed: 75 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,75 @@
1+
import { useMemo } from 'react';
2+
import { useTranslation } from 'react-i18next';
3+
import { useNavigate } from 'react-router-dom-v5-compat';
4+
import { Action } from '@console/dynamic-plugin-sdk';
5+
import { AppliedClusterResourceQuotaModel } from '@console/internal/models';
6+
import { K8sResourceKind, referenceFor, referenceForModel } from '@console/internal/module/k8s';
7+
import { useK8sModel } from '@console/shared/src/hooks/useK8sModel';
8+
import { CommonActionCreator } from '../hooks/types';
9+
import { useCommonActions } from '../hooks/useCommonActions';
10+
11+
const useEditAppliedClusterResourceQuotaActions = (
12+
resource: K8sResourceKind,
13+
namespace: string,
14+
) => {
15+
const { t } = useTranslation();
16+
const navigate = useNavigate();
17+
const factory = useMemo(
18+
() => ({
19+
editResourceQuota: () => ({
20+
id: 'edit-resource-quota',
21+
label: t('public~Edit AppliedClusterResourceQuota'),
22+
cta: () =>
23+
navigate(
24+
`/k8s/ns/${namespace}/${referenceForModel(AppliedClusterResourceQuotaModel)}/${
25+
resource?.metadata?.name
26+
}/yaml`,
27+
),
28+
}),
29+
}),
30+
[t, navigate, namespace, resource?.metadata?.name],
31+
);
32+
33+
const action = useMemo<Action[]>(() => [factory.editResourceQuota()], [factory]);
34+
return action;
35+
};
36+
37+
export const useAppliedClusterResourceQuotaActionsProvider = (data) => {
38+
const { quota, namespace } = data;
39+
const [kindObj, inFlight] = useK8sModel(referenceFor(quota));
40+
const [editLabelsAction, isLabelActionReady] = useCommonActions(kindObj, quota, [
41+
CommonActionCreator.ModifyLabels,
42+
] as const);
43+
const [editAnnotationsAction, isAnnotationActionReady] = useCommonActions(kindObj, quota, [
44+
CommonActionCreator.ModifyAnnotations,
45+
] as const);
46+
const [editDeleteAction, isDeleteActionReady] = useCommonActions(kindObj, quota, [
47+
CommonActionCreator.Delete,
48+
] as const);
49+
const editLabels = useMemo(() => (isLabelActionReady ? Object.values(editLabelsAction) : []), [
50+
editLabelsAction,
51+
isLabelActionReady,
52+
]);
53+
const editAnnotations = useMemo(
54+
() => (isAnnotationActionReady ? Object.values(editAnnotationsAction) : []),
55+
[editAnnotationsAction, isAnnotationActionReady],
56+
);
57+
const deleteQuota = useMemo(() => (isDeleteActionReady ? Object.values(editDeleteAction) : []), [
58+
editDeleteAction,
59+
isDeleteActionReady,
60+
]);
61+
const editAppliedClusterResourceQuotaActions = useEditAppliedClusterResourceQuotaActions(
62+
quota,
63+
namespace,
64+
);
65+
const resourceQuotaActions = useMemo(
66+
() => [
67+
...editLabels,
68+
...editAnnotations,
69+
...editAppliedClusterResourceQuotaActions,
70+
...deleteQuota,
71+
],
72+
[editLabels, editAnnotations, editAppliedClusterResourceQuotaActions, deleteQuota],
73+
);
74+
return [resourceQuotaActions, !inFlight, false];
75+
};

frontend/public/components/pod-list.tsx

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,6 @@ import { sortResourceByValue } from './factory/Table/sort';
5454
import { PROMETHEUS_BASE_PATH, PROMETHEUS_TENANCY_BASE_PATH } from './graphs/consts';
5555
import { PodTraffic } from './pod-traffic';
5656
import { useK8sWatchResource } from './utils/k8s-watch-hook';
57-
import { Kebab } from './utils/kebab';
5857
import { LabelList } from './utils/label-list';
5958
import { OwnerReferences } from './utils/owner-references';
6059
import { ResourceLink, resourcePath } from './utils/resource-link';
@@ -97,8 +96,6 @@ const fetchPodMetrics = (namespace: string): Promise<UIActions.PodMetrics> => {
9796
return Promise.all(promises).then((data: unknown[]) => _.assign({}, ...data));
9897
};
9998

100-
export const menuActions = [...(Kebab.factory.common || [])];
101-
10299
const tableColumnInfo = [
103100
{ id: 'name' },
104101
{ id: 'namespace' },

frontend/public/components/resource-quota.jsx

Lines changed: 26 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import { FLAGS } from '@console/shared/src/constants/common';
1818
import { YellowExclamationTriangleIcon } from '@console/shared/src/components/status/icons';
1919
import { DASH } from '@console/shared/src/constants/ui';
2020
import { DetailsPage, MultiListPage } from './factory';
21-
import { Kebab, ResourceKebab } from './utils/kebab';
2221
import { SectionHeading } from './utils/headings';
2322
import { navFactory } from './utils/horizontal-nav';
2423
import { ResourceLink } from './utils/resource-link';
@@ -54,32 +53,8 @@ import {
5453
actionsCellProps,
5554
cellIsStickyProps,
5655
} from '@console/app/src/components/data-view/ConsoleDataView';
57-
58-
const { common } = Kebab.factory;
59-
60-
const resourceQuotaMenuActions = [...common];
61-
const clusterResourceQuotaMenuActions = [...common];
62-
const appliedClusterResourceQuotaMenuActions = (namespace) => [
63-
Kebab.factory.ModifyLabels,
64-
Kebab.factory.ModifyAnnotations,
65-
(kind, obj) => {
66-
return {
67-
// t('public~Edit AppliedClusterResourceQuota')
68-
labelKey: 'public~Edit AppliedClusterResourceQuota',
69-
href: `/k8s/ns/${namespace}/${referenceForModel(AppliedClusterResourceQuotaModel)}/${
70-
obj.metadata.name
71-
}/yaml`,
72-
accessReview: {
73-
group: kind.apiGroup,
74-
resource: kind.plural,
75-
name: obj.metadata.name,
76-
namespace,
77-
verb: 'update',
78-
},
79-
};
80-
},
81-
Kebab.factory.Delete,
82-
];
56+
import LazyActionMenu from '@console/shared/src/components/actions/LazyActionMenu';
57+
import { ActionMenuVariant } from '@console/shared/src/components/actions/types';
8358

8459
const isClusterQuota = (quota) => !quota.metadata.namespace;
8560

@@ -88,15 +63,15 @@ const appliedClusterQuotaReference = referenceForModel(AppliedClusterResourceQuo
8863

8964
const quotaActions = (quota, namespace = undefined) => {
9065
if (quota.metadata.namespace) {
91-
return resourceQuotaMenuActions;
66+
return <LazyActionMenu context={{ [referenceForModel(ResourceQuotaModel)]: quota }} />;
9267
}
9368

9469
if (quota.kind === 'ClusterResourceQuota') {
95-
return clusterResourceQuotaMenuActions;
70+
return <LazyActionMenu context={{ [clusterQuotaReference]: quota }} />;
9671
}
9772

9873
if (quota.kind === 'AppliedClusterResourceQuota') {
99-
return appliedClusterResourceQuotaMenuActions(namespace);
74+
return <LazyActionMenu context={{ [appliedClusterQuotaReference]: { quota, namespace } }} />;
10075
}
10176
};
10277

@@ -479,14 +454,7 @@ const getResourceQuotaDataViewRows = (data, columns, namespace) => {
479454
cell: <Timestamp timestamp={metadata.creationTimestamp} />,
480455
},
481456
[resourceQuotaTableColumnInfo[6].id]: {
482-
cell: (
483-
<ResourceKebab
484-
customData={namespace}
485-
actions={quotaActions(obj, namespace)}
486-
kind={resourceKind}
487-
resource={obj}
488-
/>
489-
),
457+
cell: quotaActions(obj, namespace),
490458
props: actionsCellProps,
491459
},
492460
};
@@ -549,14 +517,7 @@ const getAppliedClusterResourceQuotaDataViewRows = (data, columns, namespace) =>
549517
cell: <Timestamp timestamp={metadata.creationTimestamp} />,
550518
},
551519
[appliedClusterResourceQuotaTableColumnInfo[5].id]: {
552-
cell: (
553-
<ResourceKebab
554-
customData={namespace}
555-
actions={quotaActions(obj, namespace)}
556-
kind={appliedClusterQuotaReference}
557-
resource={obj}
558-
/>
559-
),
520+
cell: quotaActions(obj, namespace),
560521
props: actionsCellProps,
561522
},
562523
};
@@ -851,19 +812,35 @@ export const ResourceQuotasDetailsPage = (props) => {
851812
return (
852813
<DetailsPage
853814
{...props}
854-
menuActions={resourceQuotaMenuActions}
815+
kind={referenceForModel(ResourceQuotaModel)}
816+
customActionMenu={(k8sObj, obj) => (
817+
<LazyActionMenu
818+
context={{ [referenceForModel(ResourceQuotaModel)]: obj }}
819+
variant={ActionMenuVariant.DROPDOWN}
820+
/>
821+
)}
855822
pages={[navFactory.details(Details), navFactory.editYaml()]}
856823
/>
857824
);
858825
};
859826

860827
export const AppliedClusterResourceQuotasDetailsPage = (props) => {
861828
const params = useParams();
862-
const actions = appliedClusterResourceQuotaMenuActions(params?.ns);
863829
return (
864830
<DetailsPage
865831
{...props}
866-
menuActions={actions}
832+
kind={appliedClusterQuotaReference}
833+
customActionMenu={(k8sObj, obj) => (
834+
<LazyActionMenu
835+
context={{
836+
[appliedClusterQuotaReference]: {
837+
quota: obj,
838+
namespace: params?.ns,
839+
},
840+
}}
841+
variant={ActionMenuVariant.DROPDOWN}
842+
/>
843+
)}
867844
pages={[navFactory.details(Details), navFactory.editYaml()]}
868845
/>
869846
);

frontend/public/locales/en/public.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1230,7 +1230,6 @@
12301230
"Recently used": "Recently used",
12311231
"No results found": "No results found",
12321232
"Clear input value": "Clear input value",
1233-
"Edit AppliedClusterResourceQuota": "Edit AppliedClusterResourceQuota",
12341233
"{{count}} resource reached quota_one": "{{count}} resource reached quota",
12351234
"{{count}} resource reached quota_other": "{{count}} resource reached quotas",
12361235
"none are at quota": "none are at quota",
@@ -1718,6 +1717,7 @@
17181717
"Cancel build": "Cancel build",
17191718
"Impersonate Group {{name}}": "Impersonate Group {{name}}",
17201719
"Edit Machine count": "Edit Machine count",
1720+
"Edit AppliedClusterResourceQuota": "Edit AppliedClusterResourceQuota",
17211721
"Start build": "Start build",
17221722
"Start last run": "Start last run",
17231723
"Pause updates": "Pause updates",

0 commit comments

Comments
 (0)