/* eslint-disable sonarjs/no-duplicate-string */ import { K8sJobsData } from 'api/infraMonitoring/getK8sJobsList'; import { PANEL_TYPES } from 'constants/queryBuilder'; import { GetQueryResultsProps } from 'lib/dashboard/getQueryResults'; import { DataTypes } from 'types/api/queryBuilder/queryAutocompleteResponse'; import { EQueryType } from 'types/common/dashboard'; import { DataSource } from 'types/common/queryBuilder'; import { v4 } from 'uuid'; export const jobWidgetInfo = [ { title: 'CPU usage', yAxisUnit: '', }, { title: 'Memory usage, request, limits', yAxisUnit: 'bytes', }, { title: 'Network IO', yAxisUnit: 'binBps', }, { title: 'Network errors count', yAxisUnit: '', }, ]; export const getJobMetricsQueryPayload = ( job: K8sJobsData, start: number, end: number, dotMetricsEnabled: boolean, ): GetQueryResultsProps[] => { const k8sPodCpuUtilizationKey = dotMetricsEnabled ? 'k8s.pod.cpu.utilization' : 'k8s_pod_cpu_utilization'; const k8sPodMemoryUsageKey = dotMetricsEnabled ? 'k8s.pod.memory.usage' : 'k8s_pod_memory_usage'; const k8sPodNetworkIoKey = dotMetricsEnabled ? 'k8s.pod.network.io' : 'k8s_pod_network_io'; const k8sPodNetworkErrorsKey = dotMetricsEnabled ? 'k8s.pod.network.errors' : 'k8s_pod_network_errors'; const k8sJobNameKey = dotMetricsEnabled ? 'k8s.job.name' : 'k8s_job_name'; const k8sNamespaceNameKey = dotMetricsEnabled ? 'k8s.namespace.name' : 'k8s_namespace_name'; return [ { selectedTime: 'GLOBAL_TIME', graphType: PANEL_TYPES.TIME_SERIES, query: { builder: { queryData: [ { aggregateAttribute: { dataType: DataTypes.Float64, id: 'k8s_pod_cpu_utilization--float64--Gauge--true', isColumn: true, isJSON: false, key: k8sPodCpuUtilizationKey, type: 'Gauge', }, aggregateOperator: 'avg', dataSource: DataSource.METRICS, disabled: false, expression: 'A', filters: { items: [ { id: '6b59b690', key: { dataType: DataTypes.String, id: 'k8s_job_name--string--tag--false', isColumn: false, isJSON: false, key: k8sJobNameKey, type: 'tag', }, op: '=', value: job.jobName, }, { id: '47b3adae', key: { dataType: DataTypes.String, id: 'k8s_namespace_name--string--tag--false', isColumn: false, isJSON: false, key: k8sNamespaceNameKey, type: 'tag', }, op: '=', value: job.meta.k8s_namespace_name, }, ], op: 'AND', }, functions: [], groupBy: [], having: [], legend: 'usage', limit: null, orderBy: [], queryName: 'A', reduceTo: 'avg', spaceAggregation: 'sum', stepInterval: 60, timeAggregation: 'avg', }, ], queryFormulas: [], }, clickhouse_sql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], id: v4(), promql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], queryType: EQueryType.QUERY_BUILDER, }, variables: {}, formatForWeb: false, start, end, }, { selectedTime: 'GLOBAL_TIME', graphType: PANEL_TYPES.TIME_SERIES, query: { builder: { queryData: [ { aggregateAttribute: { dataType: DataTypes.Float64, id: 'k8s_pod_memory_usage--float64--Gauge--true', isColumn: true, isJSON: false, key: k8sPodMemoryUsageKey, type: 'Gauge', }, aggregateOperator: 'avg', dataSource: DataSource.METRICS, disabled: false, expression: 'A', filters: { items: [ { id: '8c217f4d', key: { dataType: DataTypes.String, id: 'k8s_job_name--string--tag--false', isColumn: false, isJSON: false, key: k8sJobNameKey, type: 'tag', }, op: '=', value: job.jobName, }, { id: '47b3adae', key: { dataType: DataTypes.String, id: 'k8s_namespace_name--string--tag--false', isColumn: false, isJSON: false, key: k8sNamespaceNameKey, type: 'tag', }, op: '=', value: job.meta.k8s_namespace_name, }, ], op: 'AND', }, functions: [], groupBy: [], having: [], legend: 'usage', limit: null, orderBy: [], queryName: 'A', reduceTo: 'avg', spaceAggregation: 'sum', stepInterval: 60, timeAggregation: 'avg', }, ], queryFormulas: [], }, clickhouse_sql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], id: v4(), promql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], queryType: EQueryType.QUERY_BUILDER, }, variables: {}, formatForWeb: false, start, end, }, { selectedTime: 'GLOBAL_TIME', graphType: PANEL_TYPES.TIME_SERIES, query: { builder: { queryData: [ { aggregateAttribute: { dataType: DataTypes.Float64, id: 'k8s_pod_network_io--float64--Sum--true', isColumn: true, isJSON: false, key: k8sPodNetworkIoKey, type: 'Sum', }, aggregateOperator: 'rate', dataSource: DataSource.METRICS, disabled: false, expression: 'A', filters: { items: [ { id: '2bbf9d0c', key: { dataType: DataTypes.String, id: 'k8s_job_name--string--tag--false', isColumn: false, isJSON: false, key: k8sJobNameKey, type: 'tag', }, op: '=', value: job.jobName, }, { id: '47b3adae', key: { dataType: DataTypes.String, id: 'k8s_namespace_name--string--tag--false', isColumn: false, isJSON: false, key: k8sNamespaceNameKey, type: 'tag', }, op: '=', value: job.meta.k8s_namespace_name, }, ], op: 'AND', }, functions: [], groupBy: [ { dataType: DataTypes.String, id: 'direction--string--tag--false', isColumn: false, isJSON: false, key: 'direction', type: 'tag', }, { dataType: DataTypes.String, id: 'interface--string--tag--false', isColumn: false, isJSON: false, key: 'interface', type: 'tag', }, ], having: [], legend: '{{direction}} :: {{interface}}', limit: null, orderBy: [], queryName: 'A', reduceTo: 'avg', spaceAggregation: 'sum', stepInterval: 60, timeAggregation: 'rate', }, ], queryFormulas: [], }, clickhouse_sql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], id: v4(), promql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], queryType: EQueryType.QUERY_BUILDER, }, variables: {}, formatForWeb: false, start, end, }, { selectedTime: 'GLOBAL_TIME', graphType: PANEL_TYPES.TIME_SERIES, query: { builder: { queryData: [ { aggregateAttribute: { dataType: DataTypes.Float64, id: 'k8s_pod_network_errors--float64--Sum--true', isColumn: true, isJSON: false, key: k8sPodNetworkErrorsKey, type: 'Sum', }, aggregateOperator: 'increase', dataSource: DataSource.METRICS, disabled: false, expression: 'A', filters: { items: [ { id: '448e6cf7', key: { dataType: DataTypes.String, id: 'k8s_job_name--string--tag--false', isColumn: false, isJSON: false, key: k8sJobNameKey, type: 'tag', }, op: '=', value: job.jobName, }, { id: '47b3adae', key: { dataType: DataTypes.String, id: 'k8s_namespace_name--string--tag--false', isColumn: false, isJSON: false, key: k8sNamespaceNameKey, type: 'tag', }, op: '=', value: job.meta.k8s_namespace_name, }, ], op: 'AND', }, functions: [], groupBy: [ { dataType: DataTypes.String, id: 'direction--string--tag--false', isColumn: false, isJSON: false, key: 'direction', type: 'tag', }, { dataType: DataTypes.String, id: 'interface--string--tag--false', isColumn: false, isJSON: false, key: 'interface', type: 'tag', }, ], having: [], legend: '{{direction}} :: {{interface}}', limit: null, orderBy: [], queryName: 'A', reduceTo: 'avg', spaceAggregation: 'sum', stepInterval: 60, timeAggregation: 'increase', }, ], queryFormulas: [], }, clickhouse_sql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], id: v4(), promql: [ { disabled: false, legend: '', name: 'A', query: '', }, ], queryType: EQueryType.QUERY_BUILDER, }, variables: {}, formatForWeb: false, start, end, }, ]; };