From 704a642276e1160ff8f84c98a438c765da7b16d6 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Thu, 6 Apr 2023 11:39:29 +0300 Subject: [PATCH] Add mutatingWebhookConfigurationApiInjectable Signed-off-by: Alex Andreev --- ...ng-webhook-configuration-api.injectable.ts | 27 +++++++++++++++++++ .../mutating-webhook-configuration.api.ts | 11 ++++++++ 2 files changed, 38 insertions(+) create mode 100644 packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration-api.injectable.ts diff --git a/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration-api.injectable.ts b/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration-api.injectable.ts new file mode 100644 index 0000000000..c307f9ddf1 --- /dev/null +++ b/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration-api.injectable.ts @@ -0,0 +1,27 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import { getInjectable } from "@ogre-tools/injectable"; +import assert from "assert"; +import { storesAndApisCanBeCreatedInjectionToken } from "../stores-apis-can-be-created.token"; +import { kubeApiInjectionToken } from "../kube-api/kube-api-injection-token"; +import loggerInjectable from "../../logger.injectable"; +import maybeKubeApiInjectable from "../maybe-kube-api.injectable"; +import { MutatingWebhookConfigurationApi } from "./mutating-webhook-configuration.api"; + +const mutatingWebhookConfigurationApiInjectable = getInjectable({ + id: "mutating-webhook-configuration", + instantiate: (di) => { + assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "mutatingWebhookApi is only available in certain environments"); + + return new MutatingWebhookConfigurationApi({ + logger: di.inject(loggerInjectable), + maybeKubeApi: di.inject(maybeKubeApiInjectable), + }); + }, + + injectionToken: kubeApiInjectionToken, +}); + +export default mutatingWebhookConfigurationApiInjectable; diff --git a/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration.api.ts b/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration.api.ts index 18bb5af431..a021e9b8aa 100644 --- a/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration.api.ts +++ b/packages/core/src/common/k8s-api/endpoints/mutating-webhook-configuration.api.ts @@ -4,6 +4,8 @@ */ import type { LabelSelector, NamespaceScopedMetadata } from "../kube-object"; import { KubeObject } from "../kube-object"; +import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api"; +import { KubeApi } from "../kube-api"; interface MutatingWebhookConfigurationStatus { // The latest generation observed by the webhook. @@ -238,3 +240,12 @@ export class MutatingWebhookConfiguration extends KubeObject< return this.spec?.reinvocationPolicy; } } + +export class MutatingWebhookConfigurationApi extends KubeApi { + constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) { + super(deps, { + ...opts ?? {}, + objectConstructor: MutatingWebhookConfiguration, + }); + } +}