Skip to content

Commit 98604c3

Browse files
committed
feat: add create resource functionality and update related types
1 parent b1715a0 commit 98604c3

File tree

4 files changed

+81
-3
lines changed

4 files changed

+81
-3
lines changed

src/Common/Constants.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ export const ROUTES = {
7777
PROJECT_LIST_MIN: 'team/autocomplete',
7878
USER_CHECK_ROLE: 'user/check/roles',
7979
IMAGE_TAGGING: 'app/image-tagging',
80+
CREATE_RESOURCE: 'k8s/resource/create',
81+
K8S_RESOURCE_CREATE: 'k8s/resources/apply',
8082
CI_CONFIG_GET: 'app/ci-pipeline',
8183
CD_MATERIAL_GET: 'app/cd-pipeline',
8284
DEPLOYMENT_TEMPLATE_LIST: 'app/template/list',
@@ -115,6 +117,7 @@ export const ROUTES = {
115117
DEPLOYMENT_CHARTS_LIST: 'deployment/template/fetch',
116118
USER_LIST_MIN: 'user/list/min',
117119
CONFIG_DATA: 'config/data',
120+
K8S_RESOURCE: 'k8s/resource',
118121
K8S_RESOURCE_LIST: 'k8s/resource/list',
119122
}
120123

src/Pages/ResourceBrowser/Helper.tsx

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@
1616

1717
import { AggregationKeys, NodeType, Nodes } from '../../Shared'
1818
import { ALL_NAMESPACE_OPTION } from './constants'
19-
import { ApiResourceGroupType } from './ResourceBrowser.Types'
19+
import {
20+
ApiResourceGroupType,
21+
CreateResourceRequestBodyParamsType,
22+
CreateResourceRequestBodyType,
23+
} from './ResourceBrowser.Types'
2024

2125
export function getAggregator(nodeType: NodeType, defaultAsOtherResources?: boolean): AggregationKeys {
2226
switch (nodeType) {
@@ -85,3 +89,28 @@ export const getK8sResourceListPayload = (
8589
},
8690
...filters,
8791
})
92+
93+
export const createResourceRequestBody = ({
94+
clusterId,
95+
group,
96+
version,
97+
kind,
98+
name,
99+
namespace,
100+
updatedManifest,
101+
}: CreateResourceRequestBodyParamsType): CreateResourceRequestBodyType => ({
102+
appId: '',
103+
clusterId,
104+
k8sRequest: {
105+
resourceIdentifier: {
106+
groupVersionKind: {
107+
Group: group || '',
108+
Version: version || 'v1',
109+
Kind: kind,
110+
},
111+
namespace,
112+
name,
113+
},
114+
...(updatedManifest && { patch: updatedManifest }),
115+
},
116+
})

src/Pages/ResourceBrowser/ResourceBrowser.Types.ts

Lines changed: 38 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ export interface BulkOperation {
8282
}
8383

8484
export type BulkOperationModalProps = {
85-
operationType: 'restart' | 'delete'
85+
operationType: 'restart' | 'delete' | 'creation'
8686
clusterName: string
8787
operations: NonNullable<BulkOperation[]>
8888
handleModalClose: () => void
@@ -93,3 +93,40 @@ export type BulkOperationModalProps = {
9393
}
9494

9595
export type BulkOperationModalState = BulkOperationModalProps['operationType'] | 'closed'
96+
97+
export interface CreateResourceRequestBodyType {
98+
appId: string
99+
clusterId: number
100+
k8sRequest: {
101+
resourceIdentifier: Required<K8sRequestResourceIdentifierType>
102+
patch?: string
103+
}
104+
}
105+
106+
export interface ResourceManifestDTO {
107+
manifestResponse: {
108+
manifest: Record<string, unknown>
109+
}
110+
secretViewAccess: boolean
111+
}
112+
113+
export interface CreateResourceRequestBodyParamsType
114+
extends Pick<CreateResourceRequestBodyType, 'clusterId'>,
115+
Required<Pick<K8sRequestResourceIdentifierType, 'name' | 'namespace'>> {
116+
updatedManifest?: string
117+
group: GVKType['Group']
118+
version: GVKType['Version']
119+
kind: GVKType['Kind']
120+
}
121+
122+
export interface CreateResourcePayload {
123+
clusterId: number
124+
manifest: string
125+
}
126+
127+
export interface CreateResourceDTO {
128+
kind: string
129+
name: string
130+
isUpdate: boolean
131+
error: string
132+
}

src/Pages/ResourceBrowser/service.ts

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
11
import { post } from '@Common/Api'
22
import { ROUTES } from '@Common/Constants'
33
import { ResponseType } from '@Common/Types'
4-
import { K8sResourceDetailType, K8sResourceListPayloadType } from './ResourceBrowser.Types'
4+
import {
5+
CreateResourceDTO,
6+
CreateResourcePayload,
7+
K8sResourceDetailType,
8+
K8sResourceListPayloadType,
9+
} from './ResourceBrowser.Types'
510

611
export const getK8sResourceList = (
712
resourceListPayload: K8sResourceListPayloadType,
@@ -10,3 +15,7 @@ export const getK8sResourceList = (
1015
post(ROUTES.K8S_RESOURCE_LIST, resourceListPayload, {
1116
signal,
1217
})
18+
19+
export const createNewResource = (
20+
resourceListPayload: CreateResourcePayload,
21+
): Promise<ResponseType<CreateResourceDTO[]>> => post(ROUTES.K8S_RESOURCE_CREATE, resourceListPayload)

0 commit comments

Comments
 (0)