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

Load all pods in node details

Signed-off-by: Alex Andreev <alex.andreev.email@gmail.com>
This commit is contained in:
Alex Andreev 2022-12-15 13:27:01 +03:00
parent 91ccaf2ca9
commit 28b84f4cf8
2 changed files with 17 additions and 16 deletions

View File

@ -31,6 +31,10 @@ import type { GetActiveClusterEntity } from "../../api/catalog/entity/get-active
import getActiveClusterEntityInjectable from "../../api/catalog/entity/get-active-cluster-entity.injectable"; import getActiveClusterEntityInjectable from "../../api/catalog/entity/get-active-cluster-entity.injectable";
import type { ClusterMetricData, RequestClusterMetricsByNodeNames } from "../../../common/k8s-api/endpoints/metrics.api/request-cluster-metrics-by-node-names.injectable"; import type { ClusterMetricData, RequestClusterMetricsByNodeNames } from "../../../common/k8s-api/endpoints/metrics.api/request-cluster-metrics-by-node-names.injectable";
import requestClusterMetricsByNodeNamesInjectable from "../../../common/k8s-api/endpoints/metrics.api/request-cluster-metrics-by-node-names.injectable"; import requestClusterMetricsByNodeNamesInjectable from "../../../common/k8s-api/endpoints/metrics.api/request-cluster-metrics-by-node-names.injectable";
import type { ShowNotification } from "../notifications/notifications";
import type { NamespaceStore } from "../+namespaces/store";
import namespaceStoreInjectable from "../+namespaces/store.injectable";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
export interface NodeDetailsProps extends KubeObjectDetailsProps<Node> { export interface NodeDetailsProps extends KubeObjectDetailsProps<Node> {
} }
@ -40,6 +44,8 @@ interface Dependencies {
podStore: PodStore; podStore: PodStore;
getActiveClusterEntity: GetActiveClusterEntity; getActiveClusterEntity: GetActiveClusterEntity;
requestClusterMetricsByNodeNames: RequestClusterMetricsByNodeNames; requestClusterMetricsByNodeNames: RequestClusterMetricsByNodeNames;
namespaceStore: NamespaceStore;
showErrorNotification: ShowNotification;
} }
@observer @observer
@ -55,6 +61,7 @@ class NonInjectedNodeDetails extends React.Component<NodeDetailsProps & Dependen
disposeOnUnmount(this, [ disposeOnUnmount(this, [
reaction(() => this.props.object.getName(), () => { reaction(() => this.props.object.getName(), () => {
this.metrics = null; this.metrics = null;
this.loadAllPods();
}), }),
this.props.subscribeStores([ this.props.subscribeStores([
@ -63,6 +70,14 @@ class NonInjectedNodeDetails extends React.Component<NodeDetailsProps & Dependen
]); ]);
} }
loadAllPods() {
this.props.podStore.loadAll({
namespaces: [...this.props.namespaceStore.getItems().map(ns => ns.getName())],
onLoadFailure: error =>
this.props.showErrorNotification(`Can not load Pods. ${String(error)}`)
});
}
loadMetrics = async () => { loadMetrics = async () => {
const { object: node, requestClusterMetricsByNodeNames } = this.props; const { object: node, requestClusterMetricsByNodeNames } = this.props;
@ -196,8 +211,10 @@ export const NodeDetails = withInjectables<Dependencies, NodeDetailsProps>(NonIn
...props, ...props,
subscribeStores: di.inject(subscribeStoresInjectable), subscribeStores: di.inject(subscribeStoresInjectable),
podStore: di.inject(podStoreInjectable), podStore: di.inject(podStoreInjectable),
namespaceStore: di.inject(namespaceStoreInjectable),
getActiveClusterEntity: di.inject(getActiveClusterEntityInjectable), getActiveClusterEntity: di.inject(getActiveClusterEntityInjectable),
requestClusterMetricsByNodeNames: di.inject(requestClusterMetricsByNodeNamesInjectable), requestClusterMetricsByNodeNames: di.inject(requestClusterMetricsByNodeNamesInjectable),
showErrorNotification: di.inject(showErrorNotificationInjectable)
}), }),
}); });

View File

@ -21,10 +21,6 @@ import { Spinner } from "../spinner";
import { Table, TableCell, TableHead, TableRow } from "../table"; import { Table, TableCell, TableHead, TableRow } from "../table";
import type { PodStore } from "./store"; import type { PodStore } from "./store";
import podStoreInjectable from "./store.injectable"; import podStoreInjectable from "./store.injectable";
import namespaceStoreInjectable from "../+namespaces/store.injectable";
import type { NamespaceStore } from "../+namespaces/store";
import showErrorNotificationInjectable from "../notifications/show-error-notification.injectable";
import type { ShowNotification } from "../notifications/notifications";
enum sortBy { enum sortBy {
name = "name", name = "name",
@ -43,8 +39,6 @@ export interface PodDetailsListProps {
interface Dependencies { interface Dependencies {
getDetailsUrl: GetDetailsUrl; getDetailsUrl: GetDetailsUrl;
podStore: PodStore; podStore: PodStore;
namespaceStore: NamespaceStore;
showErrorNotification: ShowNotification;
} }
@observer @observer
@ -58,14 +52,6 @@ export class NonInjectedPodDetailsList extends React.Component<PodDetailsListPro
disposeOnUnmount(this, [ disposeOnUnmount(this, [
reaction(() => this.props.pods[0]?.getNs(), () => this.metricsWatcher.restart(true)), reaction(() => this.props.pods[0]?.getNs(), () => this.metricsWatcher.restart(true)),
]); ]);
this.props.podStore.loadAll({
namespaces: [
...this.props.namespaceStore.getItems().map(ns => ns.getName())
],
onLoadFailure: error =>
this.props.showErrorNotification(`Can not load Pods. ${String(error)}`)
});
} }
componentWillUnmount() { componentWillUnmount() {
@ -222,7 +208,5 @@ export const PodDetailsList = withInjectables<Dependencies, PodDetailsListProps>
...props, ...props,
getDetailsUrl: di.inject(getDetailsUrlInjectable), getDetailsUrl: di.inject(getDetailsUrlInjectable),
podStore: di.inject(podStoreInjectable), podStore: di.inject(podStoreInjectable),
namespaceStore: di.inject(namespaceStoreInjectable),
showErrorNotification: di.inject(showErrorNotificationInjectable)
}), }),
}); });