Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Service selection: Replacing datasource resource calls with query runners #651

Merged
merged 27 commits into from
Aug 2, 2024
Merged
Show file tree
Hide file tree
Changes from 13 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
6c23889
chore: WIP - broken state, replacing index/volume with variable and s…
gtk-grafana Jul 31, 2024
23ba6b3
wip
gtk-grafana Jul 31, 2024
15bfabc
chore: wip - struggling with interpolation
gtk-grafana Jul 31, 2024
8ded064
chore: revert
gtk-grafana Jul 31, 2024
869bf39
chore: clean uop
gtk-grafana Jul 31, 2024
38751b7
chore: move variable up
gtk-grafana Jul 31, 2024
d88f95f
chore: default state
gtk-grafana Jul 31, 2024
41599f8
feat: feature parity with main
gtk-grafana Jul 31, 2024
dc34599
chore: clean up
gtk-grafana Aug 1, 2024
6c8da0f
Merge remote-tracking branch 'origin/main' into gtk-grafana/resource-…
gtk-grafana Aug 1, 2024
a609d4c
fix: fix requery of all panels on time range change (wip)
gtk-grafana Aug 1, 2024
5267f8c
fix: update children instead of always re-creating
gtk-grafana Aug 1, 2024
7fb6bcd
chore: remove uncessary state
gtk-grafana Aug 1, 2024
9298f1d
test: add e2e tests
gtk-grafana Aug 1, 2024
8134b6f
chore: revert yarn.lock
gtk-grafana Aug 1, 2024
d559514
chore: update spellcheck
gtk-grafana Aug 1, 2024
012f217
chore: remove interpolation hack, add custom request id
gtk-grafana Aug 2, 2024
1414681
test: datasource change triggers volume query
gtk-grafana Aug 2, 2024
f79826b
fix: stop loading state from causing full-rerender
gtk-grafana Aug 2, 2024
fc2d0e8
chore: refactor/cleanup
gtk-grafana Aug 2, 2024
4c2f483
chore: remove extra query param
gtk-grafana Aug 2, 2024
7badb17
chore: clean up test file
gtk-grafana Aug 2, 2024
f7e66e5
chore: rename lokiQuery to buildDataQuery
gtk-grafana Aug 2, 2024
f7986a5
fix: fix ci docker compose command
gtk-grafana Aug 2, 2024
226a2e9
fix: show loading state when volume query running, but don't gate bod…
gtk-grafana Aug 2, 2024
98641f6
fix: ci remove docker-compose
gtk-grafana Aug 2, 2024
e67d0cb
Merge remote-tracking branch 'origin/main' into gtk-grafana/resource-…
gtk-grafana Aug 2, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions src/Components/IndexScene/IndexScene.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -31,17 +31,25 @@ import {
VAR_LINE_FILTER,
VAR_LOGS_FORMAT,
VAR_PATTERNS,
VAR_SERVICE_EXPR,
VAR_SERVICE_EXPR_HACK,
} from 'services/variables';

import { addLastUsedDataSourceToStorage, getLastUsedDataSourceFromStorage } from 'services/store';
import { ServiceScene } from '../ServiceScene/ServiceScene';
import { LayoutScene } from './LayoutScene';
import { FilterOp } from 'services/filters';
import { getDrilldownSlug, PageSlugs } from '../../services/routing';
import { ServiceSelectionScene } from '../ServiceSelectionScene/ServiceSelectionScene';
import { SERVICE_NAME, ServiceSelectionScene } from '../ServiceSelectionScene/ServiceSelectionScene';
import { LoadingPlaceholder } from '@grafana/ui';
import { locationService } from '@grafana/runtime';
import { renderLogQLFieldFilters, renderLogQLStreamSelector, renderPatternFilters } from 'services/query';
import {
buildResourceQuery,
renderLogQLFieldFilters,
renderLogQLStreamSelector,
renderPatternFilters,
} from 'services/query';
import { getQueryRunner } from '../../services/panel';

export interface AppliedPattern {
pattern: string;
Expand Down Expand Up @@ -158,7 +166,14 @@ export class IndexScene extends SceneObjectBase<IndexSceneState> {
function getContentScene(drillDownLabel?: string) {
const slug = getDrilldownSlug();
if (slug === PageSlugs.explore) {
return new ServiceSelectionScene({});
const $data = getQueryRunner(
buildResourceQuery(
// passing in the hack string will force the query to be re-run when the datasource changes, we'll remove it before interpolating so it should have no impact on the actual query being executed
`{${SERVICE_NAME}=~\`${VAR_SERVICE_EXPR}.+\` ${VAR_SERVICE_EXPR_HACK} }`,
'volume'
)
);
return new ServiceSelectionScene({ $data });
}

return new ServiceScene({ drillDownLabel });
Expand Down
10 changes: 4 additions & 6 deletions src/Components/ServiceSelectionScene/SelectServiceButton.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
import { Button } from '@grafana/ui';
import { VariableHide } from '@grafana/schema';
import { addToFavoriteServicesInStorage } from 'services/store';
import { getDataSourceVariable, getLabelsVariable } from 'services/variables';
import { getDataSourceVariable, getLabelsVariable, getServiceSelectionStringVariable } from 'services/variables';
import { SERVICE_NAME, ServiceSelectionScene } from './ServiceSelectionScene';
import { reportAppInteraction, USER_EVENTS_ACTIONS, USER_EVENTS_PAGES } from 'services/analytics';
import { FilterOp } from 'services/filters';
Expand Down Expand Up @@ -63,11 +63,9 @@ export function selectService(service: string, sceneRef: SceneObject) {

setParserIfFrameExistsForService(service, sceneRef);

const serviceSelectionScene = sceneGraph.getAncestor(sceneRef, ServiceSelectionScene);
// Setting the service variable state triggers a re-query of the services with invalid queries, so we clear out the body state to avoid triggering queries since
serviceSelectionScene.setState({
servicesToQuery: undefined,
});
const serviceSelectionVariable = getServiceSelectionStringVariable(sceneRef);
// Reset the service selection search to show all services
serviceSelectionVariable.changeValueTo('');

variable.setState({
filters: [
Expand Down
Loading
Loading