mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Fix metrics visibility logic (#7465)
Signed-off-by: Juho Heikka <juho.heikka@gmail.com>
This commit is contained in:
parent
3b8ef07a9e
commit
a73586d844
@ -0,0 +1,52 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
import { Cluster } from "../../../../../common/cluster/cluster";
|
||||
import { getDiForUnitTesting } from "../../../../getDiForUnitTesting";
|
||||
import enabledMetricsInjectable from "../metrics-enabled.injectable";
|
||||
import activeEntityInternalClusterInjectable from "../get-active-cluster-entity.injectable";
|
||||
import { observable } from "mobx";
|
||||
import { ClusterMetricsResourceType } from "../../../../../common/cluster-types";
|
||||
import type { DiContainer } from "@ogre-tools/injectable";
|
||||
|
||||
describe("metrics-enabled", () => {
|
||||
let cluster: Cluster;
|
||||
let di: DiContainer;
|
||||
|
||||
beforeEach(() => {
|
||||
di = getDiForUnitTesting();
|
||||
|
||||
cluster = new Cluster({ contextName: "irrelevant", id: "irrelevant", kubeConfigPath: "irrelevant" });
|
||||
const observableCluster = observable.box(cluster);
|
||||
|
||||
di.override(activeEntityInternalClusterInjectable, () => observableCluster);
|
||||
});
|
||||
|
||||
it("given cluster has no hidden metrics preferences, should be true for all resources", () => {
|
||||
const resourceTypes = Object.values(ClusterMetricsResourceType);
|
||||
|
||||
delete cluster.preferences.hiddenMetrics;
|
||||
resourceTypes.forEach((resourceType) => {
|
||||
expect(di.inject(enabledMetricsInjectable, resourceType).get()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it("given cluster has metrics preferences, but nothing is hidden, should be true for all resources", () => {
|
||||
const resourceTypes = Object.values(ClusterMetricsResourceType);
|
||||
|
||||
cluster.preferences.hiddenMetrics = [];
|
||||
|
||||
resourceTypes.forEach((resourceType) => {
|
||||
expect(di.inject(enabledMetricsInjectable, resourceType).get()).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
it("given cluster has metrics preferences, and some resource is hidden, should be false", () => {
|
||||
cluster.preferences.hiddenMetrics = [ClusterMetricsResourceType.Pod];
|
||||
|
||||
expect(di.inject(enabledMetricsInjectable, ClusterMetricsResourceType.Pod).get()).toBe(false);
|
||||
});
|
||||
});
|
||||
|
||||
@ -21,7 +21,7 @@ const metricsDetailsComponentEnabledInjectable = getInjectable({
|
||||
return false;
|
||||
}
|
||||
|
||||
return current.object.kind == kind && metricsEnabled.get();
|
||||
return metricsEnabled.get() && current.object.kind == kind;
|
||||
});
|
||||
},
|
||||
lifecycle: lifecycleEnum.keyedSingleton({
|
||||
|
||||
@ -16,10 +16,10 @@ const enabledMetricsInjectable = getInjectable({
|
||||
const cluster = activeEntityInternalCluster.get();
|
||||
|
||||
if (!cluster?.preferences.hiddenMetrics) {
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
return cluster.preferences.hiddenMetrics.includes(kind);
|
||||
return !cluster.preferences.hiddenMetrics.includes(kind);
|
||||
});
|
||||
},
|
||||
lifecycle: lifecycleEnum.keyedSingleton({
|
||||
|
||||
@ -98,11 +98,12 @@ class NonInjectedClusterOverview extends React.Component<Dependencies> {
|
||||
render() {
|
||||
const { eventStore, nodeStore, clusterMetricsAreVisible } = this.props;
|
||||
const isLoaded = nodeStore.isLoaded && eventStore.isLoaded;
|
||||
const isMetricsHidden = !clusterMetricsAreVisible.get();
|
||||
|
||||
return (
|
||||
<TabLayout scrollable>
|
||||
<div className={styles.ClusterOverview} data-testid="cluster-overview-page">
|
||||
{this.renderClusterOverview(isLoaded, clusterMetricsAreVisible.get())}
|
||||
{this.renderClusterOverview(isLoaded, isMetricsHidden)}
|
||||
</div>
|
||||
</TabLayout>
|
||||
);
|
||||
|
||||
@ -97,7 +97,7 @@ class NonInjectedPodDetailsContainer extends React.Component<PodDetailsContainer
|
||||
const readiness = pod.getReadinessProbe(container);
|
||||
const startup = pod.getStartupProbe(container);
|
||||
const isInitContainer = !!pod.getInitContainers().find(c => c.name == name);
|
||||
const isMetricHidden = containerMetricsVisible.get();
|
||||
const isMetricVisible = containerMetricsVisible.get();
|
||||
|
||||
return (
|
||||
<div className="PodDetailsContainer">
|
||||
@ -105,7 +105,7 @@ class NonInjectedPodDetailsContainer extends React.Component<PodDetailsContainer
|
||||
<StatusBrick className={cssNames(state, { ready })}/>
|
||||
{name}
|
||||
</div>
|
||||
{(!isMetricHidden && !isInitContainer && metrics) && (
|
||||
{(isMetricVisible && !isInitContainer && metrics) && (
|
||||
<ResourceMetrics
|
||||
object={pod}
|
||||
tabs={[
|
||||
|
||||
Loading…
Reference in New Issue
Block a user