1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

ApiManager.registerStore should be simplified #1275 (#1278)

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2020-11-09 13:30:41 +02:00 committed by GitHub
parent 15030f5ce9
commit 474aaae8c6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 46 additions and 54 deletions

View File

@ -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 {

View File

@ -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"

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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,
]);

View File

@ -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,
]);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);

View File

@ -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);