Skip to content

Commit

Permalink
Add corev1.ConfigMap client functions and types (#2348)
Browse files Browse the repository at this point in the history
* Add corev1.ConfigMap client functions and types

* Use generic map type for the createResource data
  • Loading branch information
axbarsan committed Apr 14, 2021
1 parent 87780df commit ae9ce79
Show file tree
Hide file tree
Showing 6 changed files with 89 additions and 6 deletions.
21 changes: 21 additions & 0 deletions src/model/services/mapi/corev1/createConfigMap.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
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<IConfigMap>(client, auth, url.toString(), configMap);
}
22 changes: 22 additions & 0 deletions src/model/services/mapi/corev1/deleteConfigMap.ts
Original file line number Diff line number Diff line change
@@ -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<IConfigMap>(client, auth, url.toString());
}
27 changes: 27 additions & 0 deletions src/model/services/mapi/corev1/getConfigMap.ts
Original file line number Diff line number Diff line change
@@ -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<IConfigMap>(client, auth, url.toString());
}

export function getConfigMapKey(name: string, namespace: string) {
return `getConfigMap/${namespace}/${name}`;
}
3 changes: 3 additions & 0 deletions src/model/services/mapi/corev1/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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';
11 changes: 11 additions & 0 deletions src/model/services/mapi/corev1/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<string, string>;
binaryData?: Record<string, string>;
}
11 changes: 5 additions & 6 deletions src/model/services/mapi/generic/createResource.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,11 @@ import { HttpRequestMethods, IHttpClient } from 'model/clients/HttpClient';

import { executeRequest } from './executeRequest';

export function createResource<T>(
client: IHttpClient,
auth: IOAuth2Provider,
url: string,
data: Record<string, unknown>
) {
export function createResource<
T,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
U extends Record<string, any> = Record<string, any>
>(client: IHttpClient, auth: IOAuth2Provider, url: string, data: U) {
client.setRequestConfig({
url: url.toString(),
method: HttpRequestMethods.POST,
Expand Down

0 comments on commit ae9ce79

Please sign in to comment.