mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
15030f5ce9
commit
474aaae8c6
@ -1,22 +1,13 @@
|
|||||||
import type { KubeObjectStore } from "../kube-object.store";
|
import type { KubeObjectStore } from "../kube-object.store";
|
||||||
import type { KubeObjectDetailsProps, KubeObjectListLayoutProps, KubeObjectMenuProps } from "../components/kube-object";
|
|
||||||
import type React from "react";
|
|
||||||
|
|
||||||
import { observable } from "mobx";
|
import { action, observable } from "mobx";
|
||||||
import { autobind } from "../utils";
|
import { autobind } from "../utils";
|
||||||
import { KubeApi } from "./kube-api";
|
import { KubeApi } from "./kube-api";
|
||||||
|
|
||||||
export interface ApiComponents {
|
|
||||||
List?: React.ComponentType<KubeObjectListLayoutProps>;
|
|
||||||
Menu?: React.ComponentType<KubeObjectMenuProps>;
|
|
||||||
Details?: React.ComponentType<KubeObjectDetailsProps>;
|
|
||||||
}
|
|
||||||
|
|
||||||
@autobind()
|
@autobind()
|
||||||
export class ApiManager {
|
export class ApiManager {
|
||||||
private apis = observable.map<string, KubeApi>();
|
private apis = observable.map<string, KubeApi>();
|
||||||
private stores = observable.map<KubeApi, KubeObjectStore>();
|
private stores = observable.map<KubeApi, KubeObjectStore>();
|
||||||
private views = observable.map<KubeApi, ApiComponents>();
|
|
||||||
|
|
||||||
getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) {
|
getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) {
|
||||||
if (typeof pathOrCallback === "string") {
|
if (typeof pathOrCallback === "string") {
|
||||||
@ -46,8 +37,11 @@ export class ApiManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
registerStore(api: KubeApi, store: KubeObjectStore) {
|
@action
|
||||||
this.stores.set(api, store);
|
registerStore(store: KubeObjectStore, apis: KubeApi[] = [store.api]) {
|
||||||
|
apis.forEach(api => {
|
||||||
|
this.stores.set(api, store);
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
getStore(api: string | KubeApi): KubeObjectStore {
|
getStore(api: string | KubeApi): KubeObjectStore {
|
||||||
|
|||||||
@ -9,7 +9,6 @@ import { kubeWatchApi } from "./kube-watch-api";
|
|||||||
import { apiManager } from "./api-manager";
|
import { apiManager } from "./api-manager";
|
||||||
import { createKubeApiURL, parseKubeApi } from "./kube-api-parse";
|
import { createKubeApiURL, parseKubeApi } from "./kube-api-parse";
|
||||||
import { apiKubePrefix, isDevelopment } from "../../common/vars";
|
import { apiKubePrefix, isDevelopment } from "../../common/vars";
|
||||||
import * as URL from "url"
|
|
||||||
|
|
||||||
export interface IKubeApiOptions<T extends KubeObject> {
|
export interface IKubeApiOptions<T extends KubeObject> {
|
||||||
apiBase?: string; // base api-path for listing all resources, e.g. "/api/v1/pods"
|
apiBase?: string; // base api-path for listing all resources, e.g. "/api/v1/pods"
|
||||||
|
|||||||
@ -107,4 +107,4 @@ export class ClusterStore extends KubeObjectStore<Cluster> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const clusterStore = new ClusterStore();
|
export const clusterStore = new ClusterStore();
|
||||||
apiManager.registerStore(clusterApi, clusterStore);
|
apiManager.registerStore(clusterStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class HPAStore extends KubeObjectStore<HorizontalPodAutoscaler> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const hpaStore = new HPAStore();
|
export const hpaStore = new HPAStore();
|
||||||
apiManager.registerStore(hpaApi, hpaStore);
|
apiManager.registerStore(hpaStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class ConfigMapsStore extends KubeObjectStore<ConfigMap> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const configMapsStore = new ConfigMapsStore();
|
export const configMapsStore = new ConfigMapsStore();
|
||||||
apiManager.registerStore(configMapApi, configMapsStore);
|
apiManager.registerStore(configMapsStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class PodDisruptionBudgetsStore extends KubeObjectStore<PodDisruptionBudg
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const podDisruptionBudgetsStore = new PodDisruptionBudgetsStore();
|
export const podDisruptionBudgetsStore = new PodDisruptionBudgetsStore();
|
||||||
apiManager.registerStore(pdbApi, podDisruptionBudgetsStore);
|
apiManager.registerStore(podDisruptionBudgetsStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class ResourceQuotasStore extends KubeObjectStore<ResourceQuota> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const resourceQuotaStore = new ResourceQuotasStore();
|
export const resourceQuotaStore = new ResourceQuotasStore();
|
||||||
apiManager.registerStore(resourceQuotaApi, resourceQuotaStore);
|
apiManager.registerStore(resourceQuotaStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class SecretsStore extends KubeObjectStore<Secret> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const secretsStore = new SecretsStore();
|
export const secretsStore = new SecretsStore();
|
||||||
apiManager.registerStore(secretsApi, secretsStore);
|
apiManager.registerStore(secretsStore);
|
||||||
|
|||||||
@ -14,7 +14,7 @@ function initStore(crd: CustomResourceDefinition) {
|
|||||||
const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced });
|
const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced });
|
||||||
|
|
||||||
if (!apiManager.getStore(api)) {
|
if (!apiManager.getStore(api)) {
|
||||||
apiManager.registerStore(api, new CRDResourceStore(api));
|
apiManager.registerStore(new CRDResourceStore(api));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -64,4 +64,4 @@ export class CRDStore extends KubeObjectStore<CustomResourceDefinition> {
|
|||||||
|
|
||||||
export const crdStore = new CRDStore();
|
export const crdStore = new CRDStore();
|
||||||
|
|
||||||
apiManager.registerStore(crdApi, crdStore);
|
apiManager.registerStore(crdStore);
|
||||||
|
|||||||
@ -49,4 +49,4 @@ export class EventStore extends KubeObjectStore<KubeEvent> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const eventStore = new EventStore();
|
export const eventStore = new EventStore();
|
||||||
apiManager.registerStore(eventApi, eventStore);
|
apiManager.registerStore(eventStore);
|
||||||
|
|||||||
@ -95,4 +95,4 @@ export class NamespaceStore extends KubeObjectStore<Namespace> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const namespaceStore = new NamespaceStore();
|
export const namespaceStore = new NamespaceStore();
|
||||||
apiManager.registerStore(namespacesApi, namespaceStore);
|
apiManager.registerStore(namespaceStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class EndpointStore extends KubeObjectStore<Endpoint> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const endpointStore = new EndpointStore();
|
export const endpointStore = new EndpointStore();
|
||||||
apiManager.registerStore(endpointApi, endpointStore);
|
apiManager.registerStore(endpointStore);
|
||||||
|
|||||||
@ -19,4 +19,4 @@ export class IngressStore extends KubeObjectStore<Ingress> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const ingressStore = new IngressStore();
|
export const ingressStore = new IngressStore();
|
||||||
apiManager.registerStore(ingressApi, ingressStore);
|
apiManager.registerStore(ingressStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class NetworkPolicyStore extends KubeObjectStore<NetworkPolicy> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const networkPolicyStore = new NetworkPolicyStore();
|
export const networkPolicyStore = new NetworkPolicyStore();
|
||||||
apiManager.registerStore(networkPolicyApi, networkPolicyStore);
|
apiManager.registerStore(networkPolicyStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class ServiceStore extends KubeObjectStore<Service> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const serviceStore = new ServiceStore();
|
export const serviceStore = new ServiceStore();
|
||||||
apiManager.registerStore(serviceApi, serviceStore);
|
apiManager.registerStore(serviceStore);
|
||||||
|
|||||||
@ -69,4 +69,4 @@ export class NodesStore extends KubeObjectStore<Node> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const nodesStore = new NodesStore()
|
export const nodesStore = new NodesStore()
|
||||||
apiManager.registerStore(nodesApi, nodesStore);
|
apiManager.registerStore(nodesStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class PodSecurityPoliciesStore extends KubeObjectStore<PodSecurityPolicy>
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const podSecurityPoliciesStore = new PodSecurityPoliciesStore()
|
export const podSecurityPoliciesStore = new PodSecurityPoliciesStore()
|
||||||
apiManager.registerStore(pspApi, podSecurityPoliciesStore);
|
apiManager.registerStore(podSecurityPoliciesStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class StorageClassStore extends KubeObjectStore<StorageClass> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const storageClassStore = new StorageClassStore();
|
export const storageClassStore = new StorageClassStore();
|
||||||
apiManager.registerStore(storageClassApi, storageClassStore);
|
apiManager.registerStore(storageClassStore);
|
||||||
|
|||||||
@ -20,4 +20,4 @@ export class VolumeClaimStore extends KubeObjectStore<PersistentVolumeClaim> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const volumeClaimStore = new VolumeClaimStore();
|
export const volumeClaimStore = new VolumeClaimStore();
|
||||||
apiManager.registerStore(pvcApi, volumeClaimStore);
|
apiManager.registerStore(volumeClaimStore);
|
||||||
|
|||||||
@ -9,4 +9,4 @@ export class PersistentVolumesStore extends KubeObjectStore<PersistentVolume> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const volumesStore = new PersistentVolumesStore();
|
export const volumesStore = new PersistentVolumesStore();
|
||||||
apiManager.registerStore(persistentVolumeApi, volumesStore);
|
apiManager.registerStore(volumesStore);
|
||||||
|
|||||||
@ -30,8 +30,7 @@ export class RoleBindingsStore extends KubeObjectStore<RoleBinding> {
|
|||||||
return Promise.all(
|
return Promise.all(
|
||||||
namespaces.map(namespace => roleBindingApi.list({ namespace }))
|
namespaces.map(namespace => roleBindingApi.list({ namespace }))
|
||||||
).then(items => items.flat())
|
).then(items => items.flat())
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return Promise.all([clusterRoleBindingApi.list(), roleBindingApi.list()])
|
return Promise.all([clusterRoleBindingApi.list(), roleBindingApi.list()])
|
||||||
.then(items => items.flat())
|
.then(items => items.flat())
|
||||||
}
|
}
|
||||||
@ -40,8 +39,7 @@ export class RoleBindingsStore extends KubeObjectStore<RoleBinding> {
|
|||||||
protected async createItem(params: { name: string; namespace?: string }, data?: Partial<RoleBinding>) {
|
protected async createItem(params: { name: string; namespace?: string }, data?: Partial<RoleBinding>) {
|
||||||
if (params.namespace) {
|
if (params.namespace) {
|
||||||
return roleBindingApi.create(params, data)
|
return roleBindingApi.create(params, data)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return clusterRoleBindingApi.create(params, data)
|
return clusterRoleBindingApi.create(params, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -58,8 +56,7 @@ export class RoleBindingsStore extends KubeObjectStore<RoleBinding> {
|
|||||||
newSubjects = uniqBy(currentSubjects.concat(addSubjects), ({ kind, name, namespace }) => {
|
newSubjects = uniqBy(currentSubjects.concat(addSubjects), ({ kind, name, namespace }) => {
|
||||||
return [kind, name, namespace].join("-");
|
return [kind, name, namespace].join("-");
|
||||||
})
|
})
|
||||||
}
|
} else if (removeSubjects) {
|
||||||
else if (removeSubjects) {
|
|
||||||
newSubjects = difference(currentSubjects, removeSubjects);
|
newSubjects = difference(currentSubjects, removeSubjects);
|
||||||
}
|
}
|
||||||
return this.update(roleBinding, {
|
return this.update(roleBinding, {
|
||||||
@ -71,5 +68,7 @@ export class RoleBindingsStore extends KubeObjectStore<RoleBinding> {
|
|||||||
|
|
||||||
export const roleBindingsStore = new RoleBindingsStore();
|
export const roleBindingsStore = new RoleBindingsStore();
|
||||||
|
|
||||||
apiManager.registerStore(roleBindingApi, roleBindingsStore);
|
apiManager.registerStore(roleBindingsStore, [
|
||||||
apiManager.registerStore(clusterRoleBindingApi, roleBindingsStore);
|
roleBindingApi,
|
||||||
|
clusterRoleBindingApi,
|
||||||
|
]);
|
||||||
|
|||||||
@ -28,8 +28,7 @@ export class RolesStore extends KubeObjectStore<Role> {
|
|||||||
return Promise.all(
|
return Promise.all(
|
||||||
namespaces.map(namespace => roleApi.list({ namespace }))
|
namespaces.map(namespace => roleApi.list({ namespace }))
|
||||||
).then(items => items.flat())
|
).then(items => items.flat())
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return Promise.all([clusterRoleApi.list(), roleApi.list()])
|
return Promise.all([clusterRoleApi.list(), roleApi.list()])
|
||||||
.then(items => items.flat())
|
.then(items => items.flat())
|
||||||
}
|
}
|
||||||
@ -38,8 +37,7 @@ export class RolesStore extends KubeObjectStore<Role> {
|
|||||||
protected async createItem(params: { name: string; namespace?: string }, data?: Partial<Role>) {
|
protected async createItem(params: { name: string; namespace?: string }, data?: Partial<Role>) {
|
||||||
if (params.namespace) {
|
if (params.namespace) {
|
||||||
return roleApi.create(params, data)
|
return roleApi.create(params, data)
|
||||||
}
|
} else {
|
||||||
else {
|
|
||||||
return clusterRoleApi.create(params, data)
|
return clusterRoleApi.create(params, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -47,5 +45,7 @@ export class RolesStore extends KubeObjectStore<Role> {
|
|||||||
|
|
||||||
export const rolesStore = new RolesStore();
|
export const rolesStore = new RolesStore();
|
||||||
|
|
||||||
apiManager.registerStore(roleApi, rolesStore);
|
apiManager.registerStore(rolesStore, [
|
||||||
apiManager.registerStore(clusterRoleApi, rolesStore);
|
roleApi,
|
||||||
|
clusterRoleApi,
|
||||||
|
]);
|
||||||
@ -14,4 +14,4 @@ export class ServiceAccountsStore extends KubeObjectStore<ServiceAccount> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const serviceAccountsStore = new ServiceAccountsStore();
|
export const serviceAccountsStore = new ServiceAccountsStore();
|
||||||
apiManager.registerStore(serviceAccountsApi, serviceAccountsStore);
|
apiManager.registerStore(serviceAccountsStore);
|
||||||
|
|||||||
@ -30,4 +30,4 @@ export class CronJobStore extends KubeObjectStore<CronJob> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const cronJobStore = new CronJobStore();
|
export const cronJobStore = new CronJobStore();
|
||||||
apiManager.registerStore(cronJobApi, cronJobStore);
|
apiManager.registerStore(cronJobStore);
|
||||||
|
|||||||
@ -43,4 +43,4 @@ export class DaemonSetStore extends KubeObjectStore<DaemonSet> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const daemonSetStore = new DaemonSetStore();
|
export const daemonSetStore = new DaemonSetStore();
|
||||||
apiManager.registerStore(daemonSetApi, daemonSetStore);
|
apiManager.registerStore(daemonSetStore);
|
||||||
|
|||||||
@ -50,4 +50,4 @@ export class DeploymentStore extends KubeObjectStore<Deployment> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const deploymentStore = new DeploymentStore();
|
export const deploymentStore = new DeploymentStore();
|
||||||
apiManager.registerStore(deploymentApi, deploymentStore);
|
apiManager.registerStore(deploymentStore);
|
||||||
|
|||||||
@ -42,4 +42,4 @@ export class JobStore extends KubeObjectStore<Job> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const jobStore = new JobStore();
|
export const jobStore = new JobStore();
|
||||||
apiManager.registerStore(jobApi, jobStore);
|
apiManager.registerStore(jobStore);
|
||||||
|
|||||||
@ -76,4 +76,4 @@ export class PodsStore extends KubeObjectStore<Pod> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const podsStore = new PodsStore();
|
export const podsStore = new PodsStore();
|
||||||
apiManager.registerStore(podsApi, podsStore);
|
apiManager.registerStore(podsStore);
|
||||||
|
|||||||
@ -31,4 +31,4 @@ export class ReplicaSetStore extends KubeObjectStore<ReplicaSet> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const replicaSetStore = new ReplicaSetStore();
|
export const replicaSetStore = new ReplicaSetStore();
|
||||||
apiManager.registerStore(replicaSetApi, replicaSetStore);
|
apiManager.registerStore(replicaSetStore);
|
||||||
|
|||||||
@ -42,4 +42,4 @@ export class StatefulSetStore extends KubeObjectStore<StatefulSet> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export const statefulSetStore = new StatefulSetStore();
|
export const statefulSetStore = new StatefulSetStore();
|
||||||
apiManager.registerStore(statefulSetApi, statefulSetStore);
|
apiManager.registerStore(statefulSetStore);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user