diff --git a/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts b/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts index e83c52b9aa..08ed4c211a 100644 --- a/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts +++ b/packages/core/src/common/k8s-api/endpoints/metrics.api/request-metrics.injectable.ts @@ -37,18 +37,17 @@ export interface RequestMetricsParams { namespace?: string; } -export interface RequestMetrics { - (query: string, params?: RequestMetricsParams): Promise; - (query: string[], params?: RequestMetricsParams): Promise; - (query: Record>>, params?: RequestMetricsParams): Promise>; -} +export type RequestMetrics = ReturnType; const requestMetricsInjectable = getInjectable({ id: "request-metrics", instantiate: (di) => { const apiBase = di.inject(apiBaseInjectable); - return (async (query: object, params: RequestMetricsParams = {}) => { + function requestMetrics(query: string, params?: RequestMetricsParams): Promise; + function requestMetrics(query: string[], params?: RequestMetricsParams): Promise; + function requestMetrics(query: Record>>, params?: RequestMetricsParams): Promise>; + async function requestMetrics(query: string | string[] | Partial>>>, params: RequestMetricsParams = {}): Promise>> { const { range = 3600, step = 60, namespace } = params; let { start, end } = params; @@ -66,7 +65,9 @@ const requestMetricsInjectable = getInjectable({ "kubernetes_namespace": namespace, }, }); - }) as RequestMetrics; + } + + return requestMetrics; }, }); diff --git a/packages/core/src/extensions/renderer-api/k8s-api.ts b/packages/core/src/extensions/renderer-api/k8s-api.ts index 019c8805ad..1dfdc0e075 100644 --- a/packages/core/src/extensions/renderer-api/k8s-api.ts +++ b/packages/core/src/extensions/renderer-api/k8s-api.ts @@ -38,6 +38,8 @@ import kubeEventApiInjectable from "../../common/k8s-api/endpoints/events.api.in import roleBindingApiInjectable from "../../common/k8s-api/endpoints/role-binding.api.injectable"; import customResourceDefinitionApiInjectable from "../../common/k8s-api/endpoints/custom-resource-definition.api.injectable"; import { shouldShowResourceInjectionToken } from "../../common/cluster-store/allowed-resources-injection-token"; +import { asLegacyGlobalFunctionForExtensionApi } from "../as-legacy-globals-for-extension-api/as-legacy-global-function-for-extension-api"; +import requestMetricsInjectable from "../../common/k8s-api/endpoints/metrics.api/request-metrics.injectable"; export function isAllowedResource(resources: KubeResource | KubeResource[]) { const di = getLegacyGlobalDiForExtensionApi(); @@ -93,6 +95,17 @@ export const crdApi = asLegacyGlobalForExtensionApi(customResourceDefinitionApiI export * from "../common-api/k8s-api"; +export const requestMetrics = asLegacyGlobalFunctionForExtensionApi(requestMetricsInjectable); + +export type { + RequestMetrics, + RequestMetricsParams, +} from "../../common/k8s-api/endpoints/metrics.api/request-metrics.injectable"; +export type { + MetricData, + MetricResult, +} from "../../common/k8s-api/endpoints/metrics.api"; + export { KubeObjectStatusLevel, type KubeObjectStatus,