chore: extract kube-api from core

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and Sebastian Malton committed 2023-05-29 09:38:24 -04:00
1 parent a22229ba60
commit 1ab5323f68
216 files changed
+1776 -1537

No files matched your search

@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import type { ClusterRoleBindingData } from "@k8slens/kube-object";
import { ClusterRoleBinding } from "@k8slens/kube-object";
export class ClusterRoleBindingApi extends KubeApi<ClusterRoleBinding, ClusterRoleBindingData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: ClusterRoleBinding,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import type { ClusterRoleData } from "@k8slens/kube-object";
import { ClusterRole } from "@k8slens/kube-object";
export class ClusterRoleApi extends KubeApi<ClusterRole, ClusterRoleData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: ClusterRole,
});
}
}
@@ -0,0 +1,27 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { Cluster } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ClusterApi extends KubeApi<Cluster> {
/**
* @deprecated This field is legacy and never used.
*/
static kind = "Cluster";
/**
* @deprecated This field is legacy and never used.
*/
static namespaced = true;
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...(opts ?? {}),
objectConstructor: Cluster,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { ComponentStatus } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ComponentStatusApi extends KubeApi<ComponentStatus> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: ComponentStatus,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { ConfigMapData } from "@k8slens/kube-object";
import { ConfigMap } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ConfigMapApi extends KubeApi<ConfigMap, ConfigMapData> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
objectConstructor: ConfigMap,
...(opts ?? {}),
});
}
}
@@ -0,0 +1,37 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { CronJob } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies, NamespacedResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
export class CronJobApi extends KubeApi<CronJob> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions) {
super(deps, {
...opts,
objectConstructor: CronJob,
});
}
private requestSetSuspend(params: NamespacedResourceDescriptor, suspend: boolean) {
return this.patch(
params,
{
spec: {
suspend,
},
},
"strategic",
);
}
suspend(params: NamespacedResourceDescriptor) {
return this.requestSetSuspend(params, true);
}
resume(params: NamespacedResourceDescriptor) {
return this.requestSetSuspend(params, false);
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { CustomResourceDefinition } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class CustomResourceDefinitionApi extends KubeApi<CustomResourceDefinition> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: CustomResourceDefinition,
checkPreferredVersion: true,
...opts,
});
}
}
@@ -0,0 +1,30 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import moment from "moment";
import type { DerivedKubeApiOptions, KubeApiDependencies, NamespacedResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
import { DaemonSet } from "@k8slens/kube-object";
export class DaemonSetApi extends KubeApi<DaemonSet> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: DaemonSet,
});
}
restart(params: NamespacedResourceDescriptor) {
return this.patch(params, {
spec: {
template: {
metadata: {
annotations: { "kubectl.kubernetes.io/restartedAt" : moment.utc().format() },
},
},
},
}, "strategic");
}
}
@@ -0,0 +1,41 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import moment from "moment";
import type { DerivedKubeApiOptions, KubeApiDependencies, NamespacedResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
import { Deployment } from "@k8slens/kube-object";
export class DeploymentApi extends KubeApi<Deployment> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Deployment,
});
}
async getReplicas(params: NamespacedResourceDescriptor): Promise<number> {
const { status } = await this.getResourceScale(params);
return status.replicas;
}
scale(params: NamespacedResourceDescriptor, replicas: number) {
return this.scaleResource(params, { spec: { replicas }});
}
restart(params: NamespacedResourceDescriptor) {
return this.patch(params, {
spec: {
template: {
metadata: {
annotations: { "kubectl.kubernetes.io/restartedAt" : moment.utc().format() },
},
},
},
}, "strategic");
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { EndpointsData } from "@k8slens/kube-object";
import { Endpoints } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class EndpointsApi extends KubeApi<Endpoints, EndpointsData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: Endpoints,
...opts,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { KubeEventData } from "@k8slens/kube-object";
import { KubeEvent } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class KubeEventApi extends KubeApi<KubeEvent, KubeEventData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: KubeEvent,
...opts,
});
}
}
@@ -0,0 +1,26 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import { HorizontalPodAutoscaler } from "@k8slens/kube-object";
export class HorizontalPodAutoscalerApi extends KubeApi<HorizontalPodAutoscaler> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
allowedUsableVersions: {
autoscaling: [
"v2",
"v2beta2",
"v2beta1",
"v1",
],
},
...opts ?? {},
objectConstructor: HorizontalPodAutoscaler,
checkPreferredVersion: true,
});
}
}
@@ -0,0 +1,50 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
// Kubernetes apis
// Docs: https://kubernetes.io/docs/reference/kubernetes-api/
export * from "./cluster.api";
export * from "./cluster-role.api";
export * from "./cluster-role-binding.api";
export * from "./config-map.api";
export * from "./custom-resource-definition.api";
export * from "./cron-job.api";
export * from "./component-status.api";
export * from "./daemon-set.api";
export * from "./deployment.api";
export * from "./endpoint.api";
export * from "./events.api";
export * from "./horizontal-pod-autoscaler.api";
export * from "./ingress.api";
export * from "./ingress-class.api";
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";
export * from "./persistent-volume.api";
export * from "./persistent-volume-claim.api";
export * from "./pod.api";
export * from "./pod-disruption-budget.api";
export * from "./pod-metrics.api";
export * from "./pod-security-policy.api";
export * from "./priority-class.api";
export * from "./replica-set.api";
export * from "./replication-controller.api";
export * from "./resource-quota.api";
export * from "./role.api";
export * from "./role-binding.api";
export * from "./runtime-class.api";
export * from "./secret.api";
export * from "./self-subject-rules-reviews.api";
export * from "./service.api";
export * from "./service-account.api";
export * from "./stateful-set.api";
export * from "./storage-class.api";
export * from "./vertical-pod-autoscaler.api";
@@ -0,0 +1,28 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { IngressClass } from "@k8slens/kube-object";
import type { KubeApiDependencies, ResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
export class IngressClassApi extends KubeApi<IngressClass> {
constructor(dependencies: KubeApiDependencies) {
super(dependencies, {
objectConstructor: IngressClass,
checkPreferredVersion: true,
fallbackApiBases: ["/apis/extensions/v1beta1/ingressclasses"],
});
}
setAsDefault({ name }: ResourceDescriptor, isDefault = true) {
return this.patch({ name }, {
metadata: {
annotations: {
[IngressClass.ANNOTATION_IS_DEFAULT]: String(isDefault),
},
},
}, "strategic");
}
}
@@ -0,0 +1,20 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { Ingress } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class IngressApi extends KubeApi<Ingress> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Ingress,
// Add fallback for Kubernetes <1.19
checkPreferredVersion: true,
fallbackApiBases: ["/apis/extensions/v1beta1/ingresses"],
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import { Job } from "@k8slens/kube-object";
export class JobApi extends KubeApi<Job> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Job,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import { Lease } from "@k8slens/kube-object";
export class LeaseApi extends KubeApi<Lease> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Lease,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { LimitRange } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class LimitRangeApi extends KubeApi<LimitRange> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
objectConstructor: LimitRange,
...opts ?? {},
});
}
}
@@ -0,0 +1,16 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { MutatingWebhookConfiguration } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class MutatingWebhookConfigurationApi extends KubeApi<MutatingWebhookConfiguration> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: MutatingWebhookConfiguration,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import { Namespace } from "@k8slens/kube-object";
export class NamespaceApi extends KubeApi<Namespace> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Namespace,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { NetworkPolicy } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class NetworkPolicyApi extends KubeApi<NetworkPolicy> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: NetworkPolicy,
...opts,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { Node } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class NodeApi extends KubeApi<Node> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Node,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import { PersistentVolumeClaim } from "@k8slens/kube-object";
export class PersistentVolumeClaimApi extends KubeApi<PersistentVolumeClaim> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: PersistentVolumeClaim,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { PersistentVolume } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class PersistentVolumeApi extends KubeApi<PersistentVolume> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: PersistentVolume,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { PodDisruptionBudget } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class PodDisruptionBudgetApi extends KubeApi<PodDisruptionBudget> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: PodDisruptionBudget,
...opts,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { PodMetricsData } from "@k8slens/kube-object";
import { PodMetrics } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class PodMetricsApi extends KubeApi<PodMetrics, PodMetricsData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: PodMetrics,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { PodSecurityPolicy } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class PodSecurityPolicyApi extends KubeApi<PodSecurityPolicy> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: PodSecurityPolicy,
});
}
}
@@ -0,0 +1,68 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type {
DeleteResourceDescriptor,
DerivedKubeApiOptions,
KubeApiDependencies,
ResourceDescriptor,
} from "../kube-api";
import { KubeApi } from "../kube-api";
import type { KubeStatusData, PodLogsQuery } from "@k8slens/kube-object";
import { isKubeStatusData, KubeStatus, Pod } from "@k8slens/kube-object";
export class PodApi extends KubeApi<Pod> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: Pod,
});
}
async evict(resource: DeleteResourceDescriptor) {
await this.checkPreferredVersion();
const apiUrl = this.formatUrlForNotListing(resource);
let response: KubeStatusData;
try {
response = await this.request.post<KubeStatusData>(`${apiUrl}/eviction`, {
data: {
apiVersion: "policy/v1",
kind: "Eviction",
metadata: {
...resource,
},
},
});
} catch (err) {
response = err as KubeStatusData;
}
if (isKubeStatusData(response)) {
const status = new KubeStatus(response);
if (status.code >= 200 && status.code < 300) {
return status.getExplanation();
} else {
throw status.getExplanation();
}
}
return response;
}
async getLogs(params: ResourceDescriptor, query?: PodLogsQuery): Promise<string> {
const path = `${this.getUrl(params)}/log`;
const logs = await this.request.get(path, { query });
if (typeof logs !== "string") {
return "";
}
return logs;
}
}
@@ -0,0 +1,19 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import type { PriorityClassData } from "@k8slens/kube-object";
import { PriorityClass } from "@k8slens/kube-object";
export class PriorityClassApi extends KubeApi<PriorityClass, PriorityClassData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: PriorityClass,
...opts,
});
}
}
@@ -0,0 +1,27 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies, NamespacedResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
import { ReplicaSet } from "@k8slens/kube-object";
export class ReplicaSetApi extends KubeApi<ReplicaSet> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: ReplicaSet,
});
}
async getReplicas(params: NamespacedResourceDescriptor): Promise<number> {
const { status } = await this.getResourceScale(params);
return status.replicas;
}
scale(params: NamespacedResourceDescriptor, replicas: number) {
return this.scaleResource(params, { spec: { replicas }});
}
}
@@ -0,0 +1,30 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies, NamespacedResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
import { ReplicationController } from "@k8slens/kube-object";
import type { Scale } from "@k8slens/kube-object";
export class ReplicationControllerApi extends KubeApi<ReplicationController> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: ReplicationController,
});
}
protected getScaleApiUrl(params: NamespacedResourceDescriptor) {
return `${this.formatUrlForNotListing(params)}/scale`;
}
getScale(params: NamespacedResourceDescriptor): Promise<Scale> {
return this.request.get(this.getScaleApiUrl(params));
}
scale(params: NamespacedResourceDescriptor, replicas: number): Promise<Scale> {
return this.scaleResource(params, { spec: { replicas }});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { ResourceQuota } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ResourceQuotaApi extends KubeApi<ResourceQuota> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: ResourceQuota,
...opts,
});
}
}
@@ -0,0 +1,19 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { RoleBindingData } from "@k8slens/kube-object";
import { RoleBinding } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class RoleBindingApi extends KubeApi<RoleBinding, RoleBindingData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: RoleBinding,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { RoleData } from "@k8slens/kube-object";
import { Role } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class RoleApi extends KubeApi<Role, RoleData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: Role,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import type { RuntimeClassData } from "@k8slens/kube-object";
import { RuntimeClass } from "@k8slens/kube-object";
export class RuntimeClassApi extends KubeApi<RuntimeClass, RuntimeClassData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
objectConstructor: RuntimeClass,
...opts,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
import { Secret } from "@k8slens/kube-object";
import type { SecretData } from "@k8slens/kube-object";
export class SecretApi extends KubeApi<Secret, SecretData> {
constructor(deps: KubeApiDependencies, options: DerivedKubeApiOptions = {}) {
super(deps, {
...options,
objectConstructor: Secret,
});
}
}
@@ -0,0 +1,25 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { SelfSubjectRulesReview } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class SelfSubjectRulesReviewApi extends KubeApi<SelfSubjectRulesReview> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: SelfSubjectRulesReview,
});
}
create({ namespace = "default" }) {
return super.create({}, {
spec: {
namespace,
},
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { ServiceAccountData } from "@k8slens/kube-object";
import { ServiceAccount } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ServiceAccountApi extends KubeApi<ServiceAccount, ServiceAccountData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: ServiceAccount,
});
}
}
@@ -0,0 +1,17 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { Service } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ServiceApi extends KubeApi<Service> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: Service,
});
}
}
@@ -0,0 +1,41 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import moment from "moment";
import type { DerivedKubeApiOptions, KubeApiDependencies, NamespacedResourceDescriptor } from "../kube-api";
import { KubeApi } from "../kube-api";
import { StatefulSet } from "@k8slens/kube-object";
export class StatefulSetApi extends KubeApi<StatefulSet> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: StatefulSet,
});
}
async getReplicas(params: NamespacedResourceDescriptor): Promise<number> {
const { status } = await this.getResourceScale(params);
return status.replicas;
}
scale(params: NamespacedResourceDescriptor, replicas: number) {
return this.scaleResource(params, { spec: { replicas }});
}
restart(params: NamespacedResourceDescriptor) {
return this.patch(params, {
spec: {
template: {
metadata: {
annotations: { "kubectl.kubernetes.io/restartedAt" : moment.utc().format() },
},
},
},
}, "strategic");
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import type { StorageClassData } from "@k8slens/kube-object";
import { StorageClass } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class StorageClassApi extends KubeApi<StorageClass, StorageClassData> {
constructor(deps: KubeApiDependencies, opts: DerivedKubeApiOptions = {}) {
super(deps, {
...opts,
objectConstructor: StorageClass,
});
}
}
@@ -0,0 +1,16 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { ValidatingWebhookConfiguration } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class ValidatingWebhookConfigurationApi extends KubeApi<ValidatingWebhookConfiguration> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: ValidatingWebhookConfiguration,
});
}
}
@@ -0,0 +1,18 @@
/**
* Copyright (c) OpenLens Authors. All rights reserved.
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
import { VerticalPodAutoscaler } from "@k8slens/kube-object";
import type { DerivedKubeApiOptions, KubeApiDependencies } from "../kube-api";
import { KubeApi } from "../kube-api";
export class VerticalPodAutoscalerApi extends KubeApi<VerticalPodAutoscaler> {
constructor(deps: KubeApiDependencies, opts?: DerivedKubeApiOptions) {
super(deps, {
...opts ?? {},
objectConstructor: VerticalPodAutoscaler,
});
}
}