New resource view: ValidatingWebhookConfigurations (#7552)

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev authored and GitHub committed 2023-04-18 13:47:41 +03:00
1 parent e5eb709e66
commit 3baa42e17b
24 files changed
+1200 -152

No files matched your search

@@ -23,6 +23,7 @@ export * from "./job.api";
export * from "./lease.api";
export * from "./limit-range.api";
export * from "./mutating-webhook-configuration.api";
export * from "./validating-webhook-configuration.api";
export * from "./namespace.api";
export * from "./network-policy.api";
export * from "./node.api";
@@ -43,7 +43,7 @@ interface RuleWithOperations {
scope?: string;
}
interface MutatingWebhook {
export interface Webhook {
// The name of the webhook configuration.
name: string;
@@ -94,6 +94,9 @@ interface MutatingWebhook {
reinvocationPolicy?: "Never" | "IfNeeded";
}
export interface MutatingWebhook extends Webhook {
}
interface ServiceReference {
// `namespace` is the namespace of the service.
namespace: string;
@@ -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 { ValidatingWebhookConfigurationApi } from "./validating-webhook-configuration.api";
const validatingWebhookConfigurationApiInjectable = getInjectable({
id: "validating-webhook-configuration",
instantiate: (di) => {
assert(di.inject(storesAndApisCanBeCreatedInjectionToken), "validatingWebhookApi is only available in certain environments");
return new ValidatingWebhookConfigurationApi({
logger: di.inject(loggerInjectable),
maybeKubeApi: di.inject(maybeKubeApiInjectable),
});
},
injectionToken: kubeApiInjectionToken,
});
export default validatingWebhookConfigurationApiInjectable;
@@ -0,0 +1,47 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { NamespaceScopedMetadata, KubeObjectMetadata, KubeObjectScope } from "../kube-object";
import { KubeObject } from "../kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import type { KubeJsonApiData } from "../kube-json-api";
import type { Webhook } from "./mutating-webhook-configuration.api";
export interface ValidatingWebhook extends Webhook {
}
interface ValidatingWebhookConfigurationData extends KubeJsonApiData<KubeObjectMetadata<KubeObjectScope.Namespace>, void, void> {
webhooks?: ValidatingWebhook[];
}
export class ValidatingWebhookConfiguration extends KubeObject<
NamespaceScopedMetadata,
void,
void
> {
static kind = "ValidatingWebhookConfiguration";
static namespaced = false;
static apiBase = "/apis/admissionregistration.k8s.io/v1/validatingwebhookconfigurations";
webhooks?: ValidatingWebhook[];
constructor({ webhooks, ...rest }: ValidatingWebhookConfigurationData) {
super(rest);
this.webhooks = webhooks;
}
getWebhooks(): ValidatingWebhook[] {
return this.webhooks ?? [];
}
}
export class ValidatingWebhookConfigurationApi extends KubeApi<ValidatingWebhookConfiguration> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: ValidatingWebhookConfiguration,
});
}
}