UNPKG

@mittwald/kubernetes

Version:

Kubernetes client library

121 lines 5.51 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const resource_1 = require("./resource"); const resourceAppsV1beta1 = require("./apis/apps/v1beta1"); const resourceExtensionsV1beta1 = require("./apis/extensions/v1beta1"); const prom_client_1 = require("prom-client"); class KubernetesAPI { constructor(restClient, registry = prom_client_1.register) { this.restClient = restClient; this.registry = registry; } nc(apiBaseURL, resourceBaseURL) { return new resource_1.NamespacedResourceClient(this.restClient, apiBaseURL, resourceBaseURL, this.registry); } c(apiBaseURL, resourceBaseURL) { return new resource_1.ResourceClient(this.restClient, apiBaseURL, resourceBaseURL, this.registry); } extend(name, customResourceAPI) { this[name] = () => customResourceAPI[name](); return this; } apiextensions() { return { v1beta1: () => ({ customResourceDefinitions: () => this.c("/apis/apiextensions.k8s.io/v1", "/customresourcedefinitions"), }), }; } certificates() { return { v1beta1: () => ({ certificateSigningRequests: () => this.c("/apis/certificates.k8s.io/v1beta1", "/certificatesigningrequests"), }), }; } core() { return { v1: () => ({ configMaps: () => this.nc("/api/v1", "/configmaps"), endpoints: () => this.nc("/api/v1", "/endpoints"), namespaces: () => this.c("/api/v1", "/namespaces"), nodes: () => this.c("/api/v1", "/nodes"), pods: () => this.nc("/api/v1", "/pods"), persistentVolumes: () => this.c("/api/v1", "/persistentvolumes"), persistentVolumeClaims: () => this.nc("/api/v1", "/persistentvolumeclaims"), services: () => { const client = new resource_1.NamespacedResourceClient(this.restClient, "/api/v1", "/services", this.registry); client.supportsCollectionDeletion = false; return client; }, secrets: () => this.nc("/api/v1", "/secrets"), serviceAccounts: () => this.nc("/api/v1", "/serviceaccounts"), }), }; } apps() { return { v1: () => ({ daemonSets: () => this.nc("/apis/apps/v1", "/daemonsets"), deployments: () => this.nc("/apis/apps/v1", "/deployments"), replicaSets: () => this.nc("/apis/apps/v1", "/replicasets"), statefulSets: () => this.nc("/apis/apps/v1", "/statefulsets"), }), v1beta1: () => ({ deployments: () => new resourceAppsV1beta1.DeploymentResourceClient(this.restClient, this.registry), statefulSets: () => new resourceAppsV1beta1.StatefulSetResourceClient(this.restClient, this.registry), }), }; } batch() { return { v1: () => ({ jobs: () => this.nc("/apis/batch/v1", "/jobs"), }), v1beta1: () => ({ cronJobs: () => this.nc("/apis/batch/v1beta1", "/cronjobs"), }), }; } extensions() { return { v1beta1: () => ({ daemonSets: () => this.nc("/apis/extensions/v1beta1", "/daemonsets"), deployments: () => new resourceExtensionsV1beta1.DeploymentResourceClient(this.restClient, this.registry), ingresses: () => this.nc("/apis/extensions/v1beta1", "/ingresses"), networkPolicies: () => this.nc("/apis/extensions/v1beta1", "/networkpolicies"), replicaSets: () => this.nc("/apis/extensions/v1beta1", "/replicasets"), }), }; } rbac() { return { v1: () => ({ clusterRoles: () => new resource_1.ResourceClient(this.restClient, "/apis/rbac.authorization.k8s.io/v1", "/clusterroles", this.registry), clusterRoleBindings: () => new resource_1.ResourceClient(this.restClient, "/apis/rbac.authorization.k8s.io/v1", "/clusterrolebindings", this.registry), roles: () => new resource_1.NamespacedResourceClient(this.restClient, "/apis/rbac.authorization.k8s.io/v1", "/roles", this.registry), roleBindings: () => new resource_1.NamespacedResourceClient(this.restClient, "/apis/rbac.authorization.k8s.io/v1", "/rolebindings", this.registry), }), v1beta1: () => ({ roles: () => new resource_1.NamespacedResourceClient(this.restClient, "/apis/rbac.authorization.k8s.io/v1beta1", "/roles", this.registry), roleBindings: () => new resource_1.NamespacedResourceClient(this.restClient, "/apis/rbac.authorization.k8s.io/v1beta1", "/rolebindings", this.registry), }), }; } policy() { return { v1beta1: () => ({ podDisruptionBudgets: () => new resource_1.NamespacedResourceClient(this.restClient, "/apis/policy/v1beta1", "/poddisruptionbudgets", this.registry), }), }; } autoscaling() { return { v1: () => ({ horizontalPodAutoscalers: () => this.nc("/apis/autoscaling/v1", "/horizontalpodautoscalers"), }), }; } } exports.KubernetesAPI = KubernetesAPI; //# sourceMappingURL=api.js.map