Skip to content

Commit

Permalink
Export requestMetrics to extension api (#7167)
Browse files Browse the repository at this point in the history
* Export requestMetrics to extension api

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Fixup typing

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Revert change

Signed-off-by: Sebastian Malton <sebastian@malton.name>

* Make diff smaller

Signed-off-by: Sebastian Malton <sebastian@malton.name>

---------

Signed-off-by: Sebastian Malton <sebastian@malton.name>
  • Loading branch information
Nokel81 committed Feb 17, 2023
1 parent 2959e01 commit dafdabc
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -37,18 +37,17 @@ export interface RequestMetricsParams {
namespace?: string;
}

export interface RequestMetrics {
(query: string, params?: RequestMetricsParams): Promise<MetricData>;
(query: string[], params?: RequestMetricsParams): Promise<MetricData[]>;
<Keys extends string>(query: Record<Keys, Partial<Record<string, string>>>, params?: RequestMetricsParams): Promise<Record<Keys, MetricData>>;
}
export type RequestMetrics = ReturnType<typeof requestMetricsInjectable["instantiate"]>;

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<MetricData>;
function requestMetrics(query: string[], params?: RequestMetricsParams): Promise<MetricData[]>;
function requestMetrics<Keys extends string>(query: Record<Keys, Partial<Record<string, string>>>, params?: RequestMetricsParams): Promise<Record<Keys, MetricData>>;
async function requestMetrics(query: string | string[] | Partial<Record<string, Partial<Record<string, string>>>>, params: RequestMetricsParams = {}): Promise<MetricData | MetricData[] | Partial<Record<string, MetricData>>> {
const { range = 3600, step = 60, namespace } = params;
let { start, end } = params;

Expand All @@ -66,7 +65,9 @@ const requestMetricsInjectable = getInjectable({
"kubernetes_namespace": namespace,
},
});
}) as RequestMetrics;
}

return requestMetrics;
},
});

Expand Down
13 changes: 13 additions & 0 deletions packages/core/src/extensions/renderer-api/k8s-api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -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,
Expand Down

0 comments on commit dafdabc

Please sign in to comment.