From c696ca74ff589118ea49917d54ffc54ab359f6cd Mon Sep 17 00:00:00 2001 From: Adrian Barsan Date: Tue, 13 Apr 2021 18:08:41 +0200 Subject: [PATCH 1/2] Add corev1.ConfigMap client functions and types --- .../services/mapi/corev1/createConfigMap.ts | 26 ++++++++++++++++++ .../services/mapi/corev1/deleteConfigMap.ts | 22 +++++++++++++++ .../services/mapi/corev1/getConfigMap.ts | 27 +++++++++++++++++++ src/model/services/mapi/corev1/index.ts | 3 +++ src/model/services/mapi/corev1/types.ts | 11 ++++++++ 5 files changed, 89 insertions(+) create mode 100644 src/model/services/mapi/corev1/createConfigMap.ts create mode 100644 src/model/services/mapi/corev1/deleteConfigMap.ts create mode 100644 src/model/services/mapi/corev1/getConfigMap.ts diff --git a/src/model/services/mapi/corev1/createConfigMap.ts b/src/model/services/mapi/corev1/createConfigMap.ts new file mode 100644 index 0000000000..433d8c638e --- /dev/null +++ b/src/model/services/mapi/corev1/createConfigMap.ts @@ -0,0 +1,26 @@ +import { IOAuth2Provider } from 'lib/OAuth2/OAuth2'; +import { IHttpClient } from 'model/clients/HttpClient'; +import * as k8sUrl from 'model/services/mapi/k8sUrl'; + +import { createResource } from '../generic/createResource'; +import { IConfigMap } from './types'; + +export function createConfigMap( + client: IHttpClient, + auth: IOAuth2Provider, + configMap: IConfigMap +) { + const url = k8sUrl.create({ + baseUrl: window.config.mapiEndpoint, + isCore: true, + kind: 'configmaps', + namespace: configMap.metadata.namespace!, + }); + + return createResource( + client, + auth, + url.toString(), + (configMap as unknown) as Record + ); +} diff --git a/src/model/services/mapi/corev1/deleteConfigMap.ts b/src/model/services/mapi/corev1/deleteConfigMap.ts new file mode 100644 index 0000000000..b157a1cf91 --- /dev/null +++ b/src/model/services/mapi/corev1/deleteConfigMap.ts @@ -0,0 +1,22 @@ +import { IOAuth2Provider } from 'lib/OAuth2/OAuth2'; +import { IHttpClient } from 'model/clients/HttpClient'; +import * as k8sUrl from 'model/services/mapi/k8sUrl'; + +import { deleteResource } from '../generic/deleteResource'; +import { IConfigMap } from './types'; + +export function deleteConfigMap( + client: IHttpClient, + auth: IOAuth2Provider, + configMap: IConfigMap +) { + const url = k8sUrl.create({ + baseUrl: window.config.mapiEndpoint, + isCore: true, + kind: 'configmaps', + name: configMap.metadata.name, + namespace: configMap.metadata.namespace!, + }); + + return deleteResource(client, auth, url.toString()); +} diff --git a/src/model/services/mapi/corev1/getConfigMap.ts b/src/model/services/mapi/corev1/getConfigMap.ts new file mode 100644 index 0000000000..68364b668f --- /dev/null +++ b/src/model/services/mapi/corev1/getConfigMap.ts @@ -0,0 +1,27 @@ +import { IOAuth2Provider } from 'lib/OAuth2/OAuth2'; +import { IHttpClient } from 'model/clients/HttpClient'; +import * as k8sUrl from 'model/services/mapi/k8sUrl'; + +import { getResource } from '../generic/getResource'; +import { IConfigMap } from './types'; + +export function getConfigMap( + client: IHttpClient, + auth: IOAuth2Provider, + name: string, + namespace: string +) { + const url = k8sUrl.create({ + baseUrl: window.config.mapiEndpoint, + isCore: true, + kind: 'configmaps', + name, + namespace, + }); + + return getResource(client, auth, url.toString()); +} + +export function getConfigMapKey(name: string, namespace: string) { + return `getConfigMap/${namespace}/${name}`; +} diff --git a/src/model/services/mapi/corev1/index.ts b/src/model/services/mapi/corev1/index.ts index 48ab933875..df6e2fa760 100644 --- a/src/model/services/mapi/corev1/index.ts +++ b/src/model/services/mapi/corev1/index.ts @@ -2,3 +2,6 @@ export * from './types'; export * from './getServiceAccount'; export * from './deleteServiceAccount'; export * from './createServiceAccount'; +export * from './getConfigMap'; +export * from './deleteConfigMap'; +export * from './createConfigMap'; diff --git a/src/model/services/mapi/corev1/types.ts b/src/model/services/mapi/corev1/types.ts index d921a12d7d..00591d7c92 100644 --- a/src/model/services/mapi/corev1/types.ts +++ b/src/model/services/mapi/corev1/types.ts @@ -23,3 +23,14 @@ export interface IServiceAccount { imagePullSecrets?: ILocalObjectReference[]; automountServiceAccountToken?: boolean; } + +export const ConfigMap = 'ConfigMap'; + +export interface IConfigMap { + apiVersion: 'v1'; + kind: typeof ConfigMap; + metadata: metav1.IObjectMeta; + immutable?: boolean; + data?: Record; + binaryData?: Record; +} From f5a30f023dab8c410458ea6282f3db1d53720981 Mon Sep 17 00:00:00 2001 From: Adrian Barsan Date: Wed, 14 Apr 2021 15:30:14 +0200 Subject: [PATCH 2/2] Use generic map type for the createResource data --- src/model/services/mapi/corev1/createConfigMap.ts | 7 +------ src/model/services/mapi/generic/createResource.ts | 11 +++++------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/model/services/mapi/corev1/createConfigMap.ts b/src/model/services/mapi/corev1/createConfigMap.ts index 433d8c638e..619aa4c70c 100644 --- a/src/model/services/mapi/corev1/createConfigMap.ts +++ b/src/model/services/mapi/corev1/createConfigMap.ts @@ -17,10 +17,5 @@ export function createConfigMap( namespace: configMap.metadata.namespace!, }); - return createResource( - client, - auth, - url.toString(), - (configMap as unknown) as Record - ); + return createResource(client, auth, url.toString(), configMap); } diff --git a/src/model/services/mapi/generic/createResource.ts b/src/model/services/mapi/generic/createResource.ts index 0aeda33f54..3d9013cb8d 100644 --- a/src/model/services/mapi/generic/createResource.ts +++ b/src/model/services/mapi/generic/createResource.ts @@ -3,12 +3,11 @@ import { HttpRequestMethods, IHttpClient } from 'model/clients/HttpClient'; import { executeRequest } from './executeRequest'; -export function createResource( - client: IHttpClient, - auth: IOAuth2Provider, - url: string, - data: Record -) { +export function createResource< + T, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + U extends Record = Record +>(client: IHttpClient, auth: IOAuth2Provider, url: string, data: U) { client.setRequestConfig({ url: url.toString(), method: HttpRequestMethods.POST,