Skip to content

Commit 99dbf79

Browse files
committed
refactor: Move DeploymentsQueryBuilder to Queries.ts
1 parent 864d0d0 commit 99dbf79

File tree

2 files changed

+44
-41
lines changed

2 files changed

+44
-41
lines changed

src/pages/Workloads/tabs/Deployments/Deployments.tsx

+3-39
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,21 @@
11
import {
22
EmbeddedScene,
33
SceneFlexLayout,
4-
SceneFlexItem,
5-
SceneQueryRunner,
4+
SceneFlexItem,
65
TextBoxVariable,
76
VariableValueSelectors,
87
SceneVariableSet,
9-
SceneVariables,
108
} from '@grafana/scenes';
11-
import { createRowQueries } from './Queries';
129
import { ReplicasCell } from 'pages/Workloads/components/ReplicasCell';
1310
import { getSeriesValue } from 'common/seriesHelpers';
1411
import { buildExpandedRowScene } from './DeploymentExpandedRow';
1512
import { createNamespaceVariable } from 'common/variableHelpers';
16-
import { Metrics } from 'metrics/metrics';
1713
import { TableRow } from './types';
18-
import { AsyncTable, Column, ColumnSortingConfig, QueryBuilder } from 'components/AsyncTable';
14+
import { AsyncTable, Column } from 'components/AsyncTable';
1915
import { SortingState } from 'common/sortingHelpers';
2016
import { prefixRoute } from 'utils/utils.routing';
2117
import { ROUTES } from '../../../../constants';
18+
import { DeploymentQueryBuilder } from './Queries';
2219

2320
const namespaceVariable = createNamespaceVariable();
2421

@@ -83,39 +80,6 @@ function asyncRowMapper(row: TableRow, asyncRowData: any) {
8380
}
8481
}
8582

86-
class DeploymentQueryBuilder implements QueryBuilder<TableRow> {
87-
rootQueryBuilder(variables: SceneVariableSet | SceneVariables, sorting: SortingState, sortingConfig?: ColumnSortingConfig<TableRow>) {
88-
return new SceneQueryRunner({
89-
datasource: {
90-
uid: '$datasource',
91-
type: 'prometheus',
92-
},
93-
queries: [
94-
{
95-
refId: 'deployments',
96-
expr: `
97-
group(
98-
${Metrics.kubeReplicasetOwner.name}{
99-
cluster="$cluster",
100-
${Metrics.kubeReplicasetOwner.labels.namespace}=~"$namespace",
101-
${Metrics.kubeReplicasetOwner.labels.ownerName}=~".*$search.*",
102-
${Metrics.kubeReplicasetOwner.labels.ownerKind}="Deployment"
103-
}
104-
) by (
105-
${Metrics.kubeReplicasetOwner.labels.ownerName},
106-
${Metrics.kubeReplicasetOwner.labels.namespace}
107-
)`,
108-
instant: true,
109-
format: 'table'
110-
},
111-
],
112-
})
113-
}
114-
rowQueryBuilder(rows: TableRow[], variables: SceneVariableSet | SceneVariables) {
115-
return createRowQueries(rows, variables)
116-
}
117-
}
118-
11983
function createRowId(row: TableRow) {
12084
return `${row.namespace}/${row.deployment}`
12185
}

src/pages/Workloads/tabs/Deployments/Queries.ts

+41-2
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
import { SceneVariables } from "@grafana/scenes";
1+
import { SceneQueryRunner, SceneVariableSet, SceneVariables } from "@grafana/scenes";
22
import { resolveVariable } from "common/variableHelpers";
33
import { Metrics } from "metrics/metrics";
44
import { TableRow } from "./types";
5+
import { QueryBuilder, ColumnSortingConfig } from "components/AsyncTable";
6+
import { SortingState } from "common/sortingHelpers";
57

6-
export function createRowQueries(rows: TableRow[], sceneVariables: SceneVariables) {
8+
function createRowQueries(rows: TableRow[], sceneVariables: SceneVariables) {
79

810
const deployments = rows.map(row => row.deployment).join('|');
911
const cluster = resolveVariable(sceneVariables, 'cluster');
1012

1113
return [
14+
{
15+
16+
},
1217
{
1318
refId: 'replicas',
1419
expr: `
@@ -41,3 +46,37 @@ export function createRowQueries(rows: TableRow[], sceneVariables: SceneVariable
4146
},
4247
];
4348
}
49+
50+
export class DeploymentQueryBuilder implements QueryBuilder<TableRow> {
51+
rootQueryBuilder(variables: SceneVariableSet | SceneVariables, sorting: SortingState, sortingConfig?: ColumnSortingConfig<TableRow>) {
52+
return new SceneQueryRunner({
53+
datasource: {
54+
uid: '$datasource',
55+
type: 'prometheus',
56+
},
57+
queries: [
58+
{
59+
refId: 'deployments',
60+
expr: `
61+
group(
62+
${Metrics.kubeReplicasetOwner.name}{
63+
cluster="$cluster",
64+
${Metrics.kubeReplicasetOwner.labels.namespace}=~"$namespace",
65+
${Metrics.kubeReplicasetOwner.labels.ownerName}=~".*$search.*",
66+
${Metrics.kubeReplicasetOwner.labels.ownerKind}="Deployment"
67+
}
68+
) by (
69+
${Metrics.kubeReplicasetOwner.labels.ownerName},
70+
${Metrics.kubeReplicasetOwner.labels.namespace}
71+
)`,
72+
instant: true,
73+
format: 'table'
74+
},
75+
],
76+
})
77+
}
78+
79+
rowQueryBuilder(rows: TableRow[], variables: SceneVariableSet | SceneVariables) {
80+
return createRowQueries(rows, variables)
81+
}
82+
}

0 commit comments

Comments
 (0)