Skip to content

Commit 9c0c5d9

Browse files
committed
refactor: migrate cordon & drain service from dashboard
1 parent 963cdae commit 9c0c5d9

File tree

3 files changed

+41
-3
lines changed

3 files changed

+41
-3
lines changed

src/Pages/ResourceBrowser/ResourceBrowser.Types.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ export interface K8sResourceListPayloadType {
5959
}
6060

6161
export type K8sResourceDetailDataType = {
62-
[key: string]: string | number | object
62+
[key: string]: string | number | object | boolean
6363
}
6464

6565
export interface K8sResourceDetailType {
@@ -71,11 +71,17 @@ export interface BulkSelectionActionWidgetProps {
7171
count: number
7272
handleOpenBulkDeleteModal: () => void
7373
handleClearBulkSelection: () => void
74+
handleOpenCordonNodeModal: () => void
75+
handleOpenUncordonNodeModal: () => void
76+
handleOpenDrainNodeModal: () => void
7477
handleOpenRestartWorkloadModal: () => void
7578
parentRef: RefObject<HTMLDivElement>
7679
showBulkRestartOption: boolean
80+
showNodeListingOptions: boolean
7781
}
7882

83+
export type RBBulkOperationType = 'restart' | 'delete' | 'cordon' | 'uncordon' | 'drain'
84+
7985
export interface CreateResourceRequestBodyType {
8086
appId: string
8187
clusterId: number

src/Pages/ResourceBrowser/service.ts

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { get, post, trash } from '@Common/Api'
1+
import { get, post, put, trash } from '@Common/Api'
22
import { ROUTES } from '@Common/Constants'
33
import { APIOptions, ResponseType } from '@Common/Types'
44
import {
@@ -10,7 +10,7 @@ import {
1010
ResourceListPayloadType,
1111
ResourceType,
1212
} from './ResourceBrowser.Types'
13-
import { ClusterDetail } from './types'
13+
import { ClusterDetail, NodeCordonRequest } from './types'
1414

1515
export const getK8sResourceList = (
1616
resourceListPayload: K8sResourceListPayloadType,
@@ -34,4 +34,14 @@ export const deleteNodeCapacity = (
3434
abortControllerRef?: APIOptions['abortControllerRef'],
3535
): Promise<ResponseType> => trash(ROUTES.NODE_CAPACITY, requestPayload, { abortControllerRef })
3636

37+
export const cordonNodeCapacity = (
38+
requestPayload: NodeCordonRequest,
39+
abortControllerRef?: APIOptions['abortControllerRef'],
40+
): Promise<ResponseType> => put(`${ROUTES.NODE_CAPACITY}/cordon`, requestPayload, { abortControllerRef })
41+
42+
export const drainNodeCapacity = (
43+
requestPayload: NodeActionRequest,
44+
abortControllerRef?: APIOptions['abortControllerRef'],
45+
): Promise<ResponseType> => put(`${ROUTES.NODE_CAPACITY}/drain`, requestPayload, { abortControllerRef })
46+
3747
export const getClusterListRaw = () => get<ClusterDetail[]>(ROUTES.CLUSTER_LIST_RAW)

src/Pages/ResourceBrowser/types.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
import { NodeActionRequest } from './ResourceBrowser.Types'
2+
13
export enum ClusterFiltersType {
24
ALL_CLUSTERS = 'all',
35
HEALTHY = 'healthy',
@@ -53,3 +55,23 @@ export interface ClusterDetail extends ClusterCapacityType {
5355
nodeNames?: string[]
5456
isVirtualCluster?: boolean
5557
}
58+
59+
interface NodeCordonOptions {
60+
unschedulableDesired: boolean
61+
}
62+
63+
export interface NodeCordonRequest extends NodeActionRequest {
64+
nodeCordonOptions: NodeCordonOptions
65+
}
66+
67+
interface NodeDrainOptions {
68+
gracePeriodSeconds: number
69+
deleteEmptyDirData: boolean
70+
disableEviction: boolean
71+
force: boolean
72+
ignoreAllDaemonSets: boolean
73+
}
74+
75+
export interface NodeDrainRequest extends NodeActionRequest {
76+
nodeDrainOptions: NodeDrainOptions
77+
}

0 commit comments

Comments
 (0)