diff --git a/src/renderer/api/api-manager.ts b/src/renderer/api/api-manager.ts index b178c55739..0b066f37e1 100644 --- a/src/renderer/api/api-manager.ts +++ b/src/renderer/api/api-manager.ts @@ -1,22 +1,13 @@ 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 { KubeApi } from "./kube-api"; -export interface ApiComponents { - List?: React.ComponentType; - Menu?: React.ComponentType; - Details?: React.ComponentType; -} - @autobind() export class ApiManager { private apis = observable.map(); private stores = observable.map(); - private views = observable.map(); getApi(pathOrCallback: string | ((api: KubeApi) => boolean)) { if (typeof pathOrCallback === "string") { @@ -46,8 +37,11 @@ export class ApiManager { } } - registerStore(api: KubeApi, store: KubeObjectStore) { - this.stores.set(api, store); + @action + registerStore(store: KubeObjectStore, apis: KubeApi[] = [store.api]) { + apis.forEach(api => { + this.stores.set(api, store); + }) } getStore(api: string | KubeApi): KubeObjectStore { diff --git a/src/renderer/api/kube-api.ts b/src/renderer/api/kube-api.ts index d2373985f0..b572bd774c 100644 --- a/src/renderer/api/kube-api.ts +++ b/src/renderer/api/kube-api.ts @@ -9,7 +9,6 @@ import { kubeWatchApi } from "./kube-watch-api"; import { apiManager } from "./api-manager"; import { createKubeApiURL, parseKubeApi } from "./kube-api-parse"; import { apiKubePrefix, isDevelopment } from "../../common/vars"; -import * as URL from "url" export interface IKubeApiOptions { apiBase?: string; // base api-path for listing all resources, e.g. "/api/v1/pods" diff --git a/src/renderer/components/+cluster/cluster.store.ts b/src/renderer/components/+cluster/cluster.store.ts index 01c4e0f013..3af42297b0 100644 --- a/src/renderer/components/+cluster/cluster.store.ts +++ b/src/renderer/components/+cluster/cluster.store.ts @@ -107,4 +107,4 @@ export class ClusterStore extends KubeObjectStore { } export const clusterStore = new ClusterStore(); -apiManager.registerStore(clusterApi, clusterStore); +apiManager.registerStore(clusterStore); diff --git a/src/renderer/components/+config-autoscalers/hpa.store.ts b/src/renderer/components/+config-autoscalers/hpa.store.ts index 62b971dd5c..240f42a309 100644 --- a/src/renderer/components/+config-autoscalers/hpa.store.ts +++ b/src/renderer/components/+config-autoscalers/hpa.store.ts @@ -9,4 +9,4 @@ export class HPAStore extends KubeObjectStore { } export const hpaStore = new HPAStore(); -apiManager.registerStore(hpaApi, hpaStore); +apiManager.registerStore(hpaStore); diff --git a/src/renderer/components/+config-maps/config-maps.store.ts b/src/renderer/components/+config-maps/config-maps.store.ts index 5fd2526641..d6dcc5f916 100644 --- a/src/renderer/components/+config-maps/config-maps.store.ts +++ b/src/renderer/components/+config-maps/config-maps.store.ts @@ -9,4 +9,4 @@ export class ConfigMapsStore extends KubeObjectStore { } export const configMapsStore = new ConfigMapsStore(); -apiManager.registerStore(configMapApi, configMapsStore); +apiManager.registerStore(configMapsStore); diff --git a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts index f25904119e..1eca71e1ba 100644 --- a/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts +++ b/src/renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store.ts @@ -9,4 +9,4 @@ export class PodDisruptionBudgetsStore extends KubeObjectStore { } export const resourceQuotaStore = new ResourceQuotasStore(); -apiManager.registerStore(resourceQuotaApi, resourceQuotaStore); +apiManager.registerStore(resourceQuotaStore); diff --git a/src/renderer/components/+config-secrets/secrets.store.ts b/src/renderer/components/+config-secrets/secrets.store.ts index 18f3a3e5d3..df5a78b3ac 100644 --- a/src/renderer/components/+config-secrets/secrets.store.ts +++ b/src/renderer/components/+config-secrets/secrets.store.ts @@ -9,4 +9,4 @@ export class SecretsStore extends KubeObjectStore { } export const secretsStore = new SecretsStore(); -apiManager.registerStore(secretsApi, secretsStore); +apiManager.registerStore(secretsStore); diff --git a/src/renderer/components/+custom-resources/crd.store.ts b/src/renderer/components/+custom-resources/crd.store.ts index fadb1222e2..e73bbd1fb7 100644 --- a/src/renderer/components/+custom-resources/crd.store.ts +++ b/src/renderer/components/+custom-resources/crd.store.ts @@ -14,7 +14,7 @@ function initStore(crd: CustomResourceDefinition) { const api = apiManager.getApi(apiBase) || new KubeApi({ apiBase, kind, isNamespaced }); if (!apiManager.getStore(api)) { - apiManager.registerStore(api, new CRDResourceStore(api)); + apiManager.registerStore(new CRDResourceStore(api)); } } @@ -64,4 +64,4 @@ export class CRDStore extends KubeObjectStore { export const crdStore = new CRDStore(); -apiManager.registerStore(crdApi, crdStore); +apiManager.registerStore(crdStore); diff --git a/src/renderer/components/+events/event.store.ts b/src/renderer/components/+events/event.store.ts index 23ebc7ccc9..3d8142a55f 100644 --- a/src/renderer/components/+events/event.store.ts +++ b/src/renderer/components/+events/event.store.ts @@ -49,4 +49,4 @@ export class EventStore extends KubeObjectStore { } export const eventStore = new EventStore(); -apiManager.registerStore(eventApi, eventStore); +apiManager.registerStore(eventStore); diff --git a/src/renderer/components/+namespaces/namespace.store.ts b/src/renderer/components/+namespaces/namespace.store.ts index c9f190be97..8874aa9233 100644 --- a/src/renderer/components/+namespaces/namespace.store.ts +++ b/src/renderer/components/+namespaces/namespace.store.ts @@ -95,4 +95,4 @@ export class NamespaceStore extends KubeObjectStore { } export const namespaceStore = new NamespaceStore(); -apiManager.registerStore(namespacesApi, namespaceStore); +apiManager.registerStore(namespaceStore); diff --git a/src/renderer/components/+network-endpoints/endpoints.store.ts b/src/renderer/components/+network-endpoints/endpoints.store.ts index 17485ec712..5d4a6b6ff7 100644 --- a/src/renderer/components/+network-endpoints/endpoints.store.ts +++ b/src/renderer/components/+network-endpoints/endpoints.store.ts @@ -9,4 +9,4 @@ export class EndpointStore extends KubeObjectStore { } export const endpointStore = new EndpointStore(); -apiManager.registerStore(endpointApi, endpointStore); +apiManager.registerStore(endpointStore); diff --git a/src/renderer/components/+network-ingresses/ingress.store.ts b/src/renderer/components/+network-ingresses/ingress.store.ts index 5f299c51e8..37156c2741 100644 --- a/src/renderer/components/+network-ingresses/ingress.store.ts +++ b/src/renderer/components/+network-ingresses/ingress.store.ts @@ -19,4 +19,4 @@ export class IngressStore extends KubeObjectStore { } export const ingressStore = new IngressStore(); -apiManager.registerStore(ingressApi, ingressStore); +apiManager.registerStore(ingressStore); diff --git a/src/renderer/components/+network-policies/network-policy.store.ts b/src/renderer/components/+network-policies/network-policy.store.ts index 74faa8db26..0f37de3ac0 100644 --- a/src/renderer/components/+network-policies/network-policy.store.ts +++ b/src/renderer/components/+network-policies/network-policy.store.ts @@ -9,4 +9,4 @@ export class NetworkPolicyStore extends KubeObjectStore { } export const networkPolicyStore = new NetworkPolicyStore(); -apiManager.registerStore(networkPolicyApi, networkPolicyStore); +apiManager.registerStore(networkPolicyStore); diff --git a/src/renderer/components/+network-services/services.store.ts b/src/renderer/components/+network-services/services.store.ts index b080297dfa..d3e3c7b983 100644 --- a/src/renderer/components/+network-services/services.store.ts +++ b/src/renderer/components/+network-services/services.store.ts @@ -9,4 +9,4 @@ export class ServiceStore extends KubeObjectStore { } export const serviceStore = new ServiceStore(); -apiManager.registerStore(serviceApi, serviceStore); +apiManager.registerStore(serviceStore); diff --git a/src/renderer/components/+nodes/nodes.store.ts b/src/renderer/components/+nodes/nodes.store.ts index 7892b005a8..8c04f55ad5 100644 --- a/src/renderer/components/+nodes/nodes.store.ts +++ b/src/renderer/components/+nodes/nodes.store.ts @@ -69,4 +69,4 @@ export class NodesStore extends KubeObjectStore { } export const nodesStore = new NodesStore() -apiManager.registerStore(nodesApi, nodesStore); +apiManager.registerStore(nodesStore); diff --git a/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts b/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts index d79b3d5d10..2517dcc59a 100644 --- a/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts +++ b/src/renderer/components/+pod-security-policies/pod-security-policies.store.ts @@ -9,4 +9,4 @@ export class PodSecurityPoliciesStore extends KubeObjectStore } export const podSecurityPoliciesStore = new PodSecurityPoliciesStore() -apiManager.registerStore(pspApi, podSecurityPoliciesStore); +apiManager.registerStore(podSecurityPoliciesStore); diff --git a/src/renderer/components/+storage-classes/storage-class.store.ts b/src/renderer/components/+storage-classes/storage-class.store.ts index 09f658d01b..9ff90bc921 100644 --- a/src/renderer/components/+storage-classes/storage-class.store.ts +++ b/src/renderer/components/+storage-classes/storage-class.store.ts @@ -9,4 +9,4 @@ export class StorageClassStore extends KubeObjectStore { } export const storageClassStore = new StorageClassStore(); -apiManager.registerStore(storageClassApi, storageClassStore); +apiManager.registerStore(storageClassStore); diff --git a/src/renderer/components/+storage-volume-claims/volume-claim.store.ts b/src/renderer/components/+storage-volume-claims/volume-claim.store.ts index 640acf4832..ea07c4c6c1 100644 --- a/src/renderer/components/+storage-volume-claims/volume-claim.store.ts +++ b/src/renderer/components/+storage-volume-claims/volume-claim.store.ts @@ -20,4 +20,4 @@ export class VolumeClaimStore extends KubeObjectStore { } export const volumeClaimStore = new VolumeClaimStore(); -apiManager.registerStore(pvcApi, volumeClaimStore); +apiManager.registerStore(volumeClaimStore); diff --git a/src/renderer/components/+storage-volumes/volumes.store.ts b/src/renderer/components/+storage-volumes/volumes.store.ts index 1ad2ad7b91..f065c562c9 100644 --- a/src/renderer/components/+storage-volumes/volumes.store.ts +++ b/src/renderer/components/+storage-volumes/volumes.store.ts @@ -9,4 +9,4 @@ export class PersistentVolumesStore extends KubeObjectStore { } export const volumesStore = new PersistentVolumesStore(); -apiManager.registerStore(persistentVolumeApi, volumesStore); +apiManager.registerStore(volumesStore); diff --git a/src/renderer/components/+user-management-roles-bindings/role-bindings.store.ts b/src/renderer/components/+user-management-roles-bindings/role-bindings.store.ts index 9678657f19..bbef0ebd31 100644 --- a/src/renderer/components/+user-management-roles-bindings/role-bindings.store.ts +++ b/src/renderer/components/+user-management-roles-bindings/role-bindings.store.ts @@ -30,8 +30,7 @@ export class RoleBindingsStore extends KubeObjectStore { return Promise.all( namespaces.map(namespace => roleBindingApi.list({ namespace })) ).then(items => items.flat()) - } - else { + } else { return Promise.all([clusterRoleBindingApi.list(), roleBindingApi.list()]) .then(items => items.flat()) } @@ -40,8 +39,7 @@ export class RoleBindingsStore extends KubeObjectStore { protected async createItem(params: { name: string; namespace?: string }, data?: Partial) { if (params.namespace) { return roleBindingApi.create(params, data) - } - else { + } else { return clusterRoleBindingApi.create(params, data) } } @@ -58,8 +56,7 @@ export class RoleBindingsStore extends KubeObjectStore { newSubjects = uniqBy(currentSubjects.concat(addSubjects), ({ kind, name, namespace }) => { return [kind, name, namespace].join("-"); }) - } - else if (removeSubjects) { + } else if (removeSubjects) { newSubjects = difference(currentSubjects, removeSubjects); } return this.update(roleBinding, { @@ -71,5 +68,7 @@ export class RoleBindingsStore extends KubeObjectStore { export const roleBindingsStore = new RoleBindingsStore(); -apiManager.registerStore(roleBindingApi, roleBindingsStore); -apiManager.registerStore(clusterRoleBindingApi, roleBindingsStore); +apiManager.registerStore(roleBindingsStore, [ + roleBindingApi, + clusterRoleBindingApi, +]); diff --git a/src/renderer/components/+user-management-roles/roles.store.ts b/src/renderer/components/+user-management-roles/roles.store.ts index 90658b8339..e41171ee0c 100644 --- a/src/renderer/components/+user-management-roles/roles.store.ts +++ b/src/renderer/components/+user-management-roles/roles.store.ts @@ -28,8 +28,7 @@ export class RolesStore extends KubeObjectStore { return Promise.all( namespaces.map(namespace => roleApi.list({ namespace })) ).then(items => items.flat()) - } - else { + } else { return Promise.all([clusterRoleApi.list(), roleApi.list()]) .then(items => items.flat()) } @@ -38,8 +37,7 @@ export class RolesStore extends KubeObjectStore { protected async createItem(params: { name: string; namespace?: string }, data?: Partial) { if (params.namespace) { return roleApi.create(params, data) - } - else { + } else { return clusterRoleApi.create(params, data) } } @@ -47,5 +45,7 @@ export class RolesStore extends KubeObjectStore { export const rolesStore = new RolesStore(); -apiManager.registerStore(roleApi, rolesStore); -apiManager.registerStore(clusterRoleApi, rolesStore); +apiManager.registerStore(rolesStore, [ + roleApi, + clusterRoleApi, +]); \ No newline at end of file diff --git a/src/renderer/components/+user-management-service-accounts/service-accounts.store.ts b/src/renderer/components/+user-management-service-accounts/service-accounts.store.ts index a0b387508f..ff958567ae 100644 --- a/src/renderer/components/+user-management-service-accounts/service-accounts.store.ts +++ b/src/renderer/components/+user-management-service-accounts/service-accounts.store.ts @@ -14,4 +14,4 @@ export class ServiceAccountsStore extends KubeObjectStore { } export const serviceAccountsStore = new ServiceAccountsStore(); -apiManager.registerStore(serviceAccountsApi, serviceAccountsStore); +apiManager.registerStore(serviceAccountsStore); diff --git a/src/renderer/components/+workloads-cronjobs/cronjob.store.ts b/src/renderer/components/+workloads-cronjobs/cronjob.store.ts index e8fa3719ae..b1370d2104 100644 --- a/src/renderer/components/+workloads-cronjobs/cronjob.store.ts +++ b/src/renderer/components/+workloads-cronjobs/cronjob.store.ts @@ -30,4 +30,4 @@ export class CronJobStore extends KubeObjectStore { } export const cronJobStore = new CronJobStore(); -apiManager.registerStore(cronJobApi, cronJobStore); +apiManager.registerStore(cronJobStore); diff --git a/src/renderer/components/+workloads-daemonsets/daemonsets.store.ts b/src/renderer/components/+workloads-daemonsets/daemonsets.store.ts index dd59aad8ff..142079a365 100644 --- a/src/renderer/components/+workloads-daemonsets/daemonsets.store.ts +++ b/src/renderer/components/+workloads-daemonsets/daemonsets.store.ts @@ -43,4 +43,4 @@ export class DaemonSetStore extends KubeObjectStore { } export const daemonSetStore = new DaemonSetStore(); -apiManager.registerStore(daemonSetApi, daemonSetStore); +apiManager.registerStore(daemonSetStore); diff --git a/src/renderer/components/+workloads-deployments/deployments.store.ts b/src/renderer/components/+workloads-deployments/deployments.store.ts index 07fc095629..3069a84d3c 100644 --- a/src/renderer/components/+workloads-deployments/deployments.store.ts +++ b/src/renderer/components/+workloads-deployments/deployments.store.ts @@ -50,4 +50,4 @@ export class DeploymentStore extends KubeObjectStore { } export const deploymentStore = new DeploymentStore(); -apiManager.registerStore(deploymentApi, deploymentStore); +apiManager.registerStore(deploymentStore); diff --git a/src/renderer/components/+workloads-jobs/job.store.ts b/src/renderer/components/+workloads-jobs/job.store.ts index 592347062c..c387e7793d 100644 --- a/src/renderer/components/+workloads-jobs/job.store.ts +++ b/src/renderer/components/+workloads-jobs/job.store.ts @@ -42,4 +42,4 @@ export class JobStore extends KubeObjectStore { } export const jobStore = new JobStore(); -apiManager.registerStore(jobApi, jobStore); +apiManager.registerStore(jobStore); diff --git a/src/renderer/components/+workloads-pods/pods.store.ts b/src/renderer/components/+workloads-pods/pods.store.ts index fe95ba4e48..a42b5d515c 100644 --- a/src/renderer/components/+workloads-pods/pods.store.ts +++ b/src/renderer/components/+workloads-pods/pods.store.ts @@ -76,4 +76,4 @@ export class PodsStore extends KubeObjectStore { } export const podsStore = new PodsStore(); -apiManager.registerStore(podsApi, podsStore); +apiManager.registerStore(podsStore); diff --git a/src/renderer/components/+workloads-replicasets/replicasets.store.ts b/src/renderer/components/+workloads-replicasets/replicasets.store.ts index 3b91999699..765c58a4a8 100644 --- a/src/renderer/components/+workloads-replicasets/replicasets.store.ts +++ b/src/renderer/components/+workloads-replicasets/replicasets.store.ts @@ -31,4 +31,4 @@ export class ReplicaSetStore extends KubeObjectStore { } export const replicaSetStore = new ReplicaSetStore(); -apiManager.registerStore(replicaSetApi, replicaSetStore); +apiManager.registerStore(replicaSetStore); diff --git a/src/renderer/components/+workloads-statefulsets/statefulset.store.ts b/src/renderer/components/+workloads-statefulsets/statefulset.store.ts index 5bca0a19b6..a72a9447df 100644 --- a/src/renderer/components/+workloads-statefulsets/statefulset.store.ts +++ b/src/renderer/components/+workloads-statefulsets/statefulset.store.ts @@ -42,4 +42,4 @@ export class StatefulSetStore extends KubeObjectStore { } export const statefulSetStore = new StatefulSetStore(); -apiManager.registerStore(statefulSetApi, statefulSetStore); +apiManager.registerStore(statefulSetStore);