import axios from 'api'; import { ErrorResponseHandler } from 'api/ErrorResponseHandler'; import { AxiosError } from 'axios'; import { ErrorResponse, SuccessResponse } from 'types/api'; import { BaseAutocompleteData } from 'types/api/queryBuilder/queryAutocompleteResponse'; import { TagFilter } from 'types/api/queryBuilder/queryBuilderData'; export interface K8sJobsListPayload { filters: TagFilter; groupBy?: BaseAutocompleteData[]; offset?: number; limit?: number; orderBy?: { columnName: string; order: 'asc' | 'desc'; }; } export interface K8sJobsData { jobName: string; cpuUsage: number; memoryUsage: number; cpuRequest: number; memoryRequest: number; cpuLimit: number; memoryLimit: number; restarts: number; desiredSuccessfulPods: number; activePods: number; failedPods: number; successfulPods: number; meta: { k8s_cluster_name: string; k8s_job_name: string; k8s_namespace_name: string; }; } export interface K8sJobsListResponse { status: string; data: { type: string; records: K8sJobsData[]; groups: null; total: number; sentAnyHostMetricsData: boolean; isSendingK8SAgentMetrics: boolean; }; } export const getK8sJobsList = async ( props: K8sJobsListPayload, signal?: AbortSignal, headers?: Record, ): Promise | ErrorResponse> => { try { const response = await axios.post('/jobs/list', props, { signal, headers, }); return { statusCode: 200, error: null, message: 'Success', payload: response.data, params: props, }; } catch (error) { return ErrorResponseHandler(error as AxiosError); } };