@mittwald/kubernetes
Version:
Kubernetes client library
152 lines • 6.91 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.KubernetesAPI = void 0;
const resource_1 = require("./resource");
const resourceAppsV1beta1 = __importStar(require("./apis/apps/v1beta1"));
const resourceExtensionsV1beta1 = __importStar(require("./apis/extensions/v1beta1"));
const admregv1 = __importStar(require("./types/admissionregistration/v1"));
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;
}
admissionRegistration() {
return {
v1: () => ({
validatingWebhookConfigurations: () => this.c(`/apis/${admregv1.apiGroup}`, "/validatingwebhookconfigurations"),
}),
};
}
apiextensions() {
return {
v1beta1: () => ({
customResourceDefinitions: () => this.c("/apis/apiextensions.k8s.io/v1beta1", "/customresourcedefinitions"),
}),
v1: () => ({
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