1
0
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:
Sebastian Malton 2022-04-13 13:21:27 -04:00
parent ee8e36911c
commit b4ca52488c
31 changed files with 115 additions and 223 deletions

View File

@ -4,56 +4,18 @@
*/
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 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 limitRangeApiInjectable from "./limit-range.api.injectable";
import namespaceApiInjectable from "./namespace.api.injectable";
import networkPolicyApiInjectable from "./network-policy.api.injectable";
import nodeApiInjectable from "./node.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 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 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 statefulSetApiInjectable from "./stateful-set.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
*/
@ -64,26 +26,6 @@ export const roleApi = asLegacyGlobalForExtensionApi(roleApiInjectable);
*/
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
*/
@ -94,56 +36,11 @@ export const cronJobApi = asLegacyGlobalForExtensionApi(cronJobApiInjectable);
*/
export const jobApi = asLegacyGlobalForExtensionApi(jobApiInjectable);
/**
* @deprecated use `di.inject(clusterApiInjectable)` instead
*/
export const clusterApi = asLegacyGlobalForExtensionApi(clusterApiInjectable);
/**
* @deprecated use `di.inject(configMapApiInjectable)` instead
*/
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
*/
@ -159,46 +56,11 @@ export const nodeApi = asLegacyGlobalForExtensionApi(nodeApiInjectable);
*/
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
*/
export const secretApi = asLegacyGlobalForExtensionApi(secretApiInjectable);
/**
* @deprecated use `di.inject(selfSubjectRulesReviewApiInjectable)` instead
*/
export const selfSubjectRulesReviewApi = asLegacyGlobalForExtensionApi(selfSubjectRulesReviewApiInjectable);
/**
* @deprecated use `di.inject(serviceApiInjectable)` instead
*/

View File

@ -5,7 +5,7 @@
import type { MetricData } 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 type { RequireExactlyOne } from "type-fest";
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`;
return this.request.get(path, { query });
};
}
}
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
export interface IPodLogsQuery {
export interface PodLogsQuery {
container?: string;
tailLines?: number;
timestamps?: boolean;

View File

@ -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 { PersistentVolumeClaimStore as VolumeClaimStore } from "../../renderer/components/+storage-volume-claims/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 { RoleStore as RolesStore } from "../../renderer/components/+user-management/+roles/store";
export type { RoleBindingStore as RoleBindingsStore } from "../../renderer/components/+user-management/+role-bindings/store";

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
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 assert from "assert";

View File

@ -4,7 +4,7 @@
*/
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 { computed, makeObservable } from "mobx";

View File

@ -12,13 +12,19 @@ import {
} from "./cluster-overview-store";
import createStorageInjectable from "../../../utils/create-storage/create-storage.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({
id: "cluster-overview-store",
instantiate: (di) => {
assert(di.inject(createStoresAndApisInjectable), "clusterOverviewStore is only available in certain environments");
const createStorage = di.inject(createStorageInjectable);
const clusterApi = di.inject(clusterApiInjectable);
const apiManager = di.inject(apiManagerInjectable);
const storage = createStorage<ClusterOverviewStorageState>(
"cluster_overview",
@ -27,13 +33,11 @@ const clusterOverviewStoreInjectable = getInjectable({
metricNodeRole: MetricNodeRole.WORKER,
},
);
const store = new ClusterOverviewStore({
storage,
nodeStore: di.inject(nodeStoreInjectable),
}, clusterApi);
const apiManager = di.inject(apiManagerInjectable);
apiManager.registerStore(store);
return store;

View File

@ -27,7 +27,7 @@ export interface ClusterOverviewStorageState {
metricNodeRole: MetricNodeRole;
}
interface Dependencies {
interface ClusterOverviewStoreDependencies {
readonly storage: StorageLayer<ClusterOverviewStorageState>;
readonly nodeStore: NodeStore;
}
@ -52,7 +52,7 @@ export class ClusterOverviewStore extends KubeObjectStore<Cluster, ClusterApi> i
this.dependencies.storage.merge({ metricNodeRole: value });
}
constructor(protected readonly dependencies: Dependencies, api: ClusterApi) {
constructor(protected readonly dependencies: ClusterOverviewStoreDependencies, api: ClusterApi) {
super(api);
makeObservable(this);
autoBind(this);

View File

@ -4,7 +4,7 @@
*/
import { getInjectable } from "@ogre-tools/injectable";
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";
const releasesInjectable = getInjectable({

View File

@ -9,7 +9,7 @@ import "./releases.scss";
import React, { Component } from "react";
import type { HelmRelease } from "../../../common/k8s-api/endpoints/helm-releases.api";
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 { ItemListLayout } from "../item-object-list";
import { NamespaceSelectFilter } from "../+namespaces/namespace-select-filter";

View File

@ -16,11 +16,11 @@ import { Input } from "../input";
import { systemName } from "../input/input_validators";
import { Notifications } from "../notifications";
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 addNamespaceDialogModelInjectable
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 {
onSuccess?(ns: Namespace): void;

View File

@ -4,7 +4,7 @@
*/
import { NamespaceSelectFilterModel } from "./namespace-select-filter-model";
import { getInjectable } from "@ogre-tools/injectable";
import namespaceStoreInjectable from "../namespace-store/namespace-store.injectable";
import namespaceStoreInjectable from "../store.injectable";
const namespaceSelectFilterModelInjectable = getInjectable({
id: "namespace-select-filter-model",

View File

@ -4,7 +4,7 @@
*/
import React from "react";
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 type { ActionMeta } from "react-select";
import { Icon } from "../../icon";

View File

@ -9,12 +9,12 @@ import React from "react";
import { observer } from "mobx-react";
import type { PlaceholderProps } 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 { withInjectables } from "@ogre-tools/injectable-react";
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 namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
import namespaceStoreInjectable from "./store.injectable";
interface NamespaceSelectFilterProps {
id: string;

View File

@ -12,9 +12,9 @@ import type { SelectProps } from "../select";
import { Select } from "../select";
import { cssNames } from "../../utils";
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 namespaceStoreInjectable from "./namespace-store/namespace-store.injectable";
import namespaceStoreInjectable from "./store.injectable";
export type NamespaceSelectSort = (left: string, right: string) => number;

View File

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

View File

@ -11,10 +11,10 @@ import { AddNamespaceDialog } from "./add-namespace-dialog";
import { TabLayout } from "../layout/tab-layout-2";
import { Badge } from "../badge";
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 { 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 { KubeObjectAge } from "../kube-object/age";

View 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;

View File

@ -5,12 +5,12 @@
import type { IReactionDisposer } from "mobx";
import { action, comparer, computed, makeObservable, reaction } from "mobx";
import type { StorageLayer } from "../../../utils";
import { autoBind, noop, toggle } from "../../../utils";
import type { KubeObjectStoreLoadingParams } 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 { Namespace } from "../../../../common/k8s-api/endpoints/namespace.api";
import type { StorageLayer } from "../../utils";
import { autoBind, noop, toggle } from "../../utils";
import type { KubeObjectStoreLoadingParams } 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 { Namespace } from "../../../common/k8s-api/endpoints/namespace.api";
interface Dependencies {
storage: StorageLayer<string[] | undefined>;

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
import { ResourceNames } from "../../../../utils/rbac";
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 { computed } from "mobx";

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
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 navigateToDaemonsetsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/daemonsets/navigate-to-daemonsets.injectable";
import { computed } from "mobx";

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
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 navigateToDeploymentsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/deployments/navigate-to-deployments.injectable";
import { computed } from "mobx";

View File

@ -5,7 +5,7 @@
import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
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 navigateToJobsInjectable from "../../../../../common/front-end-routing/routes/cluster/workloads/jobs/navigate-to-jobs.injectable";
import { computed } from "mobx";

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
import { ResourceNames } from "../../../../utils/rbac";
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 podStoreInjectable from "../../../+workloads-pods/store.injectable";

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
import { ResourceNames } from "../../../../utils/rbac";
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 { computed } from "mobx";

View File

@ -6,7 +6,7 @@ import { getInjectable } from "@ogre-tools/injectable";
import { workloadInjectionToken } from "../workload-injection-token";
import { ResourceNames } from "../../../../utils/rbac";
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 { computed } from "mobx";

View File

@ -8,6 +8,7 @@ import podApiInjectable from "../../../common/k8s-api/endpoints/pod.api.injectab
import createStoresAndApisInjectable from "../../create-stores-apis.injectable";
import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable";
import { PodStore } from "./store";
import podMetricsApiInjectable from "../../../common/k8s-api/endpoints/pod-metrics.api.injectable";
const podStoreInjectable = getInjectable({
id: "pod-store",
@ -16,7 +17,9 @@ const podStoreInjectable = getInjectable({
const api = di.inject(podApiInjectable);
const apiManager = di.inject(apiManagerInjectable);
const store = new PodStore(api);
const store = new PodStore({
podMetricsApi: di.inject(podMetricsApiInjectable),
}, api);
apiManager.registerStore(store);

View File

@ -5,18 +5,30 @@
import countBy from "lodash/countBy";
import { observable } from "mobx";
import type { KubeObjectStoreOptions } from "../../../common/k8s-api/kube-object.store";
import { KubeObjectStore } from "../../../common/k8s-api/kube-object.store";
import { cpuUnitsToNumber, unitsToBytes } from "../../utils";
import type { Pod, PodMetrics, PodApi } from "../../../common/k8s-api/endpoints";
import { podMetricsApi } from "../../../common/k8s-api/endpoints";
import type { Pod, PodMetrics, PodApi, PodMetricsApi } from "../../../common/k8s-api/endpoints";
import type { KubeObject, KubeObjectScope } from "../../../common/k8s-api/kube-object";
export interface PodStoreDependencies {
readonly podMetricsApi: PodMetricsApi;
}
export class PodStore extends KubeObjectStore<Pod, PodApi> {
constructor(
protected readonly dependencies: PodStoreDependencies,
api: PodApi,
opts?: KubeObjectStoreOptions,
) {
super(api, opts);
}
readonly kubeMetrics = observable.array<PodMetrics>([]);
async loadKubeMetrics(namespace?: string) {
try {
const metrics = await podMetricsApi.list({ namespace });
const metrics = await this.dependencies.podMetricsApi.list({ namespace });
this.kubeMetrics.replace(metrics ?? []);
} catch (error) {

View File

@ -3,11 +3,19 @@
* Licensed under MIT License. See LICENSE in root directory for more information.
*/
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({
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;

View File

@ -5,11 +5,12 @@
import type { IComputedValue } 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 type { IntervalFn } from "../../../utils";
import { getOrInsertWith, interval } from "../../../utils";
import type { TabId } from "../dock/store";
import type { CallForLogs } from "./call-for-logs.injectable";
import type { LogTabData } from "./tab-store";
type PodLogLine = string;
@ -17,7 +18,7 @@ type PodLogLine = string;
const logLinesToLoad = 500;
interface Dependencies {
callForLogs: ({ namespace, name }: { namespace: string; name: string }, query: IPodLogsQuery) => Promise<string>;
callForLogs: CallForLogs;
}
export class LogStore {
@ -109,7 +110,7 @@ export class LogStore {
* @param params request parameters described in IPodLogsQuery interface
* @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 {
pod,
tabData: {

View File

@ -17,8 +17,8 @@ import type { ItemObject } from "../../../common/item.store";
import type { SearchInputUrlProps } from "../input";
import { FilterType, pageFilters } from "./page-filters.store";
import { PageFiltersList } from "./page-filters-list";
import type { NamespaceStore } from "../+namespaces/namespace-store/namespace.store";
import namespaceStoreInjectable from "../+namespaces/namespace-store/namespace-store.injectable";
import type { NamespaceStore } from "../+namespaces/store";
import namespaceStoreInjectable from "../+namespaces/store.injectable";
import { withInjectables } from "@ogre-tools/injectable-react";
import itemListLayoutStorageInjectable from "./storage.injectable";
import { ItemListLayoutContent } from "./content";

View File

@ -22,9 +22,9 @@ import { Dock } from "../../components/dock";
import { watchHistoryState } from "../../remote-helpers/history-updater";
import { PortForwardDialog } from "../../port-forward";
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 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 { disposer } from "../../utils";
import currentRouteComponentInjectable from "../../routes/current-route-component.injectable";