From cb807d843e861020121017779e68277839674df6 Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Wed, 18 Jan 2023 10:26:38 +0300 Subject: [PATCH] Using metrics parser in hpa list and details Signed-off-by: Alex Andreev --- .../horizontal-pod-autoscaler.api.ts | 5 +++++ .../+config-autoscalers/hpa-details.tsx | 19 +++++++++++-------- .../components/+config-autoscalers/hpa.tsx | 5 ++++- 3 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/common/k8s-api/endpoints/horizontal-pod-autoscaler.api.ts b/src/common/k8s-api/endpoints/horizontal-pod-autoscaler.api.ts index 1a5cd80662..4c14a5ccf2 100644 --- a/src/common/k8s-api/endpoints/horizontal-pod-autoscaler.api.ts +++ b/src/common/k8s-api/endpoints/horizontal-pod-autoscaler.api.ts @@ -17,6 +17,11 @@ export enum HpaMetricType { ContainerResource = "ContainerResource", } +export interface MetricCurrentTarget { + current?: string; + target?: string; +} + export interface HorizontalPodAutoscalerMetricTarget { kind: string; name: string; diff --git a/src/renderer/components/+config-autoscalers/hpa-details.tsx b/src/renderer/components/+config-autoscalers/hpa-details.tsx index 4bd5f12a66..a38184dd02 100644 --- a/src/renderer/components/+config-autoscalers/hpa-details.tsx +++ b/src/renderer/components/+config-autoscalers/hpa-details.tsx @@ -22,6 +22,7 @@ import { withInjectables } from "@ogre-tools/injectable-react"; import apiManagerInjectable from "../../../common/k8s-api/api-manager/manager.injectable"; import getDetailsUrlInjectable from "../kube-detail-params/get-details-url.injectable"; import loggerInjectable from "../../../common/logger.injectable"; +import getHorizontalPodAutoscalerMetrics from "./get-hpa-metrics.injectable"; export interface HpaDetailsProps extends KubeObjectDetailsProps { } @@ -30,6 +31,7 @@ interface Dependencies { apiManager: ApiManager; logger: Logger; getDetailsUrl: GetDetailsUrl; + getMetrics: (hpa: HorizontalPodAutoscaler) => string[]; } @observer @@ -70,19 +72,19 @@ class NonInjectedHpaDetails extends React.Component - {metric.object.metricName} + {metric.object.metricName || metric.object.metric?.name} {" "} - {this.renderTargetLink(metric.object.target)} + {this.renderTargetLink(metric.object.describedObject)} ); } case HpaMetricType.External: - return `${metric.external.metricName} on ${JSON.stringify(metric.external.metricSelector)}`; + return `${metric.external.metricName ?? metric.external.metric?.name} on ${JSON.stringify(metric.external.metricSelector ?? metric.external.metric?.selector)}`; } }; @@ -93,11 +95,11 @@ class NonInjectedHpaDetails extends React.ComponentCurrent / Target { - hpa.getMetrics() - .map((metric, index) => ( + this.props.getMetrics(hpa) + .map((metrics, index) => ( - {renderName(metric)} - {hpa.getMetricValues(metric)} + {renderName(hpa.getMetrics()[index])} + {metrics} )) } @@ -175,5 +177,6 @@ export const HpaDetails = withInjectables(NonInje apiManager: di.inject(apiManagerInjectable), getDetailsUrl: di.inject(getDetailsUrlInjectable), logger: di.inject(loggerInjectable), + getMetrics: di.inject(getHorizontalPodAutoscalerMetrics), }), }); diff --git a/src/renderer/components/+config-autoscalers/hpa.tsx b/src/renderer/components/+config-autoscalers/hpa.tsx index 8900d7b73d..dfa337f3aa 100644 --- a/src/renderer/components/+config-autoscalers/hpa.tsx +++ b/src/renderer/components/+config-autoscalers/hpa.tsx @@ -19,6 +19,7 @@ import type { FilterByNamespace } from "../+namespaces/namespace-select-filter-m import { withInjectables } from "@ogre-tools/injectable-react"; import filterByNamespaceInjectable from "../+namespaces/namespace-select-filter-model/filter-by-namespace.injectable"; import horizontalPodAutoscalerStoreInjectable from "./store.injectable"; +import getHorizontalPodAutoscalerMetrics from "./get-hpa-metrics.injectable"; enum columnId { name = "name", @@ -34,6 +35,7 @@ enum columnId { interface Dependencies { horizontalPodAutoscalerStore: HorizontalPodAutoscalerStore; filterByNamespace: FilterByNamespace; + getMetrics: (hpa: HorizontalPodAutoscaler) => string[]; } @observer @@ -49,7 +51,7 @@ class NonInjectedHorizontalPodAutoscalers extends React.Component return (

- {hpa.getMetricValues(metrics[0])} + {this.props.getMetrics(hpa)[0]} {" "} {metricsRemain}

@@ -126,5 +128,6 @@ export const HorizontalPodAutoscalers = withInjectables(NonInjecte ...props, filterByNamespace: di.inject(filterByNamespaceInjectable), horizontalPodAutoscalerStore: di.inject(horizontalPodAutoscalerStoreInjectable), + getMetrics: di.inject(getHorizontalPodAutoscalerMetrics), }), });