mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
remove unused legacy KubeApi globals
Signed-off-by: Sebastian Malton <sebastian@malton.name>
This commit is contained in:
parent
ee8e36911c
commit
b4ca52488c
@ -4,56 +4,18 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import { asLegacyGlobalForExtensionApi } from "../../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api";
|
import { asLegacyGlobalForExtensionApi } from "../../../extensions/as-legacy-globals-for-extension-api/as-legacy-global-object-for-extension-api";
|
||||||
import clusterRoleBindingApiInjectable from "./cluster-role-binding.api.injectable";
|
|
||||||
import clusterRoleApiInjectable from "./cluster-role.api.injectable";
|
|
||||||
import clusterApiInjectable from "./cluster.api.injectable";
|
|
||||||
import componentStatusApiInjectable from "./component-status.api.injectable";
|
|
||||||
import configMapApiInjectable from "./config-map.api.injectable";
|
import configMapApiInjectable from "./config-map.api.injectable";
|
||||||
import cronJobApiInjectable from "./cron-job.api.injectable";
|
import cronJobApiInjectable from "./cron-job.api.injectable";
|
||||||
import customResourceDefinitionApiInjectable from "./custom-resource-definition.api.injectable";
|
|
||||||
import daemonSetApiInjectable from "./daemon-set.api.injectable";
|
|
||||||
import deploymentApiInjectable from "./deployment.api.injectable";
|
|
||||||
import endpointsApiInjectable from "./endpoint.api.injectable";
|
|
||||||
import kubeEventApiInjectable from "./events.api.injectable";
|
|
||||||
import horizontalPodAutoscalerApiInjectable from "./horizontal-pod-autoscaler.api.injectable";
|
|
||||||
import ingressApiInjectable from "./ingress.api.injectable";
|
|
||||||
import jobApiInjectable from "./job.api.injectable";
|
import jobApiInjectable from "./job.api.injectable";
|
||||||
import limitRangeApiInjectable from "./limit-range.api.injectable";
|
|
||||||
import namespaceApiInjectable from "./namespace.api.injectable";
|
|
||||||
import networkPolicyApiInjectable from "./network-policy.api.injectable";
|
import networkPolicyApiInjectable from "./network-policy.api.injectable";
|
||||||
import nodeApiInjectable from "./node.api.injectable";
|
import nodeApiInjectable from "./node.api.injectable";
|
||||||
import persistentVolumeClaimApiInjectable from "./persistent-volume-claim.api.injectable";
|
import persistentVolumeClaimApiInjectable from "./persistent-volume-claim.api.injectable";
|
||||||
import persistentVolumeApiInjectable from "./persistent-volume.api.injectable";
|
|
||||||
import podDisruptionBudgetApiInjectable from "./pod-disruption-budget.api.injectable";
|
|
||||||
import podMetricsApiInjectable from "./pod-metrics.api.injectable";
|
|
||||||
import podSecurityPolicyApiInjectable from "./pod-security-policy.api.injectable";
|
|
||||||
import podApiInjectable from "./pod.api.injectable";
|
import podApiInjectable from "./pod.api.injectable";
|
||||||
import replicaSetApiInjectable from "./replica-set.api.injectable";
|
|
||||||
import resourceQuotaApiInjectable from "./resource-quota.api.injectable";
|
|
||||||
import roleBindingApiInjectable from "./role-binding.api.injectable";
|
|
||||||
import roleApiInjectable from "./role.api.injectable";
|
import roleApiInjectable from "./role.api.injectable";
|
||||||
import secretApiInjectable from "./secret.api.injectable";
|
import secretApiInjectable from "./secret.api.injectable";
|
||||||
import selfSubjectRulesReviewApiInjectable from "./self-subject-rules-reviews.api.injectable";
|
|
||||||
import serviceAccountApiInjectable from "./service-account.api.injectable";
|
|
||||||
import serviceApiInjectable from "./service.api.injectable";
|
import serviceApiInjectable from "./service.api.injectable";
|
||||||
import statefulSetApiInjectable from "./stateful-set.api.injectable";
|
|
||||||
import storageClassApiInjectable from "./storage-class.api.injectable";
|
import storageClassApiInjectable from "./storage-class.api.injectable";
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(clusterRoleBindingApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const clusterRoleBindingApi = asLegacyGlobalForExtensionApi(clusterRoleBindingApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(clusterRoleApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const clusterRoleApi = asLegacyGlobalForExtensionApi(clusterRoleApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(serviceAccountApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const serviceAccountApi = asLegacyGlobalForExtensionApi(serviceAccountApiInjectable);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `di.inject(roleApiInjectable)` instead
|
* @deprecated use `di.inject(roleApiInjectable)` instead
|
||||||
*/
|
*/
|
||||||
@ -64,26 +26,6 @@ export const roleApi = asLegacyGlobalForExtensionApi(roleApiInjectable);
|
|||||||
*/
|
*/
|
||||||
export const podApi = asLegacyGlobalForExtensionApi(podApiInjectable);
|
export const podApi = asLegacyGlobalForExtensionApi(podApiInjectable);
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(daemonSetApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const daemonSetApi = asLegacyGlobalForExtensionApi(daemonSetApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(replicaSetApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const replicaSetApi = asLegacyGlobalForExtensionApi(replicaSetApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(statefulSetApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const statefulSetApi = asLegacyGlobalForExtensionApi(statefulSetApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(deploymentApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const deploymentApi = asLegacyGlobalForExtensionApi(deploymentApiInjectable);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `di.inject(cronJobApiInjectable)` instead
|
* @deprecated use `di.inject(cronJobApiInjectable)` instead
|
||||||
*/
|
*/
|
||||||
@ -94,56 +36,11 @@ export const cronJobApi = asLegacyGlobalForExtensionApi(cronJobApiInjectable);
|
|||||||
*/
|
*/
|
||||||
export const jobApi = asLegacyGlobalForExtensionApi(jobApiInjectable);
|
export const jobApi = asLegacyGlobalForExtensionApi(jobApiInjectable);
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(clusterApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const clusterApi = asLegacyGlobalForExtensionApi(clusterApiInjectable);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `di.inject(configMapApiInjectable)` instead
|
* @deprecated use `di.inject(configMapApiInjectable)` instead
|
||||||
*/
|
*/
|
||||||
export const configMapApi = asLegacyGlobalForExtensionApi(configMapApiInjectable);
|
export const configMapApi = asLegacyGlobalForExtensionApi(configMapApiInjectable);
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(componentStatusApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const componentStatusApi = asLegacyGlobalForExtensionApi(componentStatusApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(customResourceDefinitionApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const customResourceDefinitionApi = asLegacyGlobalForExtensionApi(customResourceDefinitionApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(kubeEventApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const kubeEventApi = asLegacyGlobalForExtensionApi(kubeEventApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(endpointsApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const endpointsApi = asLegacyGlobalForExtensionApi(endpointsApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(horizontalPodAutoscalerApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const horizontalPodAutoscalerApi = asLegacyGlobalForExtensionApi(horizontalPodAutoscalerApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(ingressApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const ingressApi = asLegacyGlobalForExtensionApi(ingressApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(limitRangeApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const limitRangeApi = asLegacyGlobalForExtensionApi(limitRangeApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(namespaceApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const namespaceApi = asLegacyGlobalForExtensionApi(namespaceApiInjectable);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `di.inject(networkPolicyApiInjectable)` instead
|
* @deprecated use `di.inject(networkPolicyApiInjectable)` instead
|
||||||
*/
|
*/
|
||||||
@ -159,46 +56,11 @@ export const nodeApi = asLegacyGlobalForExtensionApi(nodeApiInjectable);
|
|||||||
*/
|
*/
|
||||||
export const persistentVolumeClaimApi = asLegacyGlobalForExtensionApi(persistentVolumeClaimApiInjectable);
|
export const persistentVolumeClaimApi = asLegacyGlobalForExtensionApi(persistentVolumeClaimApiInjectable);
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(persistentVolumeApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const persistentVolumeApi = asLegacyGlobalForExtensionApi(persistentVolumeApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(podDisruptionBudgetApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const podDisruptionBudgetApi = asLegacyGlobalForExtensionApi(podDisruptionBudgetApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(podMetricsApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const podMetricsApi = asLegacyGlobalForExtensionApi(podMetricsApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(podSecurityPolicyApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const podSecurityPolicyApi = asLegacyGlobalForExtensionApi(podSecurityPolicyApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(resourceQuotaApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const resourceQuotaApi = asLegacyGlobalForExtensionApi(resourceQuotaApiInjectable);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(roleBindingApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const roleBindingApi = asLegacyGlobalForExtensionApi(roleBindingApiInjectable);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `di.inject(secretApiInjectable)` instead
|
* @deprecated use `di.inject(secretApiInjectable)` instead
|
||||||
*/
|
*/
|
||||||
export const secretApi = asLegacyGlobalForExtensionApi(secretApiInjectable);
|
export const secretApi = asLegacyGlobalForExtensionApi(secretApiInjectable);
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated use `di.inject(selfSubjectRulesReviewApiInjectable)` instead
|
|
||||||
*/
|
|
||||||
export const selfSubjectRulesReviewApi = asLegacyGlobalForExtensionApi(selfSubjectRulesReviewApiInjectable);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @deprecated use `di.inject(serviceApiInjectable)` instead
|
* @deprecated use `di.inject(serviceApiInjectable)` instead
|
||||||
*/
|
*/
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
import type { MetricData } from "./metrics.api";
|
import type { MetricData } from "./metrics.api";
|
||||||
import { metricsApi } from "./metrics.api";
|
import { metricsApi } from "./metrics.api";
|
||||||
import type { DerivedKubeApiOptions, IgnoredKubeApiOptions } from "../kube-api";
|
import type { DerivedKubeApiOptions, IgnoredKubeApiOptions, ResourceDescriptor } from "../kube-api";
|
||||||
import { KubeApi } from "../kube-api";
|
import { KubeApi } from "../kube-api";
|
||||||
import type { RequireExactlyOne } from "type-fest";
|
import type { RequireExactlyOne } from "type-fest";
|
||||||
import type { KubeObjectMetadata, LocalObjectReference, Affinity, Toleration, LabelSelector, KubeObjectScope } from "../kube-object";
|
import type { KubeObjectMetadata, LocalObjectReference, Affinity, Toleration, LabelSelector, KubeObjectScope } from "../kube-object";
|
||||||
@ -22,11 +22,11 @@ export class PodApi extends KubeApi<Pod> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
getLogs = async (params: { namespace: string; name: string }, query?: IPodLogsQuery): Promise<string> => {
|
async getLogs(params: ResourceDescriptor, query?: PodLogsQuery): Promise<string> {
|
||||||
const path = `${this.getUrl(params)}/log`;
|
const path = `${this.getUrl(params)}/log`;
|
||||||
|
|
||||||
return this.request.get(path, { query });
|
return this.request.get(path, { query });
|
||||||
};
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export function getMetricsForPods(pods: Pod[], namespace: string, selector = "pod, namespace"): Promise<PodMetricData> {
|
export function getMetricsForPods(pods: Pod[], namespace: string, selector = "pod, namespace"): Promise<PodMetricData> {
|
||||||
@ -65,7 +65,7 @@ export interface PodMetricData extends Partial<Record<string, MetricData>> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Reference: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#read-log-pod-v1-core
|
// Reference: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.19/#read-log-pod-v1-core
|
||||||
export interface IPodLogsQuery {
|
export interface PodLogsQuery {
|
||||||
container?: string;
|
container?: string;
|
||||||
tailLines?: number;
|
tailLines?: number;
|
||||||
timestamps?: boolean;
|
timestamps?: boolean;
|
||||||
|
|||||||
@ -109,7 +109,7 @@ export type { NetworkPolicyStore } from "../../renderer/components/+network-poli
|
|||||||
export type { PersistentVolumeStore as PersistentVolumesStore } from "../../renderer/components/+storage-volumes/store";
|
export type { PersistentVolumeStore as PersistentVolumesStore } from "../../renderer/components/+storage-volumes/store";
|
||||||
export type { PersistentVolumeClaimStore as VolumeClaimStore } from "../../renderer/components/+storage-volume-claims/store";
|
export type { PersistentVolumeClaimStore as VolumeClaimStore } from "../../renderer/components/+storage-volume-claims/store";
|
||||||
export type { StorageClassStore } from "../../renderer/components/+storage-classes/store";
|
export type { StorageClassStore } from "../../renderer/components/+storage-classes/store";
|
||||||
export type { NamespaceStore } from "../../renderer/components/+namespaces/namespace-store/namespace.store";
|
export type { NamespaceStore } from "../../renderer/components/+namespaces/store";
|
||||||
export type { ServiceAccountStore as ServiceAccountsStore } from "../../renderer/components/+user-management/+service-accounts/store";
|
export type { ServiceAccountStore as ServiceAccountsStore } from "../../renderer/components/+user-management/+service-accounts/store";
|
||||||
export type { RoleStore as RolesStore } from "../../renderer/components/+user-management/+roles/store";
|
export type { RoleStore as RolesStore } from "../../renderer/components/+user-management/+roles/store";
|
||||||
export type { RoleBindingStore as RoleBindingsStore } from "../../renderer/components/+user-management/+role-bindings/store";
|
export type { RoleBindingStore as RoleBindingsStore } from "../../renderer/components/+user-management/+role-bindings/store";
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { ClusterFrameContext } from "./cluster-frame-context";
|
import { ClusterFrameContext } from "./cluster-frame-context";
|
||||||
import namespaceStoreInjectable from "../components/+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../components/+namespaces/store.injectable";
|
||||||
import hostedClusterInjectable from "../../common/cluster-store/hosted-cluster.injectable";
|
import hostedClusterInjectable from "../../common/cluster-store/hosted-cluster.injectable";
|
||||||
import assert from "assert";
|
import assert from "assert";
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import type { Cluster } from "../../common/cluster/cluster";
|
import type { Cluster } from "../../common/cluster/cluster";
|
||||||
import type { NamespaceStore } from "../components/+namespaces/namespace-store/namespace.store";
|
import type { NamespaceStore } from "../components/+namespaces/store";
|
||||||
import type { ClusterContext } from "../../common/k8s-api/cluster-context";
|
import type { ClusterContext } from "../../common/k8s-api/cluster-context";
|
||||||
import { computed, makeObservable } from "mobx";
|
import { computed, makeObservable } from "mobx";
|
||||||
|
|
||||||
|
|||||||
@ -12,13 +12,19 @@ import {
|
|||||||
} from "./cluster-overview-store";
|
} from "./cluster-overview-store";
|
||||||
import createStorageInjectable from "../../../utils/create-storage/create-storage.injectable";
|
import createStorageInjectable from "../../../utils/create-storage/create-storage.injectable";
|
||||||
import apiManagerInjectable from "../../../../common/k8s-api/api-manager/manager.injectable";
|
import apiManagerInjectable from "../../../../common/k8s-api/api-manager/manager.injectable";
|
||||||
import { clusterApi } from "../../../../common/k8s-api/endpoints";
|
import clusterApiInjectable from "../../../../common/k8s-api/endpoints/cluster.api.injectable";
|
||||||
|
import createStoresAndApisInjectable from "../../../create-stores-apis.injectable";
|
||||||
|
import assert from "assert";
|
||||||
|
import nodeStoreInjectable from "../../+nodes/store.injectable";
|
||||||
|
|
||||||
const clusterOverviewStoreInjectable = getInjectable({
|
const clusterOverviewStoreInjectable = getInjectable({
|
||||||
id: "cluster-overview-store",
|
id: "cluster-overview-store",
|
||||||
|
|
||||||
instantiate: (di) => {
|
instantiate: (di) => {
|
||||||
|
assert(di.inject(createStoresAndApisInjectable), "clusterOverviewStore is only available in certain environments");
|
||||||
const createStorage = di.inject(createStorageInjectable);
|
const createStorage = di.inject(createStorageInjectable);
|
||||||
|
const clusterApi = di.inject(clusterApiInjectable);
|
||||||
|
const apiManager = di.inject(apiManagerInjectable);
|
||||||
|
|
||||||
const storage = createStorage<ClusterOverviewStorageState>(
|
const storage = createStorage<ClusterOverviewStorageState>(
|
||||||
"cluster_overview",
|
"cluster_overview",
|
||||||
@ -27,13 +33,11 @@ const clusterOverviewStoreInjectable = getInjectable({
|
|||||||
metricNodeRole: MetricNodeRole.WORKER,
|
metricNodeRole: MetricNodeRole.WORKER,
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
||||||
const store = new ClusterOverviewStore({
|
const store = new ClusterOverviewStore({
|
||||||
storage,
|
storage,
|
||||||
|
nodeStore: di.inject(nodeStoreInjectable),
|
||||||
}, clusterApi);
|
}, clusterApi);
|
||||||
|
|
||||||
const apiManager = di.inject(apiManagerInjectable);
|
|
||||||
|
|
||||||
apiManager.registerStore(store);
|
apiManager.registerStore(store);
|
||||||
|
|
||||||
return store;
|
return store;
|
||||||
|
|||||||
@ -27,7 +27,7 @@ export interface ClusterOverviewStorageState {
|
|||||||
metricNodeRole: MetricNodeRole;
|
metricNodeRole: MetricNodeRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Dependencies {
|
interface ClusterOverviewStoreDependencies {
|
||||||
readonly storage: StorageLayer<ClusterOverviewStorageState>;
|
readonly storage: StorageLayer<ClusterOverviewStorageState>;
|
||||||
readonly nodeStore: NodeStore;
|
readonly nodeStore: NodeStore;
|
||||||
}
|
}
|
||||||
@ -52,7 +52,7 @@ export class ClusterOverviewStore extends KubeObjectStore<Cluster, ClusterApi> i
|
|||||||
this.dependencies.storage.merge({ metricNodeRole: value });
|
this.dependencies.storage.merge({ metricNodeRole: value });
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(protected readonly dependencies: Dependencies, api: ClusterApi) {
|
constructor(protected readonly dependencies: ClusterOverviewStoreDependencies, api: ClusterApi) {
|
||||||
super(api);
|
super(api);
|
||||||
makeObservable(this);
|
makeObservable(this);
|
||||||
autoBind(this);
|
autoBind(this);
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { asyncComputed } from "@ogre-tools/injectable-react";
|
import { asyncComputed } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../+namespaces/store.injectable";
|
||||||
import { listReleases } from "../../../common/k8s-api/endpoints/helm-releases.api";
|
import { listReleases } from "../../../common/k8s-api/endpoints/helm-releases.api";
|
||||||
|
|
||||||
const releasesInjectable = getInjectable({
|
const releasesInjectable = getInjectable({
|
||||||
|
|||||||
@ -9,7 +9,7 @@ import "./releases.scss";
|
|||||||
import React, { Component } from "react";
|
import React, { Component } from "react";
|
||||||
import type { HelmRelease } from "../../../common/k8s-api/endpoints/helm-releases.api";
|
import type { HelmRelease } from "../../../common/k8s-api/endpoints/helm-releases.api";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../+namespaces/store.injectable";
|
||||||
import type { ItemListStore } from "../item-object-list";
|
import type { ItemListStore } from "../item-object-list";
|
||||||
import { ItemListLayout } from "../item-object-list";
|
import { ItemListLayout } from "../item-object-list";
|
||||||
import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter";
|
import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter";
|
||||||
|
|||||||
@ -16,11 +16,11 @@ import { Input } from "../input";
|
|||||||
import { systemName } from "../input/input_validators";
|
import { systemName } from "../input/input_validators";
|
||||||
import { Notifications } from "../notifications";
|
import { Notifications } from "../notifications";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "./store.injectable";
|
||||||
import type { AddNamespaceDialogModel } from "./add-namespace-dialog-model/add-namespace-dialog-model";
|
import type { AddNamespaceDialogModel } from "./add-namespace-dialog-model/add-namespace-dialog-model";
|
||||||
import addNamespaceDialogModelInjectable
|
import addNamespaceDialogModelInjectable
|
||||||
from "./add-namespace-dialog-model/add-namespace-dialog-model.injectable";
|
from "./add-namespace-dialog-model/add-namespace-dialog-model.injectable";
|
||||||
import type { NamespaceStore } from "./namespace-store/namespace.store";
|
import type { NamespaceStore } from "./store";
|
||||||
|
|
||||||
export interface AddNamespaceDialogProps extends DialogProps {
|
export interface AddNamespaceDialogProps extends DialogProps {
|
||||||
onSuccess?(ns: Namespace): void;
|
onSuccess?(ns: Namespace): void;
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import { NamespaceSelectFilterModel } from "./namespace-select-filter-model";
|
import { NamespaceSelectFilterModel } from "./namespace-select-filter-model";
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import namespaceStoreInjectable from "../namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../store.injectable";
|
||||||
|
|
||||||
const namespaceSelectFilterModelInjectable = getInjectable({
|
const namespaceSelectFilterModelInjectable = getInjectable({
|
||||||
id: "namespace-select-filter-model",
|
id: "namespace-select-filter-model",
|
||||||
|
|||||||
@ -4,7 +4,7 @@
|
|||||||
*/
|
*/
|
||||||
import React from "react";
|
import React from "react";
|
||||||
import { observable, makeObservable, action, untracked, computed } from "mobx";
|
import { observable, makeObservable, action, untracked, computed } from "mobx";
|
||||||
import type { NamespaceStore } from "../namespace-store/namespace.store";
|
import type { NamespaceStore } from "../store";
|
||||||
import { isMac } from "../../../../common/vars";
|
import { isMac } from "../../../../common/vars";
|
||||||
import type { ActionMeta } from "react-select";
|
import type { ActionMeta } from "react-select";
|
||||||
import { Icon } from "../../icon";
|
import { Icon } from "../../icon";
|
||||||
|
|||||||
@ -9,12 +9,12 @@ import React from "react";
|
|||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import type { PlaceholderProps } from "react-select";
|
import type { PlaceholderProps } from "react-select";
|
||||||
import { components } from "react-select";
|
import { components } from "react-select";
|
||||||
import type { NamespaceStore } from "./namespace-store/namespace.store";
|
import type { NamespaceStore } from "./store";
|
||||||
import { Select } from "../select";
|
import { Select } from "../select";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import type { NamespaceSelectFilterModel, NamespaceSelectFilterOption, SelectAllNamespaces } from "./namespace-select-filter-model/namespace-select-filter-model";
|
import type { NamespaceSelectFilterModel, NamespaceSelectFilterOption, SelectAllNamespaces } from "./namespace-select-filter-model/namespace-select-filter-model";
|
||||||
import namespaceSelectFilterModelInjectable from "./namespace-select-filter-model/namespace-select-filter-model.injectable";
|
import namespaceSelectFilterModelInjectable from "./namespace-select-filter-model/namespace-select-filter-model.injectable";
|
||||||
import namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "./store.injectable";
|
||||||
|
|
||||||
interface NamespaceSelectFilterProps {
|
interface NamespaceSelectFilterProps {
|
||||||
id: string;
|
id: string;
|
||||||
|
|||||||
@ -12,9 +12,9 @@ import type { SelectProps } from "../select";
|
|||||||
import { Select } from "../select";
|
import { Select } from "../select";
|
||||||
import { cssNames } from "../../utils";
|
import { cssNames } from "../../utils";
|
||||||
import { Icon } from "../icon";
|
import { Icon } from "../icon";
|
||||||
import type { NamespaceStore } from "./namespace-store/namespace.store";
|
import type { NamespaceStore } from "./store";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "./store.injectable";
|
||||||
|
|
||||||
export type NamespaceSelectSort = (left: string, right: string) => number;
|
export type NamespaceSelectSort = (left: string, right: string) => number;
|
||||||
|
|
||||||
|
|||||||
@ -1,34 +0,0 @@
|
|||||||
/**
|
|
||||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
||||||
*/
|
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
|
||||||
import { NamespaceStore } from "./namespace.store";
|
|
||||||
import apiManagerInjectable from "../../../../common/k8s-api/api-manager/manager.injectable";
|
|
||||||
import createStorageInjectable from "../../../utils/create-storage/create-storage.injectable";
|
|
||||||
import { namespaceApi } from "../../../../common/k8s-api/endpoints";
|
|
||||||
|
|
||||||
const namespaceStoreInjectable = getInjectable({
|
|
||||||
id: "namespace-store",
|
|
||||||
|
|
||||||
instantiate: (di) => {
|
|
||||||
const createStorage = di.inject(createStorageInjectable);
|
|
||||||
|
|
||||||
const storage = createStorage<string[] | undefined>(
|
|
||||||
"selected_namespaces",
|
|
||||||
undefined,
|
|
||||||
);
|
|
||||||
|
|
||||||
const namespaceStore = new NamespaceStore({
|
|
||||||
storage,
|
|
||||||
}, namespaceApi);
|
|
||||||
|
|
||||||
const apiManager = di.inject(apiManagerInjectable);
|
|
||||||
|
|
||||||
apiManager.registerStore(namespaceStore);
|
|
||||||
|
|
||||||
return namespaceStore;
|
|
||||||
},
|
|
||||||
});
|
|
||||||
|
|
||||||
export default namespaceStoreInjectable;
|
|
||||||
@ -11,10 +11,10 @@ import { AddNamespaceDialog } from "./add-namespace-dialog";
|
|||||||
import { TabLayout } from "../layout/tab-layout-2";
|
import { TabLayout } from "../layout/tab-layout-2";
|
||||||
import { Badge } from "../badge";
|
import { Badge } from "../badge";
|
||||||
import { KubeObjectListLayout } from "../kube-object-list-layout";
|
import { KubeObjectListLayout } from "../kube-object-list-layout";
|
||||||
import type { NamespaceStore } from "./namespace-store/namespace.store";
|
import type { NamespaceStore } from "./store";
|
||||||
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
import { KubeObjectStatusIcon } from "../kube-object-status-icon";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "./store.injectable";
|
||||||
import addNamespaceDialogModelInjectable from "./add-namespace-dialog-model/add-namespace-dialog-model.injectable";
|
import addNamespaceDialogModelInjectable from "./add-namespace-dialog-model/add-namespace-dialog-model.injectable";
|
||||||
import { KubeObjectAge } from "../kube-object/age";
|
import { KubeObjectAge } from "../kube-object/age";
|
||||||
|
|
||||||
|
|||||||
36
src/renderer/components/+namespaces/store.injectable.ts
Normal file
36
src/renderer/components/+namespaces/store.injectable.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/**
|
||||||
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||||
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
|
*/
|
||||||
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
|
import { NamespaceStore } from "./store";
|
||||||
|
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||||
|
import createStorageInjectable from "../../utils/create-storage/create-storage.injectable";
|
||||||
|
import namespaceApiInjectable from "../../../common/k8s-api/endpoints/namespace.api.injectable";
|
||||||
|
import assert from "assert";
|
||||||
|
import createStoresAndApisInjectable from "../../create-stores-apis.injectable";
|
||||||
|
|
||||||
|
const namespaceStoreInjectable = getInjectable({
|
||||||
|
id: "namespace-store",
|
||||||
|
|
||||||
|
instantiate: (di) => {
|
||||||
|
assert(di.inject(createStoresAndApisInjectable), "namespaceStore is only available in certain environments");
|
||||||
|
const createStorage = di.inject(createStorageInjectable);
|
||||||
|
const apiManager = di.inject(apiManagerInjectable);
|
||||||
|
const api = di.inject(namespaceApiInjectable);
|
||||||
|
|
||||||
|
const storage = createStorage<string[] | undefined>(
|
||||||
|
"selected_namespaces",
|
||||||
|
undefined,
|
||||||
|
);
|
||||||
|
const store = new NamespaceStore({
|
||||||
|
storage,
|
||||||
|
}, api);
|
||||||
|
|
||||||
|
apiManager.registerStore(store);
|
||||||
|
|
||||||
|
return store;
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
export default namespaceStoreInjectable;
|
||||||
@ -5,12 +5,12 @@
|
|||||||
|
|
||||||
import type { IReactionDisposer } from "mobx";
|
import type { IReactionDisposer } from "mobx";
|
||||||
import { action, comparer, computed, makeObservable, reaction } from "mobx";
|
import { action, comparer, computed, makeObservable, reaction } from "mobx";
|
||||||
import type { StorageLayer } from "../../../utils";
|
import type { StorageLayer } from "../../utils";
|
||||||
import { autoBind, noop, toggle } from "../../../utils";
|
import { autoBind, noop, toggle } from "../../utils";
|
||||||
import type { KubeObjectStoreLoadingParams } from "../../../../common/k8s-api/kube-object.store";
|
import type { KubeObjectStoreLoadingParams } from "../../../common/k8s-api/kube-object.store";
|
||||||
import { KubeObjectStore } from "../../../../common/k8s-api/kube-object.store";
|
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
||||||
import type { NamespaceApi } from "../../../../common/k8s-api/endpoints/namespace.api";
|
import type { NamespaceApi } from "../../../common/k8s-api/endpoints/namespace.api";
|
||||||
import { Namespace } from "../../../../common/k8s-api/endpoints/namespace.api";
|
import { Namespace } from "../../../common/k8s-api/endpoints/namespace.api";
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
storage: StorageLayer<string[] | undefined>;
|
storage: StorageLayer<string[] | undefined>;
|
||||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import cronJobsStoreInjectable from "../../../+workloads-cronjobs/store.injectable";
|
import cronJobsStoreInjectable from "../../../+workloads-cronjobs/store.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import daemonsetsStoreInjectable from "../../../+workloads-daemonsets/store.injectable";
|
import daemonsetsStoreInjectable from "../../../+workloads-daemonsets/store.injectable";
|
||||||
import navigateToDaemonsetsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/daemonsets/navigate-to-daemonsets.injectable";
|
import navigateToDaemonsetsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/daemonsets/navigate-to-daemonsets.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import deploymentsStoreInjectable from "../../../+workloads-deployments/store.injectable";
|
import deploymentsStoreInjectable from "../../../+workloads-deployments/store.injectable";
|
||||||
import navigateToDeploymentsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
import navigateToDeploymentsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
|||||||
@ -5,7 +5,7 @@
|
|||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import jobStoreInjectable from "../../../+workloads-jobs/store.injectable";
|
import jobStoreInjectable from "../../../+workloads-jobs/store.injectable";
|
||||||
import navigateToJobsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/jobs/navigate-to-jobs.injectable";
|
import navigateToJobsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/jobs/navigate-to-jobs.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/pods/navigate-to-pods.injectable";
|
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/pods/navigate-to-pods.injectable";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
import podStoreInjectable from "../../../+workloads-pods/store.injectable";
|
import podStoreInjectable from "../../../+workloads-pods/store.injectable";
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import replicasetsStoreInjectable from "../../../+workloads-replicasets/store.injectable";
|
import replicasetsStoreInjectable from "../../../+workloads-replicasets/store.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
|
|||||||
import { workloadInjectionToken } from "../workload-injection-token";
|
import { workloadInjectionToken } from "../workload-injection-token";
|
||||||
import { ResourceNames } from "../../../../utils/rbac";
|
import { ResourceNames } from "../../../../utils/rbac";
|
||||||
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
import navigateToPodsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
|
||||||
import namespaceStoreInjectable from "../../../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../../+namespaces/store.injectable";
|
||||||
import statefulsetsStoreInjectable from "../../../+workloads-statefulsets/store.injectable";
|
import statefulsetsStoreInjectable from "../../../+workloads-statefulsets/store.injectable";
|
||||||
import { computed } from "mobx";
|
import { computed } from "mobx";
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import podApiInjectable from "../../../common/k8s-api/endpoints/pod.api.injectab
|
|||||||
import createStoresAndApisInjectable from "../../create-stores-apis.injectable";
|
import createStoresAndApisInjectable from "../../create-stores-apis.injectable";
|
||||||
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
|
||||||
import { PodStore } from "./store";
|
import { PodStore } from "./store";
|
||||||
|
import podMetricsApiInjectable from "../../../common/k8s-api/endpoints/pod-metrics.api.injectable";
|
||||||
|
|
||||||
const podStoreInjectable = getInjectable({
|
const podStoreInjectable = getInjectable({
|
||||||
id: "pod-store",
|
id: "pod-store",
|
||||||
@ -16,7 +17,9 @@ const podStoreInjectable = getInjectable({
|
|||||||
|
|
||||||
const api = di.inject(podApiInjectable);
|
const api = di.inject(podApiInjectable);
|
||||||
const apiManager = di.inject(apiManagerInjectable);
|
const apiManager = di.inject(apiManagerInjectable);
|
||||||
const store = new PodStore(api);
|
const store = new PodStore({
|
||||||
|
podMetricsApi: di.inject(podMetricsApiInjectable),
|
||||||
|
}, api);
|
||||||
|
|
||||||
apiManager.registerStore(store);
|
apiManager.registerStore(store);
|
||||||
|
|
||||||
|
|||||||
@ -5,18 +5,30 @@
|
|||||||
|
|
||||||
import countBy from "lodash/countBy";
|
import countBy from "lodash/countBy";
|
||||||
import { observable } from "mobx";
|
import { observable } from "mobx";
|
||||||
|
import type { KubeObjectStoreOptions } from "../../../common/k8s-api/kube-object.store";
|
||||||
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
|
||||||
import { cpuUnitsToNumber, unitsToBytes } from "../../utils";
|
import { cpuUnitsToNumber, unitsToBytes } from "../../utils";
|
||||||
import type { Pod, PodMetrics, PodApi } from "../../../common/k8s-api/endpoints";
|
import type { Pod, PodMetrics, PodApi, PodMetricsApi } from "../../../common/k8s-api/endpoints";
|
||||||
import { podMetricsApi } from "../../../common/k8s-api/endpoints";
|
|
||||||
import type { KubeObject, KubeObjectScope } from "../../../common/k8s-api/kube-object";
|
import type { KubeObject, KubeObjectScope } from "../../../common/k8s-api/kube-object";
|
||||||
|
|
||||||
|
export interface PodStoreDependencies {
|
||||||
|
readonly podMetricsApi: PodMetricsApi;
|
||||||
|
}
|
||||||
|
|
||||||
export class PodStore extends KubeObjectStore<Pod, PodApi> {
|
export class PodStore extends KubeObjectStore<Pod, PodApi> {
|
||||||
|
constructor(
|
||||||
|
protected readonly dependencies: PodStoreDependencies,
|
||||||
|
api: PodApi,
|
||||||
|
opts?: KubeObjectStoreOptions,
|
||||||
|
) {
|
||||||
|
super(api, opts);
|
||||||
|
}
|
||||||
|
|
||||||
readonly kubeMetrics = observable.array<PodMetrics>([]);
|
readonly kubeMetrics = observable.array<PodMetrics>([]);
|
||||||
|
|
||||||
async loadKubeMetrics(namespace?: string) {
|
async loadKubeMetrics(namespace?: string) {
|
||||||
try {
|
try {
|
||||||
const metrics = await podMetricsApi.list({ namespace });
|
const metrics = await this.dependencies.podMetricsApi.list({ namespace });
|
||||||
|
|
||||||
this.kubeMetrics.replace(metrics ?? []);
|
this.kubeMetrics.replace(metrics ?? []);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
|||||||
@ -3,11 +3,19 @@
|
|||||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||||
*/
|
*/
|
||||||
import { getInjectable } from "@ogre-tools/injectable";
|
import { getInjectable } from "@ogre-tools/injectable";
|
||||||
import { podApi } from "../../../../common/k8s-api/endpoints";
|
import type { PodLogsQuery } from "../../../../common/k8s-api/endpoints";
|
||||||
|
import podApiInjectable from "../../../../common/k8s-api/endpoints/pod.api.injectable";
|
||||||
|
import type { ResourceDescriptor } from "../../../../common/k8s-api/kube-api";
|
||||||
|
|
||||||
|
export type CallForLogs = (params: ResourceDescriptor, query?: PodLogsQuery) => Promise<string>;
|
||||||
|
|
||||||
const callForLogsInjectable = getInjectable({
|
const callForLogsInjectable = getInjectable({
|
||||||
id: "call-for-logs",
|
id: "call-for-logs",
|
||||||
instantiate: () => podApi.getLogs,
|
instantiate: (di): CallForLogs => {
|
||||||
|
const api = di.inject(podApiInjectable);
|
||||||
|
|
||||||
|
return (params, query) => api.getLogs(params, query);
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
export default callForLogsInjectable;
|
export default callForLogsInjectable;
|
||||||
|
|||||||
@ -5,11 +5,12 @@
|
|||||||
|
|
||||||
import type { IComputedValue } from "mobx";
|
import type { IComputedValue } from "mobx";
|
||||||
import { observable } from "mobx";
|
import { observable } from "mobx";
|
||||||
import type { IPodLogsQuery, Pod } from "../../../../common/k8s-api/endpoints";
|
import type { PodLogsQuery, Pod } from "../../../../common/k8s-api/endpoints";
|
||||||
import { waitUntilDefinied } from "../../../../common/utils/wait";
|
import { waitUntilDefinied } from "../../../../common/utils/wait";
|
||||||
import type { IntervalFn } from "../../../utils";
|
import type { IntervalFn } from "../../../utils";
|
||||||
import { getOrInsertWith, interval } from "../../../utils";
|
import { getOrInsertWith, interval } from "../../../utils";
|
||||||
import type { TabId } from "../dock/store";
|
import type { TabId } from "../dock/store";
|
||||||
|
import type { CallForLogs } from "./call-for-logs.injectable";
|
||||||
import type { LogTabData } from "./tab-store";
|
import type { LogTabData } from "./tab-store";
|
||||||
|
|
||||||
type PodLogLine = string;
|
type PodLogLine = string;
|
||||||
@ -17,7 +18,7 @@ type PodLogLine = string;
|
|||||||
const logLinesToLoad = 500;
|
const logLinesToLoad = 500;
|
||||||
|
|
||||||
interface Dependencies {
|
interface Dependencies {
|
||||||
callForLogs: ({ namespace, name }: { namespace: string; name: string }, query: IPodLogsQuery) => Promise<string>;
|
callForLogs: CallForLogs;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class LogStore {
|
export class LogStore {
|
||||||
@ -109,7 +110,7 @@ export class LogStore {
|
|||||||
* @param params request parameters described in IPodLogsQuery interface
|
* @param params request parameters described in IPodLogsQuery interface
|
||||||
* @returns A fetch request promise
|
* @returns A fetch request promise
|
||||||
*/
|
*/
|
||||||
private async loadLogs(computedPod: IComputedValue<Pod | undefined>, logTabData: IComputedValue<LogTabData | undefined>, params: Partial<IPodLogsQuery>): Promise<string[]> {
|
private async loadLogs(computedPod: IComputedValue<Pod | undefined>, logTabData: IComputedValue<LogTabData | undefined>, params: Partial<PodLogsQuery>): Promise<string[]> {
|
||||||
const {
|
const {
|
||||||
pod,
|
pod,
|
||||||
tabData: {
|
tabData: {
|
||||||
|
|||||||
@ -17,8 +17,8 @@ import type { ItemObject } from "../../../common/item.store";
|
|||||||
import type { SearchInputUrlProps } from "../input";
|
import type { SearchInputUrlProps } from "../input";
|
||||||
import { FilterType, pageFilters } from "./page-filters.store";
|
import { FilterType, pageFilters } from "./page-filters.store";
|
||||||
import { PageFiltersList } from "./page-filters-list";
|
import { PageFiltersList } from "./page-filters-list";
|
||||||
import type { NamespaceStore } from "../+namespaces/namespace-store/namespace.store";
|
import type { NamespaceStore } from "../+namespaces/store";
|
||||||
import namespaceStoreInjectable from "../+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../+namespaces/store.injectable";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import itemListLayoutStorageInjectable from "./storage.injectable";
|
import itemListLayoutStorageInjectable from "./storage.injectable";
|
||||||
import { ItemListLayoutContent } from "./content";
|
import { ItemListLayoutContent } from "./content";
|
||||||
|
|||||||
@ -22,9 +22,9 @@ import { Dock } from "../../components/dock";
|
|||||||
import { watchHistoryState } from "../../remote-helpers/history-updater";
|
import { watchHistoryState } from "../../remote-helpers/history-updater";
|
||||||
import { PortForwardDialog } from "../../port-forward";
|
import { PortForwardDialog } from "../../port-forward";
|
||||||
import { DeleteClusterDialog } from "../../components/delete-cluster-dialog";
|
import { DeleteClusterDialog } from "../../components/delete-cluster-dialog";
|
||||||
import type { NamespaceStore } from "../../components/+namespaces/namespace-store/namespace.store";
|
import type { NamespaceStore } from "../../components/+namespaces/store";
|
||||||
import { withInjectables } from "@ogre-tools/injectable-react";
|
import { withInjectables } from "@ogre-tools/injectable-react";
|
||||||
import namespaceStoreInjectable from "../../components/+namespaces/namespace-store/namespace-store.injectable";
|
import namespaceStoreInjectable from "../../components/+namespaces/store.injectable";
|
||||||
import type { SubscribeStores } from "../../kube-watch-api/kube-watch-api";
|
import type { SubscribeStores } from "../../kube-watch-api/kube-watch-api";
|
||||||
import { disposer } from "../../utils";
|
import { disposer } from "../../utils";
|
||||||
import currentRouteComponentInjectable from "../../routes/current-route-component.injectable";
|
import currentRouteComponentInjectable from "../../routes/current-route-component.injectable";
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user