diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index b9daf7a2487..f175117e4db 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -41,18 +41,20 @@ /docs/sources/ @irenerl24 /docs/sources/alerting/ @JohnnyK-Grafana -/docs/sources/dashboards/ @imatwawana /docs/sources/datasources/ @lwandz13 -/docs/sources/panels-visualizations/ @imatwawana /docs/sources/upgrade-guide/ @jtvdez /docs/sources/whatsnew/ @jtvdez -/docs/sources/developers/plugins/ @grafana/plugins-platform-frontend @grafana/plugins-platform-backend -/docs/sources/dashboards/share-dashboards-panels/_index.md @imatwawana @jtvdez -/docs/sources/dashboards/share-dashboards-panels/shared-dashboards/index.md @jtvdez -/docs/sources/panels-visualizations/query-transform-data/transform-data/index.md @imatwawana @baldm0mma -/docs/sources/panels-visualizations/query-transform-data/sql-expressions/index.md @lwandz13 @irenerl24 +/docs/sources/developers/plugins/ @grafana/plugins-platform-frontend @grafana/plugins-platform-backend +/docs/sources/visualizations/dashboards/ @imatwawana +/docs/sources/visualizations/panels-visualizations/ @imatwawana + + +/docs/sources/visualizations/dashboards/share-dashboards-panels/_index.md @imatwawana @jtvdez +/docs/sources/visualizations/dashboards/share-dashboards-panels/shared-dashboards/index.md @jtvdez +/docs/sources/visualizations/panels-visualizations/query-transform-data/transform-data/index.md @imatwawana @baldm0mma +/docs/sources/visualizations/panels-visualizations/query-transform-data/sql-expressions/index.md @lwandz13 @irenerl24 # END Technical documentation # Backend code diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 1c62ef810eb..79987600b9a 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -1,32 +1,65 @@ version: 2 updates: - package-ecosystem: "github-actions" + commit-message: + prefix: deps(actions) directory: "/" schedule: interval: "daily" - package-ecosystem: "gomod" + commit-message: + prefix: deps(go) directories: - "/" - - "/apps/playlist" - - "/apps/secret" + - "/apps/advisor" + - "/apps/alerting/alertenrichment" + - "/apps/alerting/notifications" + - "/apps/alerting/rules" + - "/apps/correlations" + - "/apps/dashboard" + - "/apps/folder" + - "/apps/iam" - "/apps/investigations" + - "/apps/playlist" + - "/apps/plugins" + - "/apps/preferences" + - "/apps/provisioning" + - "/apps/scope" + - "/apps/secret" + - "/apps/shorturl" + - "/hack" - "/pkg/aggregator" - "/pkg/apimachinery" - - "/pkg/apis/folder" - "/pkg/apiserver" - "/pkg/build" - "/pkg/build/wire" + - "/pkg/codegen" + - "/pkg/plugins/codegen" - "/pkg/promlib" - "/pkg/semconv" - - "/pkg/storage/unified/apistore" - - "/pkg/storage/unified/resource" - "/pkg/util/xorm" + - "/scripts/go-workspace" + - "/scripts/modowners" schedule: interval: "daily" time: "02:00" timezone: Etc/UTC - open-pull-requests-limit: 10 + open-pull-requests-limit: 20 + # group some updates together for easier review + groups: + go.opentelemetry.io: + patterns: + - "go.opentelemetry.io/*" + k8s.io: + patterns: + - "k8s.io/*" + aws-sdk-go: + patterns: + - "github.com/aws/aws-sdk-go*" + - "github.com/aws/smithy-go" - package-ecosystem: "docker" + commit-message: + prefix: deps(docker) directories: - "/" - "/packaging/docker/custom" @@ -35,4 +68,4 @@ updates: interval: "daily" time: "02:00" timezone: Etc/UTC - open-pull-requests-limit: 10 + open-pull-requests-limit: 20 diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 37d44d74483..aa33961bf95 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -1,6 +1,9 @@ { extends: ["config:recommended"], enabledManagers: ["npm"], + ignorePresets: [ + "github>grafana/grafana-renovate-config//presets/labels", + ], ignoreDeps: [ // ignoring these until we can upgrade to react 19 // see epic here: https://github.com/grafana/grafana/issues/98813 diff --git a/.github/workflows/alerting-update-module.yml b/.github/workflows/alerting-update-module.yml index dc623c8b333..c126f67131a 100644 --- a/.github/workflows/alerting-update-module.yml +++ b/.github/workflows/alerting-update-module.yml @@ -148,7 +148,7 @@ jobs: echo "🔗 [View Pull Request]($PR_URL)" } >> "$GITHUB_STEP_SUMMARY" - name: Send Slack Message - uses: grafana/shared-workflows/actions/send-slack-message@send-slack-message/v2.0.3 + uses: grafana/shared-workflows/actions/send-slack-message@send-slack-message/v2.0.4 with: method: 'chat.postMessage' # send to alerting-reviews channel diff --git a/.github/workflows/core-plugins-build-and-release.yml b/.github/workflows/core-plugins-build-and-release.yml index 22836db5089..91c6f0485f6 100644 --- a/.github/workflows/core-plugins-build-and-release.yml +++ b/.github/workflows/core-plugins-build-and-release.yml @@ -58,7 +58,7 @@ jobs: PLUGINS_GRAFANA_API_KEY=core-plugins-build-and-release:PLUGINS_GRAFANA_API_KEY PLUGINS_GCOM_TOKEN=core-plugins-build-and-release:PLUGINS_GCOM_TOKEN - name: 'Authenticate to Google Cloud' - uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f' + uses: 'google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093' with: credentials_json: '${{ env.PLUGINS_GOOGLE_CREDENTIALS }}' - name: 'Set up Cloud SDK' diff --git a/.github/workflows/detect-breaking-changes-levitate.yml b/.github/workflows/detect-breaking-changes-levitate.yml index 82351d45785..a646c1983a2 100644 --- a/.github/workflows/detect-breaking-changes-levitate.yml +++ b/.github/workflows/detect-breaking-changes-levitate.yml @@ -157,7 +157,7 @@ jobs: run: unzip -j base_built_packages.zip -d ./base && rm base_built_packages.zip - id: 'auth' - uses: 'google-github-actions/auth@6fc4af4b145ae7821d527454aa9bd537d1f2dc5f' + uses: 'google-github-actions/auth@7c6bc770dae815cd3e89ee6cdf493a5fab2cc093' if: github.event.pull_request.head.repo.full_name == github.repository with: workload_identity_provider: projects/304398677251/locations/global/workloadIdentityPools/github/providers/github-provider @@ -230,7 +230,7 @@ jobs: name: levitate - name: Parsing levitate result - uses: actions/github-script@v7 + uses: actions/github-script@v8 id: levitate-run with: script: | @@ -241,7 +241,7 @@ jobs: # Check if label exists - name: Check if "levitate breaking change" label exists id: does-label-exist - uses: actions/github-script@v7 + uses: actions/github-script@v8 env: PR_NUMBER: ${{ github.event.pull_request.number }} with: @@ -334,7 +334,7 @@ jobs: # Add the label - name: Add "levitate breaking change" label if: steps.levitate-run.outputs.exit_code == 1 && steps.does-label-exist.outputs.result == 0 - uses: actions/github-script@v7 + uses: actions/github-script@v8 env: PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }} with: @@ -350,7 +350,7 @@ jobs: # Remove label (no more breaking changes) - name: Remove "levitate breaking change" label if: steps.levitate-run.outputs.exit_code == 0 && steps.does-label-exist.outputs.result == 1 - uses: actions/github-script@v7 + uses: actions/github-script@v8 env: PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }} with: @@ -368,7 +368,7 @@ jobs: # Related issue: https://github.com/renovatebot/renovate/issues/1908 - name: Add "grafana/plugins-platform-frontend" as a reviewer if: steps.levitate-run.outputs.exit_code == 1 - uses: actions/github-script@v7 + uses: actions/github-script@v8 env: PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }} with: @@ -385,7 +385,7 @@ jobs: # Remove reviewers (no more breaking changes) - name: Remove "grafana/plugins-platform-frontend" from the list of reviewers if: steps.levitate-run.outputs.exit_code == 0 - uses: actions/github-script@v7 + uses: actions/github-script@v8 env: PR_NUMBER: ${{ steps.levitate-run.outputs.pr_number }} with: diff --git a/.github/workflows/detect-plugin-extension-changes.yml b/.github/workflows/detect-plugin-extension-changes.yml index 12e21b159f1..e59a7c01a7c 100644 --- a/.github/workflows/detect-plugin-extension-changes.yml +++ b/.github/workflows/detect-plugin-extension-changes.yml @@ -36,7 +36,7 @@ jobs: - name: Check for plugin extension changes id: check-changes - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: script: | const { execSync } = require('child_process'); diff --git a/.github/workflows/go-lint.yml b/.github/workflows/go-lint.yml index cdce15360a4..87cfbcb81d4 100644 --- a/.github/workflows/go-lint.yml +++ b/.github/workflows/go-lint.yml @@ -66,7 +66,7 @@ jobs: with: go-version-file: ./go.mod - name: golangci-lint - uses: golangci/golangci-lint-action@1481404843c368bc19ca9406f87d6e0fc97bdcfd + uses: golangci/golangci-lint-action@4afd733a84b1f43292c63897423277bb7f4313a9 with: version: v2.5.0 args: | diff --git a/.github/workflows/pr-e2e-tests.yml b/.github/workflows/pr-e2e-tests.yml index 6ade5a9c787..63dd2952534 100644 --- a/.github/workflows/pr-e2e-tests.yml +++ b/.github/workflows/pr-e2e-tests.yml @@ -65,7 +65,7 @@ jobs: # If no cache hit, build Grafana - name: Build Grafana if: steps.cache.outputs.cache-hit != 'true' - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run @@ -230,7 +230,7 @@ jobs: - name: chmod +x run: chmod +x ./e2e-runner - name: Run E2E tests - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run @@ -302,7 +302,7 @@ jobs: with: name: grafana-tar-gz - name: Run E2E tests - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run @@ -365,7 +365,7 @@ jobs: name: grafana-tar-gz - name: Run E2E tests - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run @@ -484,14 +484,14 @@ jobs: name: grafana-tar-gz - name: Run PR a11y test if: github.event_name == 'pull_request' - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run args: go run ./pkg/build/a11y --package=grafana.tar.gz - name: Run non-PR a11y test if: github.event_name != 'pull_request' - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run diff --git a/.github/workflows/pr-patch-check.yml b/.github/workflows/pr-patch-check.yml index 5de7fcf89ed..52f75a05ff2 100644 --- a/.github/workflows/pr-patch-check.yml +++ b/.github/workflows/pr-patch-check.yml @@ -55,7 +55,7 @@ jobs: permissions: "{\"actions\": \"write\", \"workflows\": \"write\"}" repositories: "[\"security-patch-actions\"]" - name: "Dispatch job" - uses: actions/github-script@v7 + uses: actions/github-script@v8 with: github-token: ${{ steps.generate_token.outputs.token }} script: | diff --git a/.github/workflows/release-build.yml b/.github/workflows/release-build.yml index 650ba6a67c1..ded468b0110 100644 --- a/.github/workflows/release-build.yml +++ b/.github/workflows/release-build.yml @@ -96,7 +96,7 @@ jobs: private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }} repositories: '["grafana-enterprise"]' permissions: '{"actions": "write"}' - - uses: actions/github-script@v7 + - uses: actions/github-script@v8 env: REF: ${{ github.ref_name }} VERSION: ${{ needs.setup.outputs.version }} diff --git a/.github/workflows/release-pr.yml b/.github/workflows/release-pr.yml index 2190e2640b4..e933f7e814d 100644 --- a/.github/workflows/release-pr.yml +++ b/.github/workflows/release-pr.yml @@ -196,7 +196,7 @@ jobs: run: git add CHANGELOG.md && git commit --allow-empty -m "Update changelog" CHANGELOG.md - name: Bump versions if: ${{ inputs.bump == true || inputs.bump == 'true' }} - uses: dagger/dagger-for-github@e47aba410ef9bb9ed81a4d2a97df31061e5e842e + uses: dagger/dagger-for-github@d913e70051faf3b907d4dd96ef1161083c88c644 with: version: 0.18.8 verb: run diff --git a/.github/workflows/sync-mirror-event.yml b/.github/workflows/sync-mirror-event.yml index 4a073c9b2b3..64d5c49a96d 100644 --- a/.github/workflows/sync-mirror-event.yml +++ b/.github/workflows/sync-mirror-event.yml @@ -41,7 +41,7 @@ jobs: app_id: ${{ vars.DELIVERY_BOT_APP_ID }} private_key: ${{ env.GRAFANA_DELIVERY_BOT_APP_PEM }} - - uses: actions/github-script@v7 + - uses: actions/github-script@v8 if: github.repository == 'grafana/grafana' with: github-token: ${{ steps.generate_token.outputs.token }} diff --git a/.github/workflows/trufflehog.yml b/.github/workflows/trufflehog.yml index d11186c5343..b045df5a144 100644 --- a/.github/workflows/trufflehog.yml +++ b/.github/workflows/trufflehog.yml @@ -31,6 +31,6 @@ jobs: persist-credentials: false fetch-depth: ${{ steps.fetch_depth.outputs.fetch_depth }} - name: Trufflehog - uses: trufflesecurity/trufflehog@eafb8c5f6a06175141c27f17bcc17941853d0047 # v3.90.0 + uses: trufflesecurity/trufflehog@e88e7d019eb84ca64f6b768c82eb6bf1a6271401 # v3.90.9 with: extra_args: --results=verified diff --git a/.prettierignore b/.prettierignore index 726f8613700..7d9575558d9 100644 --- a/.prettierignore +++ b/.prettierignore @@ -26,6 +26,7 @@ vendor # Auto-generated theme files theme.light.generated.json theme.dark.generated.json +public/app/features/theme-playground/schema.generated.json # Generated Swagger API specs public/api-merged.json diff --git a/Dockerfile b/Dockerfile index 77c825591f4..3fdc7f8c40c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -14,7 +14,7 @@ ARG JS_SRC=js-builder # Dependabot cannot update dependencies listed in ARGs # By using FROM instructions we can delegate dependency updates to dependabot -FROM alpine:3.21.3 AS alpine-base +FROM alpine:3.22.2 AS alpine-base FROM ubuntu:22.04 AS ubuntu-base FROM golang:1.25.3-alpine AS go-builder-base FROM --platform=${JS_PLATFORM} node:22-alpine AS js-builder-base diff --git a/apps/alerting/alertenrichment/go.mod b/apps/alerting/alertenrichment/go.mod index 99e4446e23b..60b6d949e5a 100644 --- a/apps/alerting/alertenrichment/go.mod +++ b/apps/alerting/alertenrichment/go.mod @@ -27,7 +27,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/net v0.45.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/apps/alerting/alertenrichment/go.sum b/apps/alerting/alertenrichment/go.sum index 96dc13e50a2..6e0e8323e5a 100644 --- a/apps/alerting/alertenrichment/go.sum +++ b/apps/alerting/alertenrichment/go.sum @@ -81,8 +81,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/apps/alerting/notifications/go.mod b/apps/alerting/notifications/go.mod index 6907a28720a..ed8528aa92f 100644 --- a/apps/alerting/notifications/go.mod +++ b/apps/alerting/notifications/go.mod @@ -88,7 +88,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/alerting/notifications/go.sum b/apps/alerting/notifications/go.sum index b613313ed23..2df3420d2b7 100644 --- a/apps/alerting/notifications/go.sum +++ b/apps/alerting/notifications/go.sum @@ -256,8 +256,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/alerting/rules/go.mod b/apps/alerting/rules/go.mod index c51dbdeeef3..3e7a20b4e6c 100644 --- a/apps/alerting/rules/go.mod +++ b/apps/alerting/rules/go.mod @@ -71,7 +71,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/alerting/rules/go.sum b/apps/alerting/rules/go.sum index ff48e3193e0..f50f1d3b2ce 100644 --- a/apps/alerting/rules/go.sum +++ b/apps/alerting/rules/go.sum @@ -179,8 +179,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/correlations/go.mod b/apps/correlations/go.mod index 212391d0468..7f6142dc80e 100644 --- a/apps/correlations/go.mod +++ b/apps/correlations/go.mod @@ -71,7 +71,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/correlations/go.sum b/apps/correlations/go.sum index ff48e3193e0..f50f1d3b2ce 100644 --- a/apps/correlations/go.sum +++ b/apps/correlations/go.sum @@ -179,8 +179,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/dashboard/go.mod b/apps/dashboard/go.mod index 69ce9f376f8..66ffbfb21ed 100644 --- a/apps/dashboard/go.mod +++ b/apps/dashboard/go.mod @@ -54,7 +54,7 @@ require ( github.com/grafana/authlib v0.0.0-20250930082137-a40e2c2b094f // indirect github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4 // indirect github.com/grafana/otel-profiling-go v0.5.1 // indirect - github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 // indirect github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 // indirect github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 // indirect @@ -127,7 +127,7 @@ require ( golang.org/x/sys v0.36.0 // indirect golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect golang.org/x/tools v0.37.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect diff --git a/apps/dashboard/go.sum b/apps/dashboard/go.sum index 9f18f73b002..e944b178d35 100644 --- a/apps/dashboard/go.sum +++ b/apps/dashboard/go.sum @@ -111,8 +111,8 @@ github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e h github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e/go.mod h1:IA4SOwun8QyST9c5UNs/fN37XL6boXXDvRYFcFwbipg= github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= -github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= -github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0/go.mod h1:hM2alZsMUni80N33RBe6J0e423LB+odMj7d3EMP9l20= github.com/grpc-ecosystem/go-grpc-middleware/v2 v2.3.2 h1:sGm2vDRFUrQJO/Veii4h4zG2vvqG6uWNkBHSTqXOZk0= @@ -362,8 +362,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/dashboard/pkg/migration/conversion/conversion_test.go b/apps/dashboard/pkg/migration/conversion/conversion_test.go index 9ee40f17ad7..2ea168e9522 100644 --- a/apps/dashboard/pkg/migration/conversion/conversion_test.go +++ b/apps/dashboard/pkg/migration/conversion/conversion_test.go @@ -305,23 +305,6 @@ func TestConversionMetrics(t *testing.T) { expectedSourceSchema: "v2alpha1", expectedTargetSchema: "v2beta1", }, - { - name: "v0 to v1 conversion with minimum version error (succeeds but marks failed)", - source: &dashv0.Dashboard{ - ObjectMeta: metav1.ObjectMeta{UID: "test-uid-4"}, - Spec: common.Unstructured{Object: map[string]any{ - "title": "old dashboard", - "schemaVersion": 5, // Below minimum version (13) - }}, - }, - target: &dashv1.Dashboard{}, - expectAPISuccess: true, // Conversion succeeds but status indicates failure - expectMetricsSuccess: false, - expectedSourceAPI: dashv0.APIVERSION, - expectedTargetAPI: dashv1.APIVERSION, - expectedSourceSchema: "5", - expectedTargetSchema: fmt.Sprintf("%d", 41), // LATEST_VERSION - }, } for _, tt := range tests { diff --git a/apps/dashboard/pkg/migration/frontend_defaults.go b/apps/dashboard/pkg/migration/frontend_defaults.go index 517c1eccc25..c376be6f47f 100644 --- a/apps/dashboard/pkg/migration/frontend_defaults.go +++ b/apps/dashboard/pkg/migration/frontend_defaults.go @@ -66,7 +66,6 @@ func applyFrontendDefaults(dashboard map[string]interface{}) { sortPanelsByGridPos(dashboard) // Built-in components - addBuiltInAnnotationQuery(dashboard) initMeta(dashboard) // Variable cleanup @@ -947,32 +946,13 @@ func applyPanelAutoMigration(panel map[string]interface{}) { var newType string // Graph needs special logic as it can be migrated to multiple panels - if panelType == "graph" { + // Including graphite which was previously migrated to graph in the schema version 2 migration in DashboardMigrator.ts + // but this was a bug because in there graphite was set to graph, but since those migrations run + // after PanelModel.restoreModel where autoMigrateFrom is set, this caused the graph migration to be skipped. + // And this resulted in a dashboard with invalid panels. + if panelType == "graph" || panelType == "graphite" { // Check xaxis mode for special cases - if xaxis, ok := panel["xaxis"].(map[string]interface{}); ok { - if mode, ok := xaxis["mode"].(string); ok { - switch mode { - case "series": - // Check legend values for bargauge - if legend, ok := panel["legend"].(map[string]interface{}); ok { - if values, ok := legend["values"].(bool); ok && values { - newType = "bargauge" - } else { - newType = "barchart" - } - } else { - newType = "barchart" - } - case "histogram": - newType = "histogram" - } - } - } - - // Default graph migration to timeseries - if newType == "" { - newType = "timeseries" - } + newType = getGraphAutoMigration(panel) } else { // Check autoMigrateAngular mapping autoMigrateAngular := map[string]string{ @@ -996,6 +976,36 @@ func applyPanelAutoMigration(panel map[string]interface{}) { } } +func getGraphAutoMigration(panel map[string]interface{}) string { + newType := "" + if xaxis, ok := panel["xaxis"].(map[string]interface{}); ok { + if mode, ok := xaxis["mode"].(string); ok { + switch mode { + case "series": + // Check legend values for bargauge + if legend, ok := panel["legend"].(map[string]interface{}); ok { + if values, ok := legend["values"].(bool); ok && values { + newType = "bargauge" + } else { + newType = "barchart" + } + } else { + newType = "barchart" + } + case "histogram": + newType = "histogram" + } + } + } + + // Default graph migration to timeseries + if newType == "" { + newType = "timeseries" + } + + return newType +} + // removeNullValuesRecursively removes null values from nested objects and arrays // This matches the frontend's JSON.stringify/parse behavior func removeNullValuesRecursively(data interface{}) { @@ -1051,9 +1061,9 @@ func cleanupDashboardDefaults(dashboard map[string]interface{}) { // Remove transient properties that frontend filters out during getSaveModelClone() // These properties are lost during frontend's property copying loop in getSaveModelCloneOld() - delete(dashboard, "preload") // Transient dashboard loading state delete(dashboard, "iteration") // Template variable iteration timestamp - delete(dashboard, "nav") + delete(dashboard, "nav") // Removed after V7 migration + delete(dashboard, "pulldowns") // Removed after V6 migration - frontend doesn't have this property } // cleanupFieldConfigDefaults removes properties that frontend considers as defaults and omits diff --git a/apps/dashboard/pkg/migration/migrate.go b/apps/dashboard/pkg/migration/migrate.go index 73fdf460416..08cba231fd3 100644 --- a/apps/dashboard/pkg/migration/migrate.go +++ b/apps/dashboard/pkg/migration/migrate.go @@ -126,7 +126,11 @@ func (m *migrator) migrate(ctx context.Context, dash map[string]interface{}, tar } } - // 6. Clean up the dashboard to match frontend getSaveModel behavior + // 6. Add built-in annotation query after all migrations are complete + // This matches the frontend DashboardModel constructor behavior + addBuiltInAnnotationQuery(dash) + + // 7. Clean up the dashboard to match frontend getSaveModel behavior // This removes properties that shouldn't be persisted and filters out default values cleanupDashboardForSave(dash) diff --git a/apps/dashboard/pkg/migration/schemaversion/migrations.go b/apps/dashboard/pkg/migration/schemaversion/migrations.go index 97921173fbf..a278c2e685e 100644 --- a/apps/dashboard/pkg/migration/schemaversion/migrations.go +++ b/apps/dashboard/pkg/migration/schemaversion/migrations.go @@ -7,7 +7,7 @@ import ( ) const ( - MIN_VERSION = 6 + MIN_VERSION = 0 LATEST_VERSION = 42 ) @@ -35,6 +35,11 @@ type PanelPluginInfo struct { func GetMigrations(dsInfoProvider DataSourceInfoProvider) map[int]SchemaVersionMigrationFunc { return map[int]SchemaVersionMigrationFunc{ + 2: V2, + 3: V3, + 4: V4, + 5: V5, + 6: V6, 7: V7, 8: V8, 9: V9, diff --git a/apps/dashboard/pkg/migration/schemaversion/v16.go b/apps/dashboard/pkg/migration/schemaversion/v16.go index da6db1dcc1a..343f496f6dc 100644 --- a/apps/dashboard/pkg/migration/schemaversion/v16.go +++ b/apps/dashboard/pkg/migration/schemaversion/v16.go @@ -271,19 +271,30 @@ func (r *rowArea) getPanelPosition(panelHeight int, panelWidth int) map[string]i func getMaxPanelID(rows []interface{}) int { maxID := 0 + hasValidID := false + for _, rowInterface := range rows { if row, ok := rowInterface.(map[string]interface{}); ok { if panels, ok := row["panels"].([]interface{}); ok { for _, panelInterface := range panels { if panel, ok := panelInterface.(map[string]interface{}); ok { - if id := GetIntValue(panel, "id", 0); id > maxID { - maxID = id + if id := GetIntValue(panel, "id", 0); id > 0 { + hasValidID = true + if id > maxID { + maxID = id + } } } } } } } + + // If no valid IDs found, return 0 (matches frontend behavior) + if !hasValidID { + return 0 + } + return maxID } diff --git a/apps/dashboard/pkg/migration/schemaversion/v2.go b/apps/dashboard/pkg/migration/schemaversion/v2.go new file mode 100644 index 00000000000..4e9636ad808 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v2.go @@ -0,0 +1,71 @@ +package schemaversion + +import "context" + +// V2 migrates dashboard from schema version 0 or 1 to 2. +// This migration handles the legacy services.filter structure. +// It matches the frontend DashboardMigrator.ts logic for oldVersion < 2 && finalTargetVersion >= 2. +// +// Key migrations: +// 1. Services filter migration: old.services.filter.time -> dashboard.time +// 2. Services filter migration: old.services.filter.list -> dashboard.templating.list +// +// Example before migration: +// +// { +// "schemaVersion": 1, +// "services": { +// "filter": { +// "time": {"from": "now-1h", "to": "now"}, +// "list": [{"name": "var1", "type": "query"}] +// } +// } +// } +// +// Example after migration: +// +// { +// "schemaVersion": 2, +// "time": {"from": "now-1h", "to": "now"}, +// "templating": { +// "list": [{"name": "var1", "type": "query"}] +// } +// } +func V2(_ context.Context, dashboard map[string]interface{}) error { + dashboard["schemaVersion"] = 2 + + // Migrate services.filter structure + migrateServicesFilter(dashboard) + + return nil +} + +// migrateServicesFilter migrates the legacy services.filter structure +func migrateServicesFilter(dashboard map[string]interface{}) { + services, ok := dashboard["services"].(map[string]interface{}) + if !ok { + return + } + + filter, ok := services["filter"].(map[string]interface{}) + if !ok { + return + } + + // Migrate time property + if time, ok := filter["time"]; ok { + dashboard["time"] = time + } + + // Migrate templating list + if list, ok := filter["list"]; ok { + if _, exists := dashboard["templating"]; !exists { + dashboard["templating"] = map[string]interface{}{} + } + templating := dashboard["templating"].(map[string]interface{}) + templating["list"] = list + } + + // Remove the services property after migration + delete(dashboard, "services") +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v2_test.go b/apps/dashboard/pkg/migration/schemaversion/v2_test.go new file mode 100644 index 00000000000..69ebb5e0b22 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v2_test.go @@ -0,0 +1,216 @@ +package schemaversion_test + +import ( + "testing" + + "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion" +) + +func TestV2(t *testing.T) { + tests := []migrationTestCase{ + { + name: "services filter migration moves time and templating list", + input: map[string]interface{}{ + "title": "V2 Services Filter Migration Test", + "schemaVersion": 1, + "services": map[string]interface{}{ + "filter": map[string]interface{}{ + "time": map[string]interface{}{ + "from": "now-1h", + "to": "now", + }, + "list": []interface{}{ + map[string]interface{}{ + "name": "var1", + "type": "query", + }, + }, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V2 Services Filter Migration Test", + "schemaVersion": 2, + "time": map[string]interface{}{ + "from": "now-1h", + "to": "now", + }, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "var1", + "type": "query", + }, + }, + }, + }, + }, + { + name: "comprehensive services filter migration", + input: map[string]interface{}{ + "title": "V2 Comprehensive Services Migration Test", + "schemaVersion": 1, + "services": map[string]interface{}{ + "filter": map[string]interface{}{ + "time": map[string]interface{}{ + "from": "now-6h", + "to": "now", + }, + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + }, + }, + }, + }, + "panels": []interface{}{ + map[string]interface{}{ + "id": 1, + "type": "graphite", + "title": "CPU Usage", + }, + }, + }, + expected: map[string]interface{}{ + "title": "V2 Comprehensive Services Migration Test", + "schemaVersion": 2, + "time": map[string]interface{}{ + "from": "now-6h", + "to": "now", + }, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + }, + }, + }, + "panels": []interface{}{ + map[string]interface{}{ + "id": 1, + "type": "graphite", // Panel types are not migrated by V2 anymore + "title": "CPU Usage", + }, + }, + }, + }, + { + name: "dashboard with no services or panels", + input: map[string]interface{}{ + "title": "V2 Minimal Migration Test", + "schemaVersion": 1, + }, + expected: map[string]interface{}{ + "title": "V2 Minimal Migration Test", + "schemaVersion": 2, + }, + }, + { + name: "services filter with only time (no list)", + input: map[string]interface{}{ + "title": "V2 Services Time Only Test", + "schemaVersion": 1, + "services": map[string]interface{}{ + "filter": map[string]interface{}{ + "time": map[string]interface{}{ + "from": "now-2h", + "to": "now", + }, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V2 Services Time Only Test", + "schemaVersion": 2, + "time": map[string]interface{}{ + "from": "now-2h", + "to": "now", + }, + }, + }, + { + name: "services filter with only list (no time)", + input: map[string]interface{}{ + "title": "V2 Services List Only Test", + "schemaVersion": 1, + "services": map[string]interface{}{ + "filter": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "env", + "type": "custom", + }, + }, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V2 Services List Only Test", + "schemaVersion": 2, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "env", + "type": "custom", + }, + }, + }, + }, + }, + { + name: "panels remain unchanged when no services filter", + input: map[string]interface{}{ + "title": "V2 Panels Unchanged Test", + "schemaVersion": 1, + "panels": []interface{}{ + map[string]interface{}{ + "id": 1, + "type": "graphite", + "legend": true, + "y_format": "short", + "y2_format": "bytes", + "grid": map[string]interface{}{ + "min": 0, + "max": 100, + }, + }, + map[string]interface{}{ + "id": 2, + "type": "graph", + "legend": map[string]interface{}{ + "show": false, + }, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V2 Panels Unchanged Test", + "schemaVersion": 2, + "panels": []interface{}{ + map[string]interface{}{ + "id": 1, + "type": "graphite", // Panel migrations handled by auto-migration + "legend": true, + "y_format": "short", + "y2_format": "bytes", + "grid": map[string]interface{}{ + "min": 0, + "max": 100, + }, + }, + map[string]interface{}{ + "id": 2, + "type": "graph", + "legend": map[string]interface{}{ + "show": false, + }, + }, + }, + }, + }, + } + + runMigrationTests(t, tests, schemaversion.V2) +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v3.go b/apps/dashboard/pkg/migration/schemaversion/v3.go new file mode 100644 index 00000000000..54163d2b685 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v3.go @@ -0,0 +1,9 @@ +package schemaversion + +import "context" + +// V3 is a no-op migration +func V3(_ context.Context, dashboard map[string]interface{}) error { + dashboard["schemaVersion"] = 3 + return nil +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v3_test.go b/apps/dashboard/pkg/migration/schemaversion/v3_test.go new file mode 100644 index 00000000000..cbd0b4e43ce --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v3_test.go @@ -0,0 +1,38 @@ +package schemaversion_test + +import ( + "testing" + + "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion" +) + +func TestV3(t *testing.T) { + tests := []migrationTestCase{ + { + name: "v3 no-op migration, updates schema version only", + input: map[string]interface{}{ + "title": "V3 No-Op Migration Test Dashboard", + "schemaVersion": 2, + "panels": []interface{}{ + map[string]interface{}{ + "type": "graph", + "title": "Panel remains unchanged", + "id": 1, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V3 No-Op Migration Test Dashboard", + "schemaVersion": 3, + "panels": []interface{}{ + map[string]interface{}{ + "type": "graph", + "title": "Panel remains unchanged", + "id": 1, + }, + }, + }, + }, + } + runMigrationTests(t, tests, schemaversion.V3) +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v4.go b/apps/dashboard/pkg/migration/schemaversion/v4.go new file mode 100644 index 00000000000..02346ed8c25 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v4.go @@ -0,0 +1,9 @@ +package schemaversion + +import "context" + +// V4 is a no-op migration +func V4(_ context.Context, dashboard map[string]interface{}) error { + dashboard["schemaVersion"] = 4 + return nil +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v4_test.go b/apps/dashboard/pkg/migration/schemaversion/v4_test.go new file mode 100644 index 00000000000..a4f9f856a72 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v4_test.go @@ -0,0 +1,38 @@ +package schemaversion_test + +import ( + "testing" + + "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion" +) + +func TestV4(t *testing.T) { + tests := []migrationTestCase{ + { + name: "v4 no-op migration, updates schema version only", + input: map[string]interface{}{ + "title": "V4 No-Op Migration Test Dashboard", + "schemaVersion": 3, + "panels": []interface{}{ + map[string]interface{}{ + "type": "graph", + "title": "Panel remains unchanged", + "id": 1, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V4 No-Op Migration Test Dashboard", + "schemaVersion": 4, + "panels": []interface{}{ + map[string]interface{}{ + "type": "graph", + "title": "Panel remains unchanged", + "id": 1, + }, + }, + }, + }, + } + runMigrationTests(t, tests, schemaversion.V4) +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v5.go b/apps/dashboard/pkg/migration/schemaversion/v5.go new file mode 100644 index 00000000000..976aa5333ab --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v5.go @@ -0,0 +1,11 @@ +package schemaversion + +import ( + "context" +) + +// V5 is a no-op migration +func V5(_ context.Context, dashboard map[string]interface{}) error { + dashboard["schemaVersion"] = 5 + return nil +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v5_test.go b/apps/dashboard/pkg/migration/schemaversion/v5_test.go new file mode 100644 index 00000000000..fe0f137667a --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v5_test.go @@ -0,0 +1,38 @@ +package schemaversion_test + +import ( + "testing" + + "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion" +) + +func TestV5(t *testing.T) { + tests := []migrationTestCase{ + { + name: "v5 no-op migration, updates schema version only", + input: map[string]interface{}{ + "title": "V5 No-Op Migration Test Dashboard", + "schemaVersion": 4, + "panels": []interface{}{ + map[string]interface{}{ + "type": "graph", + "title": "Panel remains unchanged", + "id": 1, + }, + }, + }, + expected: map[string]interface{}{ + "title": "V5 No-Op Migration Test Dashboard", + "schemaVersion": 5, + "panels": []interface{}{ + map[string]interface{}{ + "type": "graph", + "title": "Panel remains unchanged", + "id": 1, + }, + }, + }, + }, + } + runMigrationTests(t, tests, schemaversion.V5) +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v6.go b/apps/dashboard/pkg/migration/schemaversion/v6.go new file mode 100644 index 00000000000..f5e8af73ba8 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v6.go @@ -0,0 +1,100 @@ +package schemaversion + +import "context" + +// V6 migration handles the pulldowns to annotations conversion and template variable updates. +// This migration moves annotations from the legacy pulldowns array to the new annotations structure +// and updates template variables to use the new schema format. +// +// Background: +// In earlier versions, dashboards used a "pulldowns" property array to store various UI elements +// including annotations. This migration extracts annotations from pulldowns and creates the new +// annotations structure. It also updates template variables to ensure proper datasource handling +// and type normalization. +// +// Example before migration: +// { +// "schemaVersion": 5, +// "pulldowns": [ +// { "type": "filtering", "enable": true }, +// { "type": "annotations", "enable": true, "annotations": [{"name": "old"}] } +// ], +// "templating": { +// "list": [ +// { "name": "server", "type": "filter" }, +// { "name": "metric", "datasource": undefined, "allFormat": undefined } +// ] +// } +// } +// +// Example after migration: +// { +// "schemaVersion": 6, +// "annotations": { +// "list": [{"name": "old"}] +// }, +// "templating": { +// "list": [ +// { "name": "server", "type": "query", "datasource": null }, +// { "name": "metric", "type": "query", "datasource": null } +// ] +// } +// } + +func V6(_ context.Context, dashboard map[string]interface{}) error { + dashboard["schemaVersion"] = 6 + + // Move drop-downs to new schema (matches frontend DashboardMigrator logic) + // Find annotations in pulldowns array: equivalent to find(old.pulldowns, { type: 'annotations' }) + if pulldowns, ok := dashboard["pulldowns"].([]interface{}); ok { + for _, pulldownInterface := range pulldowns { + if pulldown, ok := pulldownInterface.(map[string]interface{}); ok { + if pulldownType, exists := pulldown["type"]; exists && pulldownType == "annotations" { + // Found annotations pulldown, extract annotations + if annotations, hasAnnotations := pulldown["annotations"]; hasAnnotations { + dashboard["annotations"] = map[string]interface{}{ + "list": annotations, + } + } else { + // If no annotations property, create empty list + dashboard["annotations"] = map[string]interface{}{ + "list": []interface{}{}, + } + } + break // Found what we're looking for, no need to continue + } + } + } + } + + // Update template variables + if templating, ok := dashboard["templating"].(map[string]interface{}); ok { + if list, ok := templating["list"].([]interface{}); ok { + for _, variableInterface := range list { + if variable, ok := variableInterface.(map[string]interface{}); ok { + // If datasource is undefined/missing, set to null + if _, exists := variable["datasource"]; !exists { + variable["datasource"] = nil + } + + // Convert 'filter' type to 'query' + if varType, exists := variable["type"]; exists && varType == "filter" { + variable["type"] = "query" + } + + // If type is undefined/missing, set to 'query' + if _, exists := variable["type"]; !exists { + variable["type"] = "query" + } + + // Remove allFormat if it's undefined + if allFormat, exists := variable["allFormat"]; exists && allFormat == nil { + delete(variable, "allFormat") + } + } + } + } + } + + return nil +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v6_test.go b/apps/dashboard/pkg/migration/schemaversion/v6_test.go new file mode 100644 index 00000000000..6668c8392c6 --- /dev/null +++ b/apps/dashboard/pkg/migration/schemaversion/v6_test.go @@ -0,0 +1,541 @@ +package schemaversion_test + +import ( + "testing" + + "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion" +) + +func TestV6Migration(t *testing.T) { + testCases := []migrationTestCase{ + { + name: "pulldowns to annotations conversion with existing annotations", + input: map[string]interface{}{ + "schemaVersion": 5, + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "filtering", + "enable": true, + }, + map[string]interface{}{ + "type": "annotations", + "enable": true, + "annotations": []interface{}{ + map[string]interface{}{ + "name": "old annotation", + "datasource": "prometheus", + "enable": true, + }, + }, + }, + }, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "filter", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "filtering", + "enable": true, + }, + map[string]interface{}{ + "type": "annotations", + "enable": true, + "annotations": []interface{}{ + map[string]interface{}{ + "name": "old annotation", + "datasource": "prometheus", + "enable": true, + }, + }, + }, + }, + "annotations": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "old annotation", + "datasource": "prometheus", + "enable": true, + }, + }, + }, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": nil, + }, + }, + }, + }, + }, + { + name: "pulldowns to annotations conversion with empty annotations", + input: map[string]interface{}{ + "schemaVersion": 5, + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "annotations", + "enable": true, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "annotations", + "enable": true, + }, + }, + "annotations": map[string]interface{}{ + "list": []interface{}{}, + }, + }, + }, + { + name: "no annotations pulldown found", + input: map[string]interface{}{ + "schemaVersion": 5, + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "filtering", + "enable": true, + }, + map[string]interface{}{ + "type": "other", + "enable": false, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "filtering", + "enable": true, + }, + map[string]interface{}{ + "type": "other", + "enable": false, + }, + }, + }, + }, + { + name: "no pulldowns property", + input: map[string]interface{}{ + "schemaVersion": 5, + "title": "Test Dashboard", + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "title": "Test Dashboard", + }, + }, + { + name: "empty pulldowns array", + input: map[string]interface{}{ + "schemaVersion": 5, + "pulldowns": []interface{}{}, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "pulldowns": []interface{}{}, + }, + }, + { + name: "template variables migration - filter to query type", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "filter", + }, + map[string]interface{}{ + "name": "metric", + "type": "query", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": nil, + }, + map[string]interface{}{ + "name": "metric", + "type": "query", + "datasource": nil, + }, + }, + }, + }, + }, + { + name: "template variables migration - missing type becomes query", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": nil, + }, + }, + }, + }, + }, + { + name: "template variables migration - existing datasource preserved", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": "prometheus", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": "prometheus", + }, + }, + }, + }, + }, + { + name: "template variables migration - allFormat removal", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "allFormat": nil, + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": nil, + }, + }, + }, + }, + }, + { + name: "template variables migration - allFormat with value preserved", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "allFormat": "glob", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "server", + "type": "query", + "datasource": nil, + "allFormat": "glob", + }, + }, + }, + }, + }, + { + name: "no templating property", + input: map[string]interface{}{ + "schemaVersion": 5, + "title": "Test Dashboard", + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "title": "Test Dashboard", + }, + }, + { + name: "empty templating list", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{}, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{}, + }, + }, + }, + { + name: "complex dashboard with both pulldowns and templating", + input: map[string]interface{}{ + "schemaVersion": 5, + "title": "Complex Dashboard", + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "filtering", + "enable": true, + }, + map[string]interface{}{ + "type": "annotations", + "enable": true, + "annotations": []interface{}{ + map[string]interface{}{ + "name": "deployment", + "datasource": "prometheus", + "enable": true, + "iconColor": "red", + }, + map[string]interface{}{ + "name": "alerts", + "datasource": "loki", + "enable": false, + }, + }, + }, + }, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "environment", + "type": "filter", + "allFormat": nil, + }, + map[string]interface{}{ + "name": "service", + "datasource": "prometheus", + "allFormat": "glob", + }, + map[string]interface{}{ + "name": "region", + "type": "custom", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "title": "Complex Dashboard", + "pulldowns": []interface{}{ + map[string]interface{}{ + "type": "filtering", + "enable": true, + }, + map[string]interface{}{ + "type": "annotations", + "enable": true, + "annotations": []interface{}{ + map[string]interface{}{ + "name": "deployment", + "datasource": "prometheus", + "enable": true, + "iconColor": "red", + }, + map[string]interface{}{ + "name": "alerts", + "datasource": "loki", + "enable": false, + }, + }, + }, + }, + "annotations": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "deployment", + "datasource": "prometheus", + "enable": true, + "iconColor": "red", + }, + map[string]interface{}{ + "name": "alerts", + "datasource": "loki", + "enable": false, + }, + }, + }, + "templating": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "environment", + "type": "query", + "datasource": nil, + }, + map[string]interface{}{ + "name": "service", + "type": "query", + "datasource": "prometheus", + "allFormat": "glob", + }, + map[string]interface{}{ + "name": "region", + "type": "custom", + "datasource": nil, + }, + }, + }, + }, + }, + { + name: "invalid pulldowns structure", + input: map[string]interface{}{ + "schemaVersion": 5, + "pulldowns": "invalid_structure", + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "pulldowns": "invalid_structure", + }, + }, + { + name: "invalid templating structure", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": "invalid_structure", + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": "invalid_structure", + }, + }, + { + name: "invalid templating list structure", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": "invalid_list", + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": "invalid_list", + }, + }, + }, + { + name: "pulldown item with invalid structure", + input: map[string]interface{}{ + "schemaVersion": 5, + "pulldowns": []interface{}{ + "invalid_pulldown", + map[string]interface{}{ + "type": "annotations", + "enable": true, + "annotations": []interface{}{ + map[string]interface{}{ + "name": "valid annotation", + }, + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "pulldowns": []interface{}{ + "invalid_pulldown", + map[string]interface{}{ + "type": "annotations", + "enable": true, + "annotations": []interface{}{ + map[string]interface{}{ + "name": "valid annotation", + }, + }, + }, + }, + "annotations": map[string]interface{}{ + "list": []interface{}{ + map[string]interface{}{ + "name": "valid annotation", + }, + }, + }, + }, + }, + { + name: "template variable with invalid structure", + input: map[string]interface{}{ + "schemaVersion": 5, + "templating": map[string]interface{}{ + "list": []interface{}{ + "invalid_variable", + map[string]interface{}{ + "name": "valid_variable", + "type": "filter", + }, + }, + }, + }, + expected: map[string]interface{}{ + "schemaVersion": 6, + "templating": map[string]interface{}{ + "list": []interface{}{ + "invalid_variable", + map[string]interface{}{ + "name": "valid_variable", + "type": "query", + "datasource": nil, + }, + }, + }, + }, + }, + } + + runMigrationTests(t, testCases, schemaversion.V6) +} diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/datasource-testdata/demo1.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/datasource-testdata/demo1.v42.json index c8986249791..323bac1d906 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/datasource-testdata/demo1.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/datasource-testdata/demo1.v42.json @@ -1293,6 +1293,7 @@ "type": "timeseries" } ], + "preload": false, "refresh": false, "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-canvas/canvas-connection-examples.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-canvas/canvas-connection-examples.v42.json index d9cf29cad55..99cb1d0b28e 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-canvas/canvas-connection-examples.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-canvas/canvas-connection-examples.v42.json @@ -3941,6 +3941,7 @@ "type": "canvas" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_footer.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_footer.v42.json index 13c13c8bccd..21bbf7b4d39 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_footer.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_footer.v42.json @@ -1537,6 +1537,7 @@ "type": "table" } ], + "preload": false, "schemaVersion": 42, "tags": [], "templating": { diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_kitchen_sink.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_kitchen_sink.v42.json index 501fcdef0d6..515ab48b7bf 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_kitchen_sink.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_kitchen_sink.v42.json @@ -1848,6 +1848,7 @@ "type": "table" } ], + "preload": false, "schemaVersion": 42, "tags": [], "templating": { diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_markdown.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_markdown.v42.json index 3cd280f3c55..9ed4d3f873b 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_markdown.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_markdown.v42.json @@ -107,6 +107,7 @@ "type": "table" } ], + "preload": false, "schemaVersion": 42, "tags": [], "templating": { diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_sparkline_cell.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_sparkline_cell.v42.json index 11b54f3f3a5..3c8310630d7 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_sparkline_cell.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_sparkline_cell.v42.json @@ -576,6 +576,7 @@ "type": "table" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [], diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_tests_new.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_tests_new.v42.json index 9a7ac8fcfc9..b00ef6aa5ab 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_tests_new.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_tests_new.v42.json @@ -982,6 +982,7 @@ "type": "table" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_v12_2_migrations.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_v12_2_migrations.v42.json index 7160b7d4af2..5054b2e1325 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_v12_2_migrations.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-table/table_v12_2_migrations.v42.json @@ -2172,6 +2172,7 @@ "type": "table" } ], + "preload": false, "schemaVersion": 42, "tags": [], "templating": { diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeline/timeline-thresholds-mappings.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeline/timeline-thresholds-mappings.v42.json index f1d9ec747cd..c5102363f3f 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeline/timeline-thresholds-mappings.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeline/timeline-thresholds-mappings.v42.json @@ -1071,6 +1071,7 @@ "type": "state-timeline" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeseries/timeseries-nulls.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeseries/timeseries-nulls.v42.json index a75a3d47ee4..1e8a8b30326 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeseries/timeseries-nulls.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-timeseries/timeseries-nulls.v42.json @@ -3409,6 +3409,7 @@ "type": "state-timeline" } ], + "preload": false, "refresh": false, "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-trend/trend_example.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-trend/trend_example.v42.json index 21c283d5596..212565adbca 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-trend/trend_example.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-trend/trend_example.v42.json @@ -196,6 +196,7 @@ "type": "trend" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-xychart/xychart-demo.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-xychart/xychart-demo.v42.json index 2c9d0b026b4..3a6f7e88133 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-xychart/xychart-demo.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/panel-xychart/xychart-demo.v42.json @@ -1433,6 +1433,7 @@ "type": "xychart" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/scenarios/mostly-blank-dashboard.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/scenarios/mostly-blank-dashboard.v42.json index b264fc91cb9..7902e41bb2e 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/scenarios/mostly-blank-dashboard.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/scenarios/mostly-blank-dashboard.v42.json @@ -79,6 +79,7 @@ "type": "debug" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [], diff --git a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/transforms/regression-analysis.v42.json b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/transforms/regression-analysis.v42.json index caa608c1732..00309402356 100644 --- a/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/transforms/regression-analysis.v42.json +++ b/apps/dashboard/pkg/migration/testdata/dev-dashboards-output/transforms/regression-analysis.v42.json @@ -1049,6 +1049,7 @@ "type": "xychart" } ], + "preload": false, "refresh": "", "schemaVersion": 42, "tags": [ diff --git a/apps/dashboard/pkg/migration/testdata/input/v2.panels-and-services.json b/apps/dashboard/pkg/migration/testdata/input/v2.panels-and-services.json new file mode 100644 index 00000000000..9053a37e5aa --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/input/v2.panels-and-services.json @@ -0,0 +1,89 @@ +{ + "schemaVersion": 1, + "title": "V2 Comprehensive Migration Test Dashboard", + "services": { + "filter": { + "time": { + "from": "now-6h", + "to": "now" + }, + "list": [ + { + "name": "server", + "type": "query", + "datasource": "prometheus", + "query": "label_values(server)" + }, + { + "name": "env", + "type": "custom", + "options": [ + {"text": "Production", "value": "prod"}, + {"text": "Staging", "value": "stage"} + ] + } + ] + } + }, + "panels": [ + { + "id": 1, + "type": "graphite", + "title": "CPU Usage", + "legend": true, + "grid": { + "min": 0, + "max": 100 + }, + "y_format": "percent", + "y2_format": "short", + "targets": [ + { + "refId": "A", + "target": "cpu.usage" + } + ] + }, + { + "id": 2, + "type": "graph", + "title": "Memory Usage", + "legend": false, + "grid": { + "min": 0 + }, + "y_format": "bytes", + "targets": [ + { + "refId": "A", + "target": "memory.usage" + } + ] + }, + { + "id": 3, + "type": "table", + "title": "Server Stats", + "legend": true, + "grid": { + "min": 0, + "max": 100 + }, + "y_format": "short", + "y2_format": "bytes" + }, + { + "id": 4, + "type": "graphite", + "title": "Disk I/O", + "legend": true, + "y2_format": "Bps", + "targets": [ + { + "refId": "A", + "target": "disk.io" + } + ] + } + ] +} diff --git a/apps/dashboard/pkg/migration/testdata/input/v3.no-op.json b/apps/dashboard/pkg/migration/testdata/input/v3.no-op.json new file mode 100644 index 00000000000..4fd95fc5353 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/input/v3.no-op.json @@ -0,0 +1,21 @@ +{ + "title": "V3 No-Op Migration - but tests ensuring panel IDs are unique", + "schemaVersion": 2, + "panels": [ + { + "id": 1, + "type": "timeseries" + }, + { + "id": 2, + "type": "timeseries" + }, + { + "id": 2, + "type": "barchart" + }, + { + "type": "barchart" + } + ] +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/input/v4.no-op.json b/apps/dashboard/pkg/migration/testdata/input/v4.no-op.json new file mode 100644 index 00000000000..62ce65ca2a8 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/input/v4.no-op.json @@ -0,0 +1,18 @@ +{ + "title": "V4 No-Op Migration Test", + "schemaVersion": 3, + "panels": [ + { + "id": 1, + "type": "singlestat" + }, + { + "id": 2, + "type": "singlestat" + }, + { + "id": 3, + "type": "graph" + } + ] +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/input/v5.no-op.json b/apps/dashboard/pkg/migration/testdata/input/v5.no-op.json new file mode 100644 index 00000000000..64132050b11 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/input/v5.no-op.json @@ -0,0 +1,18 @@ +{ + "title": "V5 No-Op Migration Test", + "schemaVersion": 4, + "panels": [ + { + "id": 1, + "type": "singlestat" + }, + { + "id": 2, + "type": "singlestat" + }, + { + "id": 3, + "type": "graph" + } + ] +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/input/v6.pulldowns_and_templating.json b/apps/dashboard/pkg/migration/testdata/input/v6.pulldowns_and_templating.json new file mode 100644 index 00000000000..73c1db88803 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/input/v6.pulldowns_and_templating.json @@ -0,0 +1,106 @@ +{ + "title": "V6 Pulldowns and Template Variables Migration Test", + "schemaVersion": 5, + "pulldowns": [ + { + "type": "filtering", + "enable": true + }, + { + "type": "annotations", + "enable": true, + "annotations": [ + { + "name": "deployment", + "datasource": "prometheus", + "enable": true, + "iconColor": "red", + "query": "ALERTS{alertname=\"DeploymentStarted\"}" + }, + { + "name": "alerts", + "datasource": "loki", + "enable": false, + "iconColor": "yellow", + "query": "{job=\"alertmanager\"}" + } + ] + } + ], + "templating": { + "list": [ + { + "name": "environment", + "type": "filter", + "allFormat": null + }, + { + "name": "service", + "datasource": "prometheus", + "allFormat": "glob" + }, + { + "name": "region", + "type": "custom", + "options": [ + { + "text": "us-east-1", + "value": "us-east-1" + }, + { + "text": "us-west-2", + "value": "us-west-2" + } + ] + }, + { + "name": "instance", + "type": "query", + "datasource": "prometheus", + "query": "label_values(up, instance)", + "refresh": 1 + } + ] + }, + "panels": [ + { + "id": 1, + "title": "CPU Usage", + "type": "graph", + "targets": [ + { + "expr": "cpu_usage{environment=\"$environment\", service=\"$service\"}", + "refId": "A" + } + ], + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + } + }, + { + "id": 2, + "title": "Memory Usage", + "type": "singlestat", + "targets": [ + { + "expr": "memory_usage{region=\"$region\"}", + "refId": "B" + } + ], + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + } + } + ], + "time": { + "from": "now-1h", + "to": "now" + }, + "refresh": "30s" +} diff --git a/apps/dashboard/pkg/migration/testdata/output/latest_version/v2.panels-and-services.v42.json b/apps/dashboard/pkg/migration/testdata/output/latest_version/v2.panels-and-services.v42.json new file mode 100644 index 00000000000..9bf896f9bab --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/latest_version/v2.panels-and-services.v42.json @@ -0,0 +1,168 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "graphite", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "grid": { + "max": 100, + "min": 0 + }, + "id": 1, + "legend": true, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A", + "target": "cpu.usage" + } + ], + "title": "CPU Usage", + "type": "timeseries", + "y2_format": "short", + "y_format": "percent" + }, + { + "autoMigrateFrom": "graph", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "grid": { + "min": 0 + }, + "id": 2, + "legend": false, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A", + "target": "memory.usage" + } + ], + "title": "Memory Usage", + "type": "timeseries", + "y_format": "bytes" + }, + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "grid": { + "max": 100, + "min": 0 + }, + "id": 3, + "legend": true, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "title": "Server Stats", + "type": "table", + "y2_format": "bytes", + "y_format": "short" + }, + { + "autoMigrateFrom": "graphite", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 4, + "legend": true, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A", + "target": "disk.io" + } + ], + "title": "Disk I/O", + "type": "timeseries", + "y2_format": "Bps" + } + ], + "refresh": "", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [ + { + "datasource": "prometheus", + "name": "server", + "options": [], + "query": "label_values(server)", + "refresh": 1, + "type": "query" + }, + { + "name": "env", + "options": [ + { + "text": "Production", + "value": "prod" + }, + { + "text": "Staging", + "value": "stage" + } + ], + "type": "custom" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V2 Comprehensive Migration Test Dashboard", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/latest_version/v3.no-op.v42.json b/apps/dashboard/pkg/migration/testdata/output/latest_version/v3.no-op.v42.json new file mode 100644 index 00000000000..e4f06710eed --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/latest_version/v3.no-op.v42.json @@ -0,0 +1,114 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 1, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "timeseries" + }, + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 2, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "timeseries" + }, + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 3, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "barchart" + }, + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 4, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "barchart" + } + ], + "refresh": "", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V3 No-Op Migration - but tests ensuring panel IDs are unique", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/latest_version/v4.no-op.v42.json b/apps/dashboard/pkg/migration/testdata/output/latest_version/v4.no-op.v42.json new file mode 100644 index 00000000000..8a7d37dc08e --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/latest_version/v4.no-op.v42.json @@ -0,0 +1,98 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "singlestat", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 1, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "stat" + }, + { + "autoMigrateFrom": "singlestat", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 2, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "stat" + }, + { + "autoMigrateFrom": "graph", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 3, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "timeseries" + } + ], + "refresh": "", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V4 No-Op Migration Test", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/latest_version/v5.no-op.v42.json b/apps/dashboard/pkg/migration/testdata/output/latest_version/v5.no-op.v42.json new file mode 100644 index 00000000000..09f15a0f5c1 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/latest_version/v5.no-op.v42.json @@ -0,0 +1,98 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "singlestat", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 1, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "stat" + }, + { + "autoMigrateFrom": "singlestat", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 2, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "stat" + }, + { + "autoMigrateFrom": "graph", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "id": 3, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "refId": "A" + } + ], + "type": "timeseries" + } + ], + "refresh": "", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V5 No-Op Migration Test", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/latest_version/v6.pulldowns_and_templating.v42.json b/apps/dashboard/pkg/migration/testdata/output/latest_version/v6.pulldowns_and_templating.v42.json new file mode 100644 index 00000000000..1a18f9b01c2 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/latest_version/v6.pulldowns_and_templating.v42.json @@ -0,0 +1,154 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + }, + { + "datasource": { + "uid": "prometheus" + }, + "enable": true, + "iconColor": "red", + "name": "deployment", + "query": "ALERTS{alertname=\"DeploymentStarted\"}" + }, + { + "datasource": { + "uid": "loki" + }, + "enable": false, + "iconColor": "yellow", + "name": "alerts", + "query": "{job=\"alertmanager\"}" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "graph", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 1, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "expr": "cpu_usage{environment=\"$environment\", service=\"$service\"}", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "autoMigrateFrom": "singlestat", + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 2, + "targets": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "expr": "memory_usage{region=\"$region\"}", + "refId": "B" + } + ], + "title": "Memory Usage", + "type": "stat" + } + ], + "refresh": "30s", + "schemaVersion": 42, + "tags": [], + "templating": { + "list": [ + { + "datasource": { + "apiVersion": "v1", + "type": "prometheus", + "uid": "default-ds-uid" + }, + "name": "environment", + "options": [], + "refresh": 1, + "type": "query" + }, + { + "allFormat": "glob", + "datasource": "prometheus", + "name": "service", + "options": [], + "refresh": 1, + "type": "query" + }, + { + "name": "region", + "options": [ + { + "text": "us-east-1", + "value": "us-east-1" + }, + { + "text": "us-west-2", + "value": "us-west-2" + } + ], + "type": "custom" + }, + { + "datasource": "prometheus", + "name": "instance", + "options": [], + "query": "label_values(up, instance)", + "refresh": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V6 Pulldowns and Template Variables Migration Test", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/single_version/v2.panels-and-services.v2.json b/apps/dashboard/pkg/migration/testdata/output/single_version/v2.panels-and-services.v2.json new file mode 100644 index 00000000000..c4059848635 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/single_version/v2.panels-and-services.v2.json @@ -0,0 +1,121 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "graphite", + "grid": { + "max": 100, + "min": 0 + }, + "id": 1, + "legend": true, + "targets": [ + { + "refId": "A", + "target": "cpu.usage" + } + ], + "title": "CPU Usage", + "type": "timeseries", + "y2_format": "short", + "y_format": "percent" + }, + { + "autoMigrateFrom": "graph", + "grid": { + "min": 0 + }, + "id": 2, + "legend": false, + "targets": [ + { + "refId": "A", + "target": "memory.usage" + } + ], + "title": "Memory Usage", + "type": "timeseries", + "y_format": "bytes" + }, + { + "grid": { + "max": 100, + "min": 0 + }, + "id": 3, + "legend": true, + "title": "Server Stats", + "type": "table", + "y2_format": "bytes", + "y_format": "short" + }, + { + "autoMigrateFrom": "graphite", + "id": 4, + "legend": true, + "targets": [ + { + "refId": "A", + "target": "disk.io" + } + ], + "title": "Disk I/O", + "type": "timeseries", + "y2_format": "Bps" + } + ], + "schemaVersion": 2, + "tags": [], + "templating": { + "list": [ + { + "datasource": "prometheus", + "name": "server", + "options": [], + "query": "label_values(server)", + "type": "query" + }, + { + "name": "env", + "options": [ + { + "text": "Production", + "value": "prod" + }, + { + "text": "Staging", + "value": "stage" + } + ], + "type": "custom" + } + ] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V2 Comprehensive Migration Test Dashboard", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/single_version/v3.no-op.v3.json b/apps/dashboard/pkg/migration/testdata/output/single_version/v3.no-op.v3.json new file mode 100644 index 00000000000..14e9dc81daf --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/single_version/v3.no-op.v3.json @@ -0,0 +1,53 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "id": 1, + "type": "timeseries" + }, + { + "id": 2, + "type": "timeseries" + }, + { + "id": 3, + "type": "barchart" + }, + { + "id": 4, + "type": "barchart" + } + ], + "schemaVersion": 3, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V3 No-Op Migration - but tests ensuring panel IDs are unique", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/single_version/v4.no-op.v4.json b/apps/dashboard/pkg/migration/testdata/output/single_version/v4.no-op.v4.json new file mode 100644 index 00000000000..cc1caec781f --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/single_version/v4.no-op.v4.json @@ -0,0 +1,52 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "singlestat", + "id": 1, + "type": "stat" + }, + { + "autoMigrateFrom": "singlestat", + "id": 2, + "type": "stat" + }, + { + "autoMigrateFrom": "graph", + "id": 3, + "type": "timeseries" + } + ], + "schemaVersion": 4, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V4 No-Op Migration Test", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/single_version/v5.no-op.v5.json b/apps/dashboard/pkg/migration/testdata/output/single_version/v5.no-op.v5.json new file mode 100644 index 00000000000..7d9a3d9866f --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/single_version/v5.no-op.v5.json @@ -0,0 +1,52 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "singlestat", + "id": 1, + "type": "stat" + }, + { + "autoMigrateFrom": "singlestat", + "id": 2, + "type": "stat" + }, + { + "autoMigrateFrom": "graph", + "id": 3, + "type": "timeseries" + } + ], + "schemaVersion": 5, + "tags": [], + "templating": { + "list": [] + }, + "time": { + "from": "now-6h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V5 No-Op Migration Test", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/dashboard/pkg/migration/testdata/output/single_version/v6.pulldowns_and_templating.v6.json b/apps/dashboard/pkg/migration/testdata/output/single_version/v6.pulldowns_and_templating.v6.json new file mode 100644 index 00000000000..8cdf9a36a40 --- /dev/null +++ b/apps/dashboard/pkg/migration/testdata/output/single_version/v6.pulldowns_and_templating.v6.json @@ -0,0 +1,123 @@ +{ + "annotations": { + "list": [ + { + "builtIn": 1, + "datasource": { + "type": "grafana", + "uid": "-- Grafana --" + }, + "enable": true, + "hide": true, + "iconColor": "rgba(0, 211, 255, 1)", + "name": "Annotations \u0026 Alerts", + "type": "dashboard" + }, + { + "datasource": "prometheus", + "enable": true, + "iconColor": "red", + "name": "deployment", + "query": "ALERTS{alertname=\"DeploymentStarted\"}" + }, + { + "datasource": "loki", + "enable": false, + "iconColor": "yellow", + "name": "alerts", + "query": "{job=\"alertmanager\"}" + } + ] + }, + "editable": true, + "fiscalYearStartMonth": 0, + "graphTooltip": 0, + "links": [], + "panels": [ + { + "autoMigrateFrom": "graph", + "gridPos": { + "h": 8, + "w": 12, + "x": 0, + "y": 0 + }, + "id": 1, + "targets": [ + { + "expr": "cpu_usage{environment=\"$environment\", service=\"$service\"}", + "refId": "A" + } + ], + "title": "CPU Usage", + "type": "timeseries" + }, + { + "autoMigrateFrom": "singlestat", + "gridPos": { + "h": 8, + "w": 12, + "x": 12, + "y": 0 + }, + "id": 2, + "targets": [ + { + "expr": "memory_usage{region=\"$region\"}", + "refId": "B" + } + ], + "title": "Memory Usage", + "type": "stat" + } + ], + "refresh": "30s", + "schemaVersion": 6, + "tags": [], + "templating": { + "list": [ + { + "name": "environment", + "options": [], + "type": "query" + }, + { + "allFormat": "glob", + "datasource": "prometheus", + "name": "service", + "options": [], + "type": "query" + }, + { + "name": "region", + "options": [ + { + "text": "us-east-1", + "value": "us-east-1" + }, + { + "text": "us-west-2", + "value": "us-west-2" + } + ], + "type": "custom" + }, + { + "datasource": "prometheus", + "name": "instance", + "options": [], + "query": "label_values(up, instance)", + "refresh": 1, + "type": "query" + } + ] + }, + "time": { + "from": "now-1h", + "to": "now" + }, + "timepicker": {}, + "timezone": "", + "title": "V6 Pulldowns and Template Variables Migration Test", + "weekStart": "" +} \ No newline at end of file diff --git a/apps/folder/go.mod b/apps/folder/go.mod index daf5783d343..acec11443c3 100644 --- a/apps/folder/go.mod +++ b/apps/folder/go.mod @@ -53,7 +53,7 @@ require ( golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/apps/folder/go.sum b/apps/folder/go.sum index 68909c968ec..3a0ba21beb5 100644 --- a/apps/folder/go.sum +++ b/apps/folder/go.sum @@ -140,8 +140,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/iam/go.mod b/apps/iam/go.mod index 7e77d0c830b..fb54ff9a38d 100644 --- a/apps/iam/go.mod +++ b/apps/iam/go.mod @@ -12,6 +12,28 @@ replace github.com/grafana/grafana/apps/secret => ../secret replace github.com/grafana/grafana/apps/provisioning => ../provisioning +replace github.com/grafana/grafana/apps/advisor => ../advisor + +replace github.com/grafana/grafana/apps/alerting/alertenrichment => ../alerting/alertenrichment + +replace github.com/grafana/grafana/apps/alerting/notifications => ../alerting/notifications + +replace github.com/grafana/grafana/apps/alerting/rules => ../alerting/rules + +replace github.com/grafana/grafana/apps/correlations => ../correlations + +replace github.com/grafana/grafana/apps/investigations => ../investigations + +replace github.com/grafana/grafana/apps/playlist => ../playlist + +replace github.com/grafana/grafana/apps/plugins => ../plugins + +replace github.com/grafana/grafana/apps/preferences => ../preferences + +replace github.com/grafana/grafana/apps/scope => ../scope + +replace github.com/grafana/grafana/apps/shorturl => ../shorturl + replace github.com/grafana/grafana/pkg/apimachinery => ../../pkg/apimachinery replace github.com/grafana/grafana/pkg/apiserver => ../../pkg/apiserver @@ -45,14 +67,14 @@ require ( cuelang.org/go v0.11.1 // indirect dario.cat/mergo v1.0.2 // indirect filippo.io/edwards25519 v1.1.0 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 // indirect - github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 // indirect + github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 // indirect + github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 // indirect github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1 // indirect github.com/Azure/go-autorest v14.2.0+incompatible // indirect github.com/Azure/go-autorest/autorest/to v0.4.1 // indirect github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e // indirect - github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 // indirect + github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 // indirect github.com/BurntSushi/toml v1.5.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 // indirect github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 // indirect @@ -94,7 +116,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 // indirect github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2 // indirect github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 // indirect - github.com/aws/smithy-go v1.22.5 // indirect + github.com/aws/smithy-go v1.23.1 // indirect github.com/axiomhq/hyperloglog v0.0.0-20240507144631-af9851f82b27 // indirect github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df // indirect @@ -200,13 +222,13 @@ require ( github.com/googleapis/enterprise-certificate-proxy v0.3.6 // indirect github.com/googleapis/gax-go/v2 v2.14.2 // indirect github.com/gorilla/mux v1.8.1 // indirect - github.com/grafana/alerting v0.0.0-20251007160934-e642236ea9eb // indirect + github.com/grafana/alerting v0.0.0-20251009192429-9427c24835ae // indirect github.com/grafana/authlib v0.0.0-20250930082137-a40e2c2b094f // indirect github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 // indirect github.com/grafana/dataplane/sdata v0.0.9 // indirect github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4 // indirect github.com/grafana/grafana-aws-sdk v1.2.0 // indirect - github.com/grafana/grafana-azure-sdk-go/v2 v2.2.0 // indirect + github.com/grafana/grafana-azure-sdk-go/v2 v2.3.1 // indirect github.com/grafana/grafana-plugin-sdk-go v0.279.0 // indirect github.com/grafana/grafana/apps/dashboard v0.0.0 // indirect github.com/grafana/grafana/apps/provisioning v0.0.0 // indirect @@ -216,7 +238,7 @@ require ( github.com/grafana/grafana/pkg/promlib v0.0.8 // indirect github.com/grafana/grafana/pkg/semconv v0.0.0-20250804150913-990f1c69ecc2 // indirect github.com/grafana/otel-profiling-go v0.5.1 // indirect - github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // indirect + github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // indirect github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc // indirect github.com/grafana/sqlds/v4 v4.2.7 // indirect github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // indirect @@ -411,7 +433,7 @@ require ( golang.org/x/sys v0.36.0 // indirect golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect golang.org/x/tools v0.37.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect @@ -442,10 +464,10 @@ require ( k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kms v0.34.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect - modernc.org/libc v1.66.3 // indirect + modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect - modernc.org/sqlite v1.38.2 // indirect + modernc.org/sqlite v1.39.1 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/iam/go.sum b/apps/iam/go.sum index aa2d47b9a2e..a75df64f1b1 100644 --- a/apps/iam/go.sum +++ b/apps/iam/go.sum @@ -1,3 +1,7 @@ +buf.build/gen/go/parca-dev/parca/connectrpc/go v1.18.1-20250703125925-3f0fcf4bff96.1 h1:MXQkdpJwbCwskYLQ3dUv/5gmk8fSsUwu78u+kXebbek= +buf.build/gen/go/parca-dev/parca/connectrpc/go v1.18.1-20250703125925-3f0fcf4bff96.1/go.mod h1:pjl83IqpNF7Lm/lOPMLQ5IIfCg+yTu2A9OgYTcEncCs= +buf.build/gen/go/parca-dev/parca/protocolbuffers/go v1.36.2-20250703125925-3f0fcf4bff96.1 h1:9nqE/pDc/HXAXiD5pZncPywjAzWgKuBkFFYgdK2lVU8= +buf.build/gen/go/parca-dev/parca/protocolbuffers/go v1.36.2-20250703125925-3f0fcf4bff96.1/go.mod h1:1M7nlq2ljfzb95x9LaA2j1gYIvDkVZii58mGvTa9ExM= cel.dev/expr v0.24.0 h1:56OvJKSH3hDGL0ml5uSxZmz3/3Pq4tJ+fb1unVLAFcY= cel.dev/expr v0.24.0/go.mod h1:hLPLo1W4QUmuYdA72RBX06QTs6MXw941piREPl3Yfiw= cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= @@ -56,6 +60,8 @@ cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1 cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= cloud.google.com/go/iam v1.5.2 h1:qgFRAGEmd8z6dJ/qyEchAuL9jpswyODjA2lS+w234g8= cloud.google.com/go/iam v1.5.2/go.mod h1:SE1vg0N81zQqLzQEwxL2WI6yhetBdbNQuTvIKCSkUHE= +cloud.google.com/go/kms v1.22.0 h1:dBRIj7+GDeeEvatJeTB19oYZNV0aj6wEqSIT/7gLqtk= +cloud.google.com/go/kms v1.22.0/go.mod h1:U7mf8Sva5jpOb4bxYZdtw/9zsbIjrklYwPcvMk34AL8= cloud.google.com/go/logging v1.13.0 h1:7j0HgAp0B94o1YRDqiqm26w4q1rDMH7XNRU34lJXHYc= cloud.google.com/go/logging v1.13.0/go.mod h1:36CoKh6KA/M0PbhPKMq6/qety2DCAErbhXT62TuXALA= cloud.google.com/go/longrunning v0.6.7 h1:IGtfDWHhQCgCjwQjV9iiLnUta9LBCo8R9QmAFsS/PrE= @@ -76,6 +82,8 @@ cloud.google.com/go/storage v1.55.0 h1:NESjdAToN9u1tmhVqhXCaCwYBuvEhZLLv0gBr+2zn cloud.google.com/go/storage v1.55.0/go.mod h1:ztSmTTwzsdXe5syLVS0YsbFxXuvEmEyZj7v7zChEmuY= cloud.google.com/go/trace v1.11.6 h1:2O2zjPzqPYAHrn3OKl029qlqG6W8ZdYaOWRyr8NgMT4= cloud.google.com/go/trace v1.11.6/go.mod h1:GA855OeDEBiBMzcckLPE2kDunIpC72N+Pq8WFieFjnI= +connectrpc.com/connect v1.18.1 h1:PAg7CjSAGvscaf6YZKUefjoih5Z/qYkyaTrBW8xvYPw= +connectrpc.com/connect v1.18.1/go.mod h1:0292hj1rnx8oFrStN7cB4jjVBeqs+Yx5yDIC2prWDO8= cuelabs.dev/go/oci/ociregistry v0.0.0-20240906074133-82eb438dd565 h1:R5wwEcbEZSBmeyg91MJZTxfd7WpBo2jPof3AYjRbxwY= cuelabs.dev/go/oci/ociregistry v0.0.0-20240906074133-82eb438dd565/go.mod h1:5A4xfTzHTXfeVJBU6RAUf+QrlfTCW+017q/QiW+sMLg= cuelang.org/go v0.11.1 h1:pV+49MX1mmvDm8Qh3Za3M786cty8VKPWzQ1Ho4gZRP0= @@ -83,37 +91,64 @@ cuelang.org/go v0.11.1/go.mod h1:PBY6XvPUswPPJ2inpvUozP9mebDVTXaeehQikhZPBz0= dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8= dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA= dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +filippo.io/age v1.2.1 h1:X0TZjehAZylOIj4DubWYU1vWQxv9bJpo+Uu2/LGhi1o= +filippo.io/age v1.2.1/go.mod h1:JL9ew2lTN+Pyft4RiNGguFfOpewKwSHm5ayKD/A4004= filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA= filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4= +github.com/1NCE-GmbH/grpc-go-pool v0.0.0-20231117122434-2a5bb974daa2 h1:qFYgLH2zZe3WHpQgUrzeazC+ebDebwAQqS9yE1cP5Bs= +github.com/1NCE-GmbH/grpc-go-pool v0.0.0-20231117122434-2a5bb974daa2/go.mod h1:09/ALd1AXCTCOfcJYD8+jIYKmFmi6PVCkTsipC18F7E= +github.com/Azure/azure-pipeline-go v0.2.3 h1:7U9HBg1JFK3jHl5qmo4CTZKFTVgMwdFHMVtCdfBE21U= +github.com/Azure/azure-pipeline-go v0.2.3/go.mod h1:x841ezTBIMG6O3lAcl8ATHnsOPVl2bqk7S3ta6S6u4k= github.com/Azure/azure-sdk-for-go v68.0.0+incompatible h1:fcYLmCpyNYRnvJbPerq7U0hS+6+I79yEDJBqVNcqUzU= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1 h1:Wc1ml6QlJs2BHQ/9Bqu1jiyggbsSjramq2oUmp5WeIo= -github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.1/go.mod h1:Ot/6aikWnKWi4l9QB7qVSwa8iMphQNqkWALMoNT3rzM= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1 h1:B+blDbyVIG3WaikNxPnhPiJ1MThR03b3vKGtER95TP4= -github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.10.1/go.mod h1:JdM5psgjfBf5fo2uWOZhflPWyDBZ/O/CNAH9CtsuZE4= +github.com/Azure/azure-sdk-for-go v68.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1 h1:5YTBM8QDVIBN3sxBil89WfdAAqDZbyJTgh688DSxX5w= +github.com/Azure/azure-sdk-for-go/sdk/azcore v1.19.1/go.mod h1:YD5h/ldMsG0XiIw7PdyNhLxaM317eFh5yNLccNfGdyw= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0 h1:wL5IEG5zb7BVv1Kv0Xm92orq+5hB5Nipn3B5tn4Rqfk= +github.com/Azure/azure-sdk-for-go/sdk/azidentity v1.12.0/go.mod h1:J7MUC/wtRpfGVbQ5sIItY5/FuVWmvzlY21WAOfQnq/I= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2 h1:yz1bePFlP5Vws5+8ez6T3HWXPmwOK7Yvq8QxDBD3SKY= github.com/Azure/azure-sdk-for-go/sdk/azidentity/cache v0.3.2/go.mod h1:Pa9ZNPuoNu/GztvBSKk9J1cDJW6vk/n0zLtV4mgd8N8= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1 h1:FPKJS1T+clwv+OLGt13a8UjqeRuh0O4SJ3lUriThc+4= -github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.1/go.mod h1:j2chePtV91HrC22tGoRX3sGY42uF13WzmmV80/OdVAA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2 h1:9iefClla7iYpfYWdzPCRDozdmndjTm8DXdpCzPajMgA= +github.com/Azure/azure-sdk-for-go/sdk/internal v1.11.2/go.mod h1:XtLgD3ZD34DAaVIIAyG3objl5DynM3CQ/vMcbBNJZGI= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0 h1:m/sWOGCREuSBqg2htVQTBY8nOZpyajYztF0vUvSZTuM= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/azkeys v0.10.0/go.mod h1:Pu5Zksi2KrU7LPbZbNINx6fuVrUp/ffvpxdDj+i8LeE= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1 h1:FbH3BbSb4bvGluTesZZ+ttN/MDsnMmQP36OSnDuSXqw= +github.com/Azure/azure-sdk-for-go/sdk/keyvault/internal v0.7.1/go.mod h1:9V2j0jn9jDEkCkv8w/bKTNppX/d0FVA1ud77xCIP4KA= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.0 h1:LR0kAX9ykz8G4YgLCaRDVJ3+n43R8MneB5dTy2konZo= github.com/Azure/azure-sdk-for-go/sdk/resourcemanager/storage/armstorage v1.8.0/go.mod h1:DWAciXemNf++PQJLeXUB4HHH5OpsAh12HZnu2wXE1jA= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1 h1:lhZdRq7TIx0GJQvSyX2Si406vrYsov2FXGp/RnSEtcs= github.com/Azure/azure-sdk-for-go/sdk/storage/azblob v1.6.1/go.mod h1:8cl44BDmi+effbARHMQjgOKA2AYvcohNm7KEt42mSV8= +github.com/Azure/azure-storage-blob-go v0.15.0 h1:rXtgp8tN1p29GvpGgfJetavIG0V7OgcSXPpwp3tx6qk= +github.com/Azure/azure-storage-blob-go v0.15.0/go.mod h1:vbjsVbX0dlxnRc4FFMPsS9BsJWPcne7GB7onqlPvz58= github.com/Azure/go-ansiterm v0.0.0-20170929234023-d6e3b3328b78/go.mod h1:LmzpDX56iTiv29bbRTIsUNlaFfuhWRQBWjQdVyAevI8= github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.29 h1:I4+HL/JDvErx2LjyzaVxllw2lRDB5/BT2Bm4g20iqYw= +github.com/Azure/go-autorest/autorest v0.11.29/go.mod h1:ZtEzC4Jy2JDrZLxvWs8LrBWEBycl1hbT1eknI8MtfAs= +github.com/Azure/go-autorest/autorest/adal v0.9.24 h1:BHZfgGsGwdkHDyZdtQRQk1WeUdW0m2WPAwuHZwUi5i4= +github.com/Azure/go-autorest/autorest/adal v0.9.24/go.mod h1:7T1+g0PYFmACYW5LlG2fcoPiPlFHjClyRGL7dRlP5c8= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= github.com/Azure/go-autorest/autorest/to v0.4.1 h1:CxNHBqdzTr7rLtdrtb5CMjJcDut+WNGCVv7OmS5+lTc= github.com/Azure/go-autorest/autorest/to v0.4.1/go.mod h1:EtaofgU4zmtvn1zT2ARsjRFdq9vXx0YWtmElwL+GZ9M= +github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e h1:NeAW1fUYUEWhft7pkxDf6WoUvEZJ/uOKsvtpjLnn8MU= github.com/Azure/go-ntlmssp v0.0.0-20220621081337-cb9428e4ac1e/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1 h1:WJTmL004Abzc5wDB5VtZG2PJk5ndYDgVacGqfirKxjM= github.com/AzureAD/microsoft-authentication-extensions-for-go/cache v0.1.1/go.mod h1:tCcJZ0uHAmvjsVYzEFivsRTN00oz5BEsRgQHu5JZ9WE= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2 h1:oygO0locgZJe7PpYPXT5A29ZkwJaPqcva7BVeemZOZs= -github.com/AzureAD/microsoft-authentication-library-for-go v1.4.2/go.mod h1:wP83P5OoQ5p6ip3ScPr0BAq0BvuPAvacpEuSzyouqAI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0 h1:XkkQbfMyuH2jTSjQjSoihryI8GINRcs4xp8lNawg0FI= +github.com/AzureAD/microsoft-authentication-library-for-go v1.5.0/go.mod h1:HKpQxkWaGLJ+D/5H8QRpyQXA1eKjxkFlOMwck5+33Jk= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg= github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho= github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/FZambia/eagle v0.2.0 h1:1kQaZpJvbkvAXFRE/9K2ucBMuVqo+E29EMLYB74hIis= +github.com/FZambia/eagle v0.2.0/go.mod h1:LKMYBwGYhao5sJI0TppvQ4SvvldFj9gITxrl8NvGwG0= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0 h1:UQUsRi8WTzhZntp5313l+CHIAT95ojUI2lpP/ExlZa4= github.com/GoogleCloudPlatform/opentelemetry-operations-go/detectors/gcp v1.29.0/go.mod h1:Cz6ft6Dkn3Et6l2v2a9/RpN7epQ1GtDlO6lj8bEcOvw= github.com/GoogleCloudPlatform/opentelemetry-operations-go/exporter/metric v0.51.0 h1:fYE9p3esPxA/C0rQ0AHhP0drtPXDRhaWiwg1DPqO7IU= @@ -157,6 +192,8 @@ github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f h1:HR5nRmUQgX github.com/VividCortex/mysqlerr v0.0.0-20170204212430-6c6b55f8796f/go.mod h1:f3HiCrHjHBdcm6E83vGaXh1KomZMA2P6aeo3hKx/wg0= github.com/Yiling-J/theine-go v0.6.2 h1:1GeoXeQ0O0AUkiwj2S9Jc0Mzx+hpqzmqsJ4kIC4M9AY= github.com/Yiling-J/theine-go v0.6.2/go.mod h1:08QpMa5JZ2pKN+UJCRrCasWYO1IKCdl54Xa836rpmDU= +github.com/agext/levenshtein v1.2.1 h1:QmvMAjj2aEICytGiWzmxoE0x2KZvE0fvmqMOfy2tjT8= +github.com/agext/levenshtein v1.2.1/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558= github.com/ajstarks/svgo v0.0.0-20180226025133-644b8db467af/go.mod h1:K08gAheRH3/J6wwsYMMT4xOr94bZjxIelGM0+d/wbFw= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -175,6 +212,10 @@ github.com/apache/arrow-go/v18 v18.4.0/go.mod h1:Aawvwhj8x2jURIzD9Moy72cF0FyJXOp github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ= github.com/apache/thrift v0.22.0 h1:r7mTJdj51TMDe6RtcmNdQxgn9XcyfGDOzegMDRg47uc= github.com/apache/thrift v0.22.0/go.mod h1:1e7J/O1Ae6ZQMTYdy9xa3w9k+XHWPfRvdPyJeynQ+/g= +github.com/apapsch/go-jsonmerge/v2 v2.0.0 h1:axGnT1gRIfimI7gJifB699GoE/oq+F2MU7Dml6nw9rQ= +github.com/apapsch/go-jsonmerge/v2 v2.0.0/go.mod h1:lvDnEdqiQrp0O42VQGgmlKpxL1AP2+08jFMw88y4klk= +github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= +github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= @@ -212,6 +253,12 @@ github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3 h1:bIqFDwgGXXN1Kpp99pDOdKMTTb5d github.com/aws/aws-sdk-go-v2/internal/ini v1.8.3/go.mod h1:H5O/EsxDWyU+LP/V8i5sm8cxoZgc2fdNR9bxlOFrQTo= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.34 h1:ZNTqv4nIdE/DiBfUUfXcLZ/Spcuz+RjeziUtNJackkM= github.com/aws/aws-sdk-go-v2/internal/v4a v1.3.34/go.mod h1:zf7Vcd1ViW7cPqYWEHLHJkS50X0JS2IKz9Cgaj6ugrs= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.45.3 h1:Nn3qce+OHZuMj/edx4its32uxedAmquCDxtZkrdeiD4= +github.com/aws/aws-sdk-go-v2/service/cloudwatch v1.45.3/go.mod h1:aqsLGsPs+rJfwDBwWHLcIV8F7AFcikFTPLwUD4RwORQ= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.51.0 h1:e5cbPZYTIY2nUEFieZUfVdINOiCTvChOMPfdLnmiLzs= +github.com/aws/aws-sdk-go-v2/service/cloudwatchlogs v1.51.0/go.mod h1:UseIHRfrm7PqeZo6fcTb6FUCXzCnh1KJbQbmOfxArGM= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.225.2 h1:IfMb3Ar8xEaWjgH/zeVHYD8izwJdQgRP5mKCTDt4GNk= +github.com/aws/aws-sdk-go-v2/service/ec2 v1.225.2/go.mod h1:35jGWx7ECvCwTsApqicFYzZ7JFEnBc6oHUuOQ3xIS54= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0 h1:6+lZi2JeGKtCraAj1rpoZfKqnQ9SptseRZioejfUOLM= github.com/aws/aws-sdk-go-v2/service/internal/accept-encoding v1.13.0/go.mod h1:eb3gfbVIxIoGgJsi9pGne19dhCBpK6opTYpQqAmdy44= github.com/aws/aws-sdk-go-v2/service/internal/checksum v1.7.0 h1:lguz0bmOoGzozP9XfRJR1QIayEYo+2vP/No3OfLF0pU= @@ -220,6 +267,12 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4 h1:ueB2Te0Na github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.13.4/go.mod h1:nLEfLnVMmLvyIG58/6gsSA03F1voKGaCfHV7+lR8S7s= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.15 h1:moLQUoVq91LiqT1nbvzDukyqAlCv89ZmwaHw/ZFlFZg= github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.18.15/go.mod h1:ZH34PJUc8ApjBIfgQCFvkWcUDBtl/WTD+uiYHjd8igA= +github.com/aws/aws-sdk-go-v2/service/kms v1.38.1 h1:tecq7+mAav5byF+Mr+iONJnCBf4B4gon8RSp4BrweSc= +github.com/aws/aws-sdk-go-v2/service/kms v1.38.1/go.mod h1:cQn6tAF77Di6m4huxovNM7NVAozWTZLsDRp9t8Z/WYk= +github.com/aws/aws-sdk-go-v2/service/oam v1.18.3 h1:teOWtElLARLOhpYWwupjLbY9j5I/yZ/H1I8jg41An78= +github.com/aws/aws-sdk-go-v2/service/oam v1.18.3/go.mod h1:wGhpdyftHX6/1U4egowHkYdypwBMjpb+KjAAprv6z20= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.26.6 h1:PwbxovpcJvb25k019bkibvJfCpCmIANOFrXZIFPmRzk= +github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.26.6/go.mod h1:Z4xLt5mXspLKjBV92i165wAJ/3T6TIv4n7RtIS8pWV0= github.com/aws/aws-sdk-go-v2/service/s3 v1.78.2 h1:jIiopHEV22b4yQP2q36Y0OmwLbsxNWdWwfZRR5QRRO4= github.com/aws/aws-sdk-go-v2/service/s3 v1.78.2/go.mod h1:U5SNqwhXB3Xe6F47kXvWihPl/ilGaEDe8HD/50Z9wxc= github.com/aws/aws-sdk-go-v2/service/sso v1.28.2 h1:ve9dYBB8CfJGTFqcQ3ZLAAb/KXWgYlgu/2R2TZL2Ko0= @@ -228,8 +281,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2 h1:pd9G9HQaM6UZAZh19pYOkpKS github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2/go.mod h1:eknndR9rU8UpE/OmFpqU78V1EcXPKFTTm5l/buZYgvM= github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 h1:iV1Ko4Em/lkJIsoKyGfc0nQySi+v0Udxr6Igq+y9JZc= github.com/aws/aws-sdk-go-v2/service/sts v1.38.0/go.mod h1:bEPcjW7IbolPfK67G1nilqWyoxYMSPrDiIQ3RdIdKgo= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M= +github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/axiomhq/hyperloglog v0.0.0-20191112132149-a4c4c47bc57f/go.mod h1:2stgcRjl6QmW+gU2h5E7BQXg4HU0gzxKWDuT5HviN9s= github.com/axiomhq/hyperloglog v0.0.0-20240507144631-af9851f82b27 h1:60m4tnanN1ctzIu4V3bfCNJ39BiOPSm1gHFlFjTkRE0= github.com/axiomhq/hyperloglog v0.0.0-20240507144631-af9851f82b27/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= @@ -239,6 +292,8 @@ github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df h1:GSoSVRLo github.com/barkimedes/go-deepcopy v0.0.0-20220514131651-17c30cfc62df/go.mod h1:hiVxq5OP2bUGBRNS3Z/bt/reCLFNbdcST6gISi1fiOM= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3 h1:6df1vn4bBlDDo4tARvBm7l6KA9iVMnE3NWizDeWSrps= github.com/bboreham/go-loser v0.0.0-20230920113527-fcc2c21820a3/go.mod h1:CIWtjkly68+yqLPbvwwR/fjNJA/idrtULjZWh2v1ys0= +github.com/beevik/etree v1.4.1 h1:PmQJDDYahBGNKDcpdX8uPy1xRCwoCGVUiW669MEirVI= +github.com/beevik/etree v1.4.1/go.mod h1:gPNJNaBGVZ9AwsidazFZyygnd+0pAU38N4D+WemwKNs= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= @@ -320,6 +375,8 @@ github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMU github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwmarrin/snowflake v0.3.0 h1:xm67bEhkKh6ij1790JB83OujPR5CzNe8QuQqAgISZN0= github.com/bwmarrin/snowflake v0.3.0/go.mod h1:NdZxfVWX+oR6y2K0o6qAYv6gIOP9rjG0/E9WsDpxqwE= +github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500 h1:6lhrsTEnloDPXyeZBvSYvQf8u86jbKehZPVDDlkgDl4= +github.com/c2h5oh/datasize v0.0.0-20231215233829-aa82cc1e6500/go.mod h1:S/7n9copUssQ56c7aAgHqftWO4LTf4xY6CGWt8Bc+3M= github.com/caio/go-tdigest v3.1.0+incompatible h1:uoVMJ3Q5lXmVLCCqaMGHLBWnbGoN6Lpu7OAUPR60cds= github.com/caio/go-tdigest v3.1.0+incompatible/go.mod h1:sHQM/ubZStBUmF1WbB8FAm8q9GjDajLC5T7ydxE3JHI= github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8= @@ -327,6 +384,11 @@ github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyY github.com/cenkalti/backoff/v5 v5.0.3 h1:ZN+IMa753KfX5hd8vVaMixjnqRZ3y8CuJKRKj1xcsSM= github.com/cenkalti/backoff/v5 v5.0.3/go.mod h1:rkhZdG3JZukswDf7f0cwqPNk4K0sa+F97BxZthm/crw= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/centrifugal/centrifuge v0.37.2 h1:rerQNvDfYN2FZEkVtb/hvGV7SIrJfEQrKF3MaE8GDlo= +github.com/centrifugal/centrifuge v0.37.2/go.mod h1:aj4iRJGhzi3SlL8iUtVezxway1Xf8g+hmNQkLLO7sS8= +github.com/centrifugal/protocol v0.16.2 h1:KoIHgDeX1fFxyxQoKW+6E8ZTCf5mwGm8JyGoJ5NBMbQ= +github.com/centrifugal/protocol v0.16.2/go.mod h1:Q7OpS/8HMXDnL7f9DpNx24IhG96MP88WPpVTTCdrokI= +github.com/cespare/xxhash v1.1.0 h1:a6HrQnmkObjyL+Gs60czilIUGqrzKutQD6XZog3p+ko= github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.3.0 h1:UL815xU9SqsFlibzuggzjXhog7bL6oX9BbNZnL2UFvs= @@ -378,6 +440,8 @@ github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6N github.com/cpuguy83/go-md2man/v2 v2.0.7 h1:zbFlGlXEAKlwXpmvle3d8Oe3YnkKIK4xSRTd3sHPnBo= github.com/cpuguy83/go-md2man/v2 v2.0.7/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/crewjam/saml v0.4.14 h1:g9FBNx62osKusnFzs3QTN5L9CVA/Egfgm+stJShzw/c= +github.com/crewjam/saml v0.4.14/go.mod h1:UVSZCf18jJkk6GpWNVqcyQJMD5HsRugBPf4I1nl2mME= github.com/cznic/b v0.0.0-20180115125044-35e9bbe41f07/go.mod h1:URriBxXwVq5ijiJ12C7iIZqlA69nTlI+LgI6/pwftG8= github.com/cznic/fileutil v0.0.0-20180108211300-6a051e75936f/go.mod h1:8S58EK26zhXSxzv7NQFpnliaOQsmDUxvoQO3rt154Vg= github.com/cznic/golex v0.0.0-20170803123110-4ab7c5e190e4/go.mod h1:+bmmJDNmKlhWNG+gwWCkaBoTy39Fs+bzRxVBzoTQbIc= @@ -431,6 +495,8 @@ github.com/dolthub/go-mysql-server v0.19.1-0.20250410182021-5632d67cd46e h1:7pAt github.com/dolthub/go-mysql-server v0.19.1-0.20250410182021-5632d67cd46e/go.mod h1:KZyoO3jngyZCLyCf100FEQTrwAHj33AIMj4Zv4u3MNE= github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 h1:bMGS25NWAGTEtT5tOBsCuCrlYnLRKpbJVJkDbrTRhwQ= github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71/go.mod h1:2/2zjLQ/JOOSbbSboojeg+cAwcRV0fDLzIiWch/lhqI= +github.com/dolthub/maphash v0.1.0 h1:bsQ7JsF4FkkWyrP3oCnFJgrCUAFbFf3kOl4L/QxPDyQ= +github.com/dolthub/maphash v0.1.0/go.mod h1:gkg4Ch4CdCDu5h6PMriVLawB7koZ+5ijb9puGMV50a4= github.com/dolthub/vitess v0.0.0-20250410090211-143e6b272ad4 h1:LGTt2LtYX8vaai32d+c9L0sMcP+Dg9w1kO6+lbsxxYg= github.com/dolthub/vitess v0.0.0-20250410090211-143e6b272ad4/go.mod h1:1gQZs/byeHLMSul3Lvl3MzioMtOW1je79QYGyi2fd70= github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= @@ -440,6 +506,8 @@ github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5m github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU= github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I= github.com/edsrzf/mmap-go v0.0.0-20170320065105-0bce6a688712/go.mod h1:YO35OhQPt3KJa3ryjFM5Bs14WD66h8eGKpfaBNrHW5M= +github.com/edsrzf/mmap-go v1.2.0 h1:hXLYlkbaPzt1SaQk+anYwKSRNhufIDCchSPkUD6dD84= +github.com/edsrzf/mmap-go v1.2.0/go.mod h1:19H/e8pUPLicwkyNgOykDXkJ9F0MHE+Z52B8EIth78Q= github.com/elazarl/goproxy v1.7.2 h1:Y2o6urb7Eule09PjlhQRGNsqRfPmYI3KKQLFpCAV3+o= github.com/elazarl/goproxy v1.7.2/go.mod h1:82vkLNir0ALaW14Rc399OTTjyNREgmdL2cVoIbS6XaE= github.com/emicklei/go-restful/v3 v3.13.0 h1:C4Bl2xDndpU6nJ4bc1jXd+uTmYPVUwkD6bFY/oTyCes= @@ -468,6 +536,8 @@ github.com/envoyproxy/protoc-gen-validate v1.2.1 h1:DEo3O99U8j4hBFwbJfrz9VtgcDfU github.com/envoyproxy/protoc-gen-validate v1.2.1/go.mod h1:d/C80l/jxXLdfEIhX1W2TmLfsJ31lvEjwamM4DxlWXU= github.com/evanphx/json-patch v5.9.11+incompatible h1:ixHHqfcGvxhWkniF1tWxBHA0yb4Z+d1UQi45df52xW8= github.com/evanphx/json-patch v5.9.11+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk= +github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb h1:IT4JYU7k4ikYg1SCxNI1/Tieq/NFvh6dzLdgi7eu0tM= +github.com/facette/natsort v0.0.0-20181210072756-2cd4dd1e2dcb/go.mod h1:bH6Xx7IW64qjjJq8M2u4dxNaBiDfKK+z/3eGDpXEQhc= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.10.0/go.mod h1:ELkj/draVOlAH/xkhN6mQ50Qd0MPOk5AAr3maGEBuJM= @@ -489,6 +559,8 @@ github.com/fullstorydev/grpchan v1.1.1 h1:heQqIJlAv5Cnks9a70GRL2EJke6QQoUB25VGR6 github.com/fullstorydev/grpchan v1.1.1/go.mod h1:f4HpiV8V6htfY/K44GWV1ESQzHBTq7DinhzqQ95lpgc= github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM= github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ= +github.com/gammazero/deque v0.2.1 h1:qSdsbG6pgp6nL7A0+K/B7s12mcCY/5l5SIUpMOl+dC0= +github.com/gammazero/deque v0.2.1/go.mod h1:LFroj8x4cMYCukHJDbxFCkT+r9AndaJnFMuZDV34tuU= github.com/gchaincl/sqlhooks v1.3.0 h1:yKPXxW9a5CjXaVf2HkQn6wn7TZARvbAOAelr3H8vK2Y= github.com/gchaincl/sqlhooks v1.3.0/go.mod h1:9BypXnereMT0+Ys8WGWHqzgkkOfHIhyeUCqXC24ra34= github.com/getkin/kin-openapi v0.133.0 h1:pJdmNohVIJ97r4AUFtEXRXwESr8b0bD721u/Tz6k8PQ= @@ -547,6 +619,10 @@ github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+ github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= github.com/go-quicktest/qt v1.101.0 h1:O1K29Txy5P2OK0dGo59b7b0LR6wKfIhttaAhHUyn7eI= github.com/go-quicktest/qt v1.101.0/go.mod h1:14Bz/f7NwaXPtdYEgzsx46kqSxVwTbzVZsDC26tQJow= +github.com/go-redis/redis/v8 v8.11.5 h1:AcZZR7igkdvfVmQTPnu9WE37LRrO/YrBH5zWyjDC0oI= +github.com/go-redis/redis/v8 v8.11.5/go.mod h1:gREzHqY1hg6oD9ngVRbLStwAWKhA0FEgq8Jd4h5lpwo= +github.com/go-sourcemap/sourcemap v2.1.4+incompatible h1:a+iTbH5auLKxaNwQFg0B+TCYl6lbukKPc7b5x0n1s6Q= +github.com/go-sourcemap/sourcemap v2.1.4+incompatible/go.mod h1:F8jJfvm2KbVjc5NqelyYJmf/v5J0dwNLS2mL4sNA1Jg= github.com/go-sql-driver/mysql v1.4.1/go.mod h1:zAC/RDZ24gD3HViQzih4MyKcchzm+sOG5ZlKdlhCg5w= github.com/go-sql-driver/mysql v1.6.0/go.mod h1:DCzpHaOWr8IXmIStZouvnhqoel9Qv2LBy8hT2VhHyBg= github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo= @@ -587,6 +663,10 @@ github.com/golang-jwt/jwt/v5 v5.3.0 h1:pv4AsKCKKZuqlgs5sUmn4x8UlGa0kEVt/puTpKx9v github.com/golang-jwt/jwt/v5 v5.3.0/go.mod h1:fxCRLWMO43lRc8nhHWY6LGqRcf+1gQWArsqaEUEa5bE= github.com/golang-migrate/migrate/v4 v4.7.0 h1:gONcHxHApDTKXDyLH/H97gEHmpu1zcnnbAaq2zgrPrs= github.com/golang-migrate/migrate/v4 v4.7.0/go.mod h1:Qvut3N4xKWjoH3sokBccML6WyHSnggXm/DvMMnTsQIc= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9 h1:au07oEsX2xN0ktxqI+Sida1w446QrXBRJ0nee3SNZlA= +github.com/golang-sql/civil v0.0.0-20220223132316-b832511892a9/go.mod h1:8vg3r2VgvsThLBIFL93Qb5yWzgyZWhEmBwUJWevAkK0= +github.com/golang-sql/sqlexp v0.1.0 h1:ZCD6MBpcuOVfGVqsEmY5/4FtYiKz6tSyUv9LPEDei6A= +github.com/golang-sql/sqlexp v0.1.0/go.mod h1:J4ad9Vo8ZCWQ2GMrC4UCQy1JpCbwU9m3EOqtpKwwwHI= github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551 h1:gtexQ/VGyN+VVFRXSFiguSNcXmS6rkKT+X7FdIrTtfo= github.com/golang/geo v0.0.0-20210211234256-740aa86cb551/go.mod h1:QZ0nwyI2jOfgRAoBvP+ab5aRr7c9x7lhGEJrKvBwjWI= @@ -660,7 +740,10 @@ github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeN github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8= github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU= +github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +github.com/google/go-github/v70 v70.0.0 h1:/tqCp5KPrcvqCc7vIvYyFYTiCGrYvaWoYMGHSQbo55o= +github.com/google/go-github/v70 v70.0.0/go.mod h1:xBUZgo8MI3lUL/hwxl3hlceJW1U8MVnXP3zUyI+rhQY= github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck= github.com/google/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= @@ -723,8 +806,8 @@ github.com/gorilla/mux v1.8.1 h1:TuBL49tXwgrFYWhqrNgrUNEY92u81SPhu7sTdzQEiWY= github.com/gorilla/mux v1.8.1/go.mod h1:AKf9I4AEqPTmMytcMc0KkNouC66V3BtZ4qD5fmWSiMQ= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 h1:JeSE6pjso5THxAzdVpqr6/geYxZytqFMBCOtn/ujyeo= github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674/go.mod h1:r4w70xmWCQKmi1ONH4KIaBptdivuRPyosB9RmPlGEwA= -github.com/grafana/alerting v0.0.0-20251007160934-e642236ea9eb h1:ejpL3pI9t1ebEFtxaP7TMDKZagCu1nSq1O8op+sO4DY= -github.com/grafana/alerting v0.0.0-20251007160934-e642236ea9eb/go.mod h1:VGjS5gDwWEADPP6pF/drqLxEImgeuHlEW5u8E5EfIrM= +github.com/grafana/alerting v0.0.0-20251009192429-9427c24835ae h1:NLPwY3tIP0lg0g9wTRiMcypm6VRXW6W+MOLBsq8JSVA= +github.com/grafana/alerting v0.0.0-20251009192429-9427c24835ae/go.mod h1:VGjS5gDwWEADPP6pF/drqLxEImgeuHlEW5u8E5EfIrM= github.com/grafana/authlib v0.0.0-20250930082137-a40e2c2b094f h1:Cbm6OKkOcJ+7CSZsGsEJzktC/SIa5bxVeYKQLuYK86o= github.com/grafana/authlib v0.0.0-20250930082137-a40e2c2b094f/go.mod h1:axY0cdOg3q0TZHwpHnIz5x16xZ8ZBxJHShsSHHXcHQg= github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 h1:qEwZ+7MbPjzRvTi31iT9w7NBhKIpKwZrFbYmOZLqkwA= @@ -735,30 +818,54 @@ github.com/grafana/dataplane/sdata v0.0.9 h1:AGL1LZnCUG4MnQtnWpBPbQ8ZpptaZs14w6k github.com/grafana/dataplane/sdata v0.0.9/go.mod h1:Jvs5ddpGmn6vcxT7tCTWAZ1mgi4sbcdFt9utQx5uMAU= github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4 h1:jSojuc7njleS3UOz223WDlXOinmuLAIPI0z2vtq8EgI= github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4/go.mod h1:VahT+GtfQIM+o8ht2StR6J9g+Ef+C2Vokh5uuSmOD/4= +github.com/grafana/e2e v0.1.1 h1:/b6xcv5BtoBnx8cZnCiey9DbjEc8z7gXHO5edoeRYxc= +github.com/grafana/e2e v0.1.1/go.mod h1:RpNLgae5VT+BUHvPE+/zSypmOXKwEu4t+tnEMS1ATaE= +github.com/grafana/gofpdf v0.0.0-20250307124105-3b9c5d35577f h1:5xkjl5Y/j2QefJKOtTfyD1wXlVsQ2yEXmd0u82h5obs= +github.com/grafana/gofpdf v0.0.0-20250307124105-3b9c5d35577f/go.mod h1:+O5QxOwwgP10jedZHapzXY+IPKTnzHBtIs5UUb9G+kI= +github.com/grafana/gomemcache v0.0.0-20250828162811-a96f6acee2fe h1:q+QaVANzNZxvTovycpQvDTfsNZ2rHh4XIIaccMnrIR4= +github.com/grafana/gomemcache v0.0.0-20250828162811-a96f6acee2fe/go.mod h1:j/s0jkda4UXTemDs7Pgw/vMT06alWc42CHisvYac0qw= github.com/grafana/grafana-app-sdk v0.46.0 h1:gvzQvCQgZJ/73BfAcbDt/6TAMhnVikVPxZt/UwDl+oc= github.com/grafana/grafana-app-sdk v0.46.0/go.mod h1:LCTrqR1SwBS13XGVYveBmM7giJDDjzuXK+M9VzPuPWc= github.com/grafana/grafana-app-sdk/logging v0.45.0 h1:0SH6nYZpiLBZRwUq4J6+1vo8xuHKJjnO95/2pGOoA8w= github.com/grafana/grafana-app-sdk/logging v0.45.0/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana-aws-sdk v1.2.0 h1:LLR4/g91WBuCRwm2cbWfCREq565+GxIFe08nqqIcIuw= github.com/grafana/grafana-aws-sdk v1.2.0/go.mod h1:bBo7qOmM3f61vO+2JxTolNUph1l2TmtzmWcU9/Im+8A= -github.com/grafana/grafana-azure-sdk-go/v2 v2.2.0 h1:0TYrkzAc3u0HX+9GK86cGrLTUAcmQfl3/LEB3tL+SOA= -github.com/grafana/grafana-azure-sdk-go/v2 v2.2.0/go.mod h1:H9sVh9A4yg5egMGZeh0mifxT1Q/uqwKe1LBjBJU6pN8= +github.com/grafana/grafana-azure-sdk-go/v2 v2.3.1 h1:FFcEA01tW+SmuJIuDbHOdgUBL+d7DPrZ2N4zwzPhfGk= +github.com/grafana/grafana-azure-sdk-go/v2 v2.3.1/go.mod h1:Oi4anANlCuTCc66jCyqIzfVbgLXFll8Wja+Y4vfANlc= +github.com/grafana/grafana-cloud-migration-snapshot v1.9.0 h1:JOzchPgptwJdruYoed7x28lFDwhzs7kssResYsnC0iI= +github.com/grafana/grafana-cloud-migration-snapshot v1.9.0/go.mod h1:nOHgq4Oa829qmBKA5KIXw5Ipo3rhLs0d6A8UI9Nw8Zk= +github.com/grafana/grafana-google-sdk-go v0.4.2 h1:F44hQF1y6UVJhlJPi+Mz+GCJsioVgezEgPMMEQbUZRo= +github.com/grafana/grafana-google-sdk-go v0.4.2/go.mod h1:U73+w9DlbEtUonhQUzERwlXnzWTtfRoyrtKH8d3VY40= +github.com/grafana/grafana-openapi-client-go v0.0.0-20231213163343-bd475d63fb79 h1:r+mU5bGMzcXCRVAuOrTn54S80qbfVkvTdUJZfSfTNbs= +github.com/grafana/grafana-openapi-client-go v0.0.0-20231213163343-bd475d63fb79/go.mod h1:wc6Hbh3K2TgCUSfBC/BOzabItujtHMESZeFk5ZhdxhQ= github.com/grafana/grafana-plugin-sdk-go v0.279.0 h1:/KCrsZkj9pEGwIGovqAz1A8rjI2A2YT+ZpvgfZN0LAA= github.com/grafana/grafana-plugin-sdk-go v0.279.0/go.mod h1:/7oGN6Z7DGTGaLHhgIYrRr6Wvmdsb3BLw5hL4Kbjy88= github.com/grafana/grafana/pkg/promlib v0.0.8 h1:VUWsqttdf0wMI4j9OX9oNrykguQpZcruudDAFpJJVw0= github.com/grafana/grafana/pkg/promlib v0.0.8/go.mod h1:U1ezG/MGaEPoThqsr3lymMPN5yIPdVTJnDZ+wcXT+ao= github.com/grafana/grafana/pkg/semconv v0.0.0-20250804150913-990f1c69ecc2 h1:A65jWgLk4Re28gIuZcpC0aTh71JZ0ey89hKGE9h543s= github.com/grafana/grafana/pkg/semconv v0.0.0-20250804150913-990f1c69ecc2/go.mod h1:2HRzUK/xQEYc+8d5If/XSusMcaYq9IptnBSHACiQcOQ= +github.com/grafana/jsonparser v0.0.0-20240425183733-ea80629e1a32 h1:NznuPwItog+rwdVg8hAuGKP29ndRSzJAwhxKldkP8oQ= +github.com/grafana/jsonparser v0.0.0-20240425183733-ea80629e1a32/go.mod h1:796sq+UcONnSlzA3RtlBZ+b/hrerkZXiEmO8oMjyRwY= +github.com/grafana/loki/pkg/push v0.0.0-20250823105456-332df2b20000 h1:/5LKSYgLmAhwA4m6iGUD4w1YkydEWWjazn9qxCFT8W0= +github.com/grafana/loki/pkg/push v0.0.0-20250823105456-332df2b20000/go.mod h1:/ZklAgE1i4f3Z8uriXwESmCr1VLF8lBGaJspuaGuf78= +github.com/grafana/loki/v3 v3.2.1 h1:VB7u+KHfvL5aHAxgoVBvz5wVhsdGuqKC7uuOFOOe7jw= +github.com/grafana/loki/v3 v3.2.1/go.mod h1:WvdLl6wOS+yahaeQY+xhD2m2XzkHDfKr5FZaX7D/X2Y= +github.com/grafana/nanogit v0.0.0-20250723104447-68f58f5ecec0 h1:cS0SlJGIlZbmDLctNj5vIYGemrJDLy25wwoiIyZWVN8= +github.com/grafana/nanogit v0.0.0-20250723104447-68f58f5ecec0/go.mod h1:ToqLjIdvV3AZQa3K6e5m9hy/nsGaUByc2dWQlctB9iA= github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF3YH66t4qL8= github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= github.com/grafana/prometheus-alertmanager v0.25.1-0.20250911094103-5456b6e45604 h1:aXfUhVN/Ewfpbko2CCtL65cIiGgwStOo4lWH2b6gw2U= github.com/grafana/prometheus-alertmanager v0.25.1-0.20250911094103-5456b6e45604/go.mod h1:O/QP1BCm0HHIzbKvgMzqb5sSyH88rzkFk84F4TfJjBU= -github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= -github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= +github.com/grafana/pyroscope/api v1.2.1-0.20250415190842-3ff7247547ae h1:35W3Wjp9KWnSoV/DuymmyIj5aHE0CYlDQ5m2KeXUPAc= +github.com/grafana/pyroscope/api v1.2.1-0.20250415190842-3ff7247547ae/go.mod h1:6CJ1uXmLZ13ufpO9xE4pST+DyaBt0uszzrV0YnoaVLQ= github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc/go.mod h1:+JKpmjMGhpgPL+rXZ5nsZieVzvarn86asRlBg4uNGnk= github.com/grafana/sqlds/v4 v4.2.7 h1:sFQhsS7DBakNMdxa++yOfJ9BVvkZwFJ0B95o57K0/XA= github.com/grafana/sqlds/v4 v4.2.7/go.mod h1:BQRjUG8rOqrBI4NAaeoWrIMuoNgfi8bdhCJ+5cgEfLU= +github.com/grafana/tempo v1.5.1-0.20250529124718-87c2dc380cec h1:wnzJov9RhSHGaTYGzTygL4qq986fLen8xSqnQgaMd28= +github.com/grafana/tempo v1.5.1-0.20250529124718-87c2dc380cec/go.mod h1:j1IY7J2rUz7TcTjFVVx6HCpyTlYOJPtXuGRZ7sI+vSo= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= @@ -808,6 +915,12 @@ github.com/hashicorp/go-retryablehttp v0.7.8 h1:ylXZWnqa7Lhqpk0L1P1LzDtGcCR0rPVU github.com/hashicorp/go-retryablehttp v0.7.8/go.mod h1:rjiScheydd+CxvumBsIrFKlx3iS0jrZ7LvzFGFmuKbw= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0 h1:U+kC2dOhMFQctRfhK0gRctKAPTloZdMU5ZJxaesJ/VM= +github.com/hashicorp/go-secure-stdlib/parseutil v0.2.0/go.mod h1:Ll013mhdmsVDuoIXVfBtvgGJsXDYkTw1kooNcoCXuE0= +github.com/hashicorp/go-secure-stdlib/plugincontainer v0.4.2 h1:gCNiM4T5xEc4IpT8vM50CIO+AtElr5kO9l2Rxbq+Sz8= +github.com/hashicorp/go-secure-stdlib/plugincontainer v0.4.2/go.mod h1:6ZM4ZdwClyAsiU2uDBmRHCvq0If/03BMbF9U+U7G5pA= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= +github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25LAKCLuM+y9U2T4hlwvT1yprcna4= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-sockaddr v1.0.7 h1:G+pTkSO01HpR5qCxg7lxfsFEZaG+C0VssTy/9dbT+Fw= github.com/hashicorp/go-sockaddr v1.0.7/go.mod h1:FZQbEYa1pxkQ7WLpyXJ6cbjpT8q0YgQaK/JakXqGyWw= @@ -825,7 +938,10 @@ github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iP github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k= github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/hcl/v2 v2.24.0 h1:2QJdZ454DSsYGoaE6QheQZjtKZSUs9Nh2izTWiwQxvE= +github.com/hashicorp/hcl/v2 v2.24.0/go.mod h1:oGoO1FIQYfn/AgyOhlg9qLC6/nOJPX3qGbkZpYAcqfM= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= @@ -835,6 +951,8 @@ github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpT github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= github.com/hashicorp/serf v0.10.2 h1:m5IORhuNSjaxeljg5DeQVDlQyVkhRIjJDimbkCa8aAc= github.com/hashicorp/serf v0.10.2/go.mod h1:T1CmSGfSeGfnfNy/w0odXQUR1rfECGd2Qdsp84DjOiY= +github.com/hashicorp/vault/api v1.16.0 h1:nbEYGJiAPGzT9U4oWgaaB0g+Rj8E59QuHKyA5LhwQN4= +github.com/hashicorp/vault/api v1.16.0/go.mod h1:KhuUhzOD8lDSk29AtzNjgAu2kxRA9jL9NAbkFlqvkBA= github.com/hashicorp/yamux v0.1.2 h1:XtB8kyFOyHXYVFnwT5C3+Bdo8gArse7j2AQ0DA0Uey8= github.com/hashicorp/yamux v0.1.2/go.mod h1:C+zze2n6e/7wshOZep2A70/aQU6QBRWJO/G6FT1wIns= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= @@ -846,6 +964,12 @@ github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANyt github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/influxdata/influxdb v1.7.6/go.mod h1:qZna6X/4elxqT3yI9iZYdZrWWdeFOOprn86kgg4+IzY= +github.com/influxdata/influxdb-client-go/v2 v2.13.0 h1:ioBbLmR5NMbAjP4UVA5r9b5xGjpABD7j65pI8kFphDM= +github.com/influxdata/influxdb-client-go/v2 v2.13.0/go.mod h1:k+spCbt9hcvqvUiz0sr5D8LolXHqAAOfPw9v/RIRHl4= +github.com/influxdata/influxql v1.4.0 h1:Lf62rbAF8KWQf+4Djqf4hVXgmQuGozUoSD6kNWjye44= +github.com/influxdata/influxql v1.4.0/go.mod h1:VqxAKyQz5p8GzgGsxWalCWYGxEqw6kvJo2IickMQiQk= +github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf h1:7JTmneyiNEwVBOHSjoMxiWAqB992atOeepeFYegn5RU= +github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= github.com/invopop/jsonschema v0.13.0 h1:KvpoAJWEjR3uD9Kbm2HWJmqsEaHt8lBUpd0qHcIi21E= github.com/invopop/jsonschema v0.13.0/go.mod h1:ffZ5Km5SWWRAIN6wbDXItl95euhFz2uON45H2qjYt+0= github.com/jackc/fake v0.0.0-20150926172116-812a484cc733/go.mod h1:WrMFNQdiFJ80sQsxDoMokWK1W5TQtxBFNpzWTD84ibQ= @@ -858,8 +982,22 @@ github.com/jackc/pgx/v5 v5.7.6 h1:rWQc5FwZSPX58r1OQmkuaNicxdmExaEz5A2DO2hUuTk= github.com/jackc/pgx/v5 v5.7.6/go.mod h1:aruU7o91Tc2q2cFp5h4uP3f6ztExVpyVv88Xl/8Vl8M= github.com/jackc/puddle/v2 v2.2.2 h1:PR8nw+E/1w0GLuRFSmiioY6UooMp6KJv0/61nB7icHo= github.com/jackc/puddle/v2 v2.2.2/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jaegertracing/jaeger v1.67.0 h1:t0BiJZVW9D3Z16y3uHqKzV9bKFTusooTH1Kgr77xF2Q= +github.com/jaegertracing/jaeger v1.67.0/go.mod h1:tE/FEQfybCSdUbBgel51YaCSkc58O+Njih8oTl6j8vw= github.com/jaegertracing/jaeger-idl v0.5.0 h1:zFXR5NL3Utu7MhPg8ZorxtCBjHrL3ReM1VoB65FOFGE= github.com/jaegertracing/jaeger-idl v0.5.0/go.mod h1:ON90zFo9eoyXrt9F/KN8YeF3zxcnujaisMweFY/rg5k= +github.com/jcmturner/aescts/v2 v2.0.0 h1:9YKLH6ey7H4eDBXW8khjYslgyqG2xZikXP0EQFKrle8= +github.com/jcmturner/aescts/v2 v2.0.0/go.mod h1:AiaICIRyfYg35RUkr8yESTqvSy7csK90qZ5xfvvsoNs= +github.com/jcmturner/dnsutils/v2 v2.0.0 h1:lltnkeZGL0wILNvrNiVCR6Ro5PGU/SeBvVO/8c/iPbo= +github.com/jcmturner/dnsutils/v2 v2.0.0/go.mod h1:b0TnjGOvI/n42bZa+hmXL+kFJZsFT7G4t3HTlQ184QM= +github.com/jcmturner/gofork v1.7.6 h1:QH0l3hzAU1tfT3rZCnW5zXl+orbkNMMRGJfdJjHVETg= +github.com/jcmturner/gofork v1.7.6/go.mod h1:1622LH6i/EZqLloHfE7IeZ0uEJwMSUyQ/nDd82IeqRo= +github.com/jcmturner/goidentity/v6 v6.0.1 h1:VKnZd2oEIMorCTsFBnJWbExfNN7yZr3EhJAxwOkZg6o= +github.com/jcmturner/goidentity/v6 v6.0.1/go.mod h1:X1YW3bgtvwAXju7V3LCIMpY0Gbxyjn/mY9zx4tFonSg= +github.com/jcmturner/gokrb5/v8 v8.4.4 h1:x1Sv4HaTpepFkXbt2IkL29DXRf8sOfZXo8eRKh687T8= +github.com/jcmturner/gokrb5/v8 v8.4.4/go.mod h1:1btQEpgT6k+unzCwX1KdWMEwPPkkgBtP+F6aCACiMrs= +github.com/jcmturner/rpc/v2 v2.0.3 h1:7FXXj8Ti1IaVFpSAziCZWNzbNuZmnvw/i6CqLNdWfZY= +github.com/jcmturner/rpc/v2 v2.0.3/go.mod h1:VUJYCIDm3PVOEHw8sgt091/20OJjskO/YJki3ELg/Hc= github.com/jessevdk/go-flags v1.6.1 h1:Cvu5U8UGrLay1rZfv/zP7iLpSHGUZ/Ou68T0iX1bBK4= github.com/jessevdk/go-flags v1.6.1/go.mod h1:Mk8T1hIAWpOiJiHa9rJASDK2UGWji0EuPGBnNLMooyc= github.com/jhump/gopoet v0.0.0-20190322174617-17282ff210b3/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= @@ -881,6 +1019,8 @@ github.com/jonboulle/clockwork v0.5.0 h1:Hyh9A8u51kptdkR+cqRpT1EebBwTn1oK9YfGYbd github.com/jonboulle/clockwork v0.5.0/go.mod h1:3mZlmanh0g2NDKO5TWZVJAfofYk64M7XN3SzBPjZF60= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= +github.com/joshlf/go-acl v0.0.0-20200411065538-eae00ae38531 h1:hgVxRoDDPtQE68PT4LFvNlPz2nBKd3OMlGKIQ69OmR4= +github.com/joshlf/go-acl v0.0.0-20200411065538-eae00ae38531/go.mod h1:fqTUQpVYBvhCNIsMXGl2GE9q6z94DIP6NtFKXCSTVbg= github.com/jpillora/backoff v1.0.0 h1:uvFg412JmmHBHw7iwprIxkPMI+sGQ4kzOWsMeHnm2EA= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= @@ -945,6 +1085,8 @@ github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw= github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/m3db/prometheus_remote_client_golang v0.4.4 h1:DsAIjVKoCp7Ym35tAOFL1OuMLIdIikAEHeNPHY+yyM8= +github.com/m3db/prometheus_remote_client_golang v0.4.4/go.mod h1:wHfVbA3eAK6dQvKjCkHhusWYegCk3bDGkA15zymSHdc= github.com/madflojo/testcerts v1.1.1 h1:YsSHWV79nMNZK0mJtwXjKoYHjJEbLPFefR8TxmmWupY= github.com/madflojo/testcerts v1.1.1/go.mod h1:MW8sh39gLnkKh4K0Nc55AyHEDl9l/FBLDUsQhpmkuo0= github.com/magefile/mage v1.15.0 h1:BvGheCMAsG3bWUDbZ8AyXXpCNwU9u5CB6sM+HNb9HYg= @@ -955,6 +1097,8 @@ github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4 github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU= github.com/mattbaird/jsonpatch v0.0.0-20240118010651-0ba75a80ca38 h1:hQWBtNqRYrI7CWIaUSXXtNKR90KzcUA5uiuxFVWw7sU= github.com/mattbaird/jsonpatch v0.0.0-20240118010651-0ba75a80ca38/go.mod h1:M1qoD/MqPgTZIk0EWKB38wE28ACRfVcn+cU08jyArI0= +github.com/mattermost/xml-roundtrip-validator v0.1.0 h1:RXbVD2UAl7A7nOTR4u7E3ILa4IbtvKBHw64LDsmu9hU= +github.com/mattermost/xml-roundtrip-validator v0.1.0/go.mod h1:qccnGMcpgwcNaBnxqpJpWWUiPNr5H3O8eDgGV9gT5To= github.com/mattetti/filebuffer v1.0.1 h1:gG7pyfnSIZCxdoKq+cPa8T0hhYtD9NxCdI4D7PTjRLM= github.com/mattetti/filebuffer v1.0.1/go.mod h1:YdMURNDOttIiruleeVr6f56OrMc+MydEnTcXwtkxNVs= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= @@ -965,6 +1109,8 @@ github.com/mattn/go-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= github.com/mattn/go-colorable v0.1.14 h1:9A9LHSqF/7dyVVX6g0U9cwm9pG3kP9gSzcuIPHPsaIE= github.com/mattn/go-colorable v0.1.14/go.mod h1:6LmQG8QLFO4G5z1gPvYEzlUgJ2wF+stgPZH1UqBm1s8= +github.com/mattn/go-ieproxy v0.0.12 h1:OZkUFJC3ESNZPQ+6LzC3VJIFSnreeFLQyqvBWtvfL2M= +github.com/mattn/go-ieproxy v0.0.12/go.mod h1:Vn+N61199DAnVeTgaF8eoB9PvLO8P3OBnG95ENh7B7c= github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= @@ -983,12 +1129,16 @@ github.com/mattn/go-sqlite3 v1.14.22/go.mod h1:Uh1q+B4BYcTPb+yiD3kU8Ct7aC0hY9fxU github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/matttproud/golang_protobuf_extensions v1.0.4 h1:mmDVorXM7PCGKw94cs5zkfA9PSy5pEvNWRP0ET0TIVo= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= +github.com/maypok86/otter v1.2.4 h1:HhW1Pq6VdJkmWwcZZq19BlEQkHtI8xgsQzBVXJU0nfc= +github.com/maypok86/otter v1.2.4/go.mod h1:mKLfoI7v1HOmQMwFgX4QkRk23mX6ge3RDvjdHOWG4R4= github.com/mdlayher/socket v0.4.1 h1:eM9y2/jlbs1M615oshPQOHZzj6R6wMT7bX5NPiQvn2U= github.com/mdlayher/socket v0.4.1/go.mod h1:cAqeGjoufqdxWkD7DkpyS+wcefOtmu5OQ8KuoJGIReA= github.com/mdlayher/vsock v1.2.1 h1:pC1mTJTvjo1r9n9fbm7S1j04rCgCzhCOS5DY0zqHlnQ= github.com/mdlayher/vsock v1.2.1/go.mod h1:NRfCibel++DgeMD8z/hP+PPTjlNJsdPOmxcnENvE+SE= github.com/mfridman/interpolate v0.0.2 h1:pnuTK7MQIxxFz1Gr+rjSIx9u7qVjf5VOoM/u6BbAxPY= github.com/mfridman/interpolate v0.0.2/go.mod h1:p+7uk6oE07mpE/Ik1b8EckO0O4ZXiGAfshKBWLUM9Xg= +github.com/microsoft/go-mssqldb v1.9.2 h1:nY8TmFMQOHpm2qVWo6y4I2mAmVdZqlGiMGAYt64Ibbs= +github.com/microsoft/go-mssqldb v1.9.2/go.mod h1:GBbW9ASTiDC+mpgWDGKdm3FnFLTUsLYN3iFL90lQ+PA= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/miekg/dns v1.1.63 h1:8M5aAw6OMZfFXTT7K5V0Eu5YiiL8l7nUAkyN6C9YwaY= @@ -1025,8 +1175,10 @@ github.com/mithrandie/ternary v1.1.1 h1:k/joD6UGVYxHixYmSR8EGgDFNONBMqyD373xT4QR github.com/mithrandie/ternary v1.1.1/go.mod h1:0D9Ba3+09K2TdSZO7/bFCC0GjSXetCvYuYq0u8FY/1g= github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0= github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo= -github.com/mocktools/go-smtp-mock/v2 v2.3.1 h1:wq75NDSsOy5oHo/gEQQT0fRRaYKRqr1IdkjhIPXxagM= -github.com/mocktools/go-smtp-mock/v2 v2.3.1/go.mod h1:h9AOf/IXLSU2m/1u4zsjtOM/WddPwdOUBz56dV9f81M= +github.com/moby/spdystream v0.5.0 h1:7r0J1Si3QO/kjRitvSLVVFUjxMEb/YLj6S9FF62JBCU= +github.com/moby/spdystream v0.5.0/go.mod h1:xBAYlnt/ay+11ShkdFKNAG7LsyK/tmNBVvVOwrfMgdI= +github.com/mocktools/go-smtp-mock/v2 v2.5.1 h1:QcMJMChSgG1olVj4o6xxQFdrWzRjYNrcq660HAjd0wA= +github.com/mocktools/go-smtp-mock/v2 v2.5.1/go.mod h1:Rr8M2njlxx//l5INl2+uESnsL2lDsL24teEykCrGfmE= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -1045,6 +1197,8 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f h1:KUppIJq7/+SVif2QVs3tOP0zanoHgBEVAwHxUSIzRqU= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f h1:y5//uYreIhSUg3J1GEMiLbxo1LJaP8RfCpH6pymGZus= +github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f/go.mod h1:ZdcZmHo+o7JKHSa8/e818NopupXU1YMK5fe1lsApnBw= github.com/nakagami/firebirdsql v0.0.0-20190310045651-3c02a58cfed8/go.mod h1:86wM1zFnC6/uDBfZGNwB65O+pR2OFi5q/YQaEUid1qA= github.com/natefinch/wrap v0.2.0 h1:IXzc/pw5KqxJv55gV0lSOcKHYuEZPGbQrOOXr/bamRk= github.com/natefinch/wrap v0.2.0/go.mod h1:6gMHlAl12DwYEfKP3TkuykYUfLSEAvHw67itm4/KAS8= @@ -1053,6 +1207,8 @@ github.com/ncruces/go-strftime v0.1.9/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJm github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= github.com/nikunjy/rules v1.5.0 h1:KJDSLOsFhwt7kcXUyZqwkgrQg5YoUwj+TVu6ItCQShw= github.com/nikunjy/rules v1.5.0/go.mod h1:TlZtZdBChrkqi8Lr2AXocme8Z7EsbxtFdDoKeI6neBQ= +github.com/oapi-codegen/runtime v1.0.0 h1:P4rqFX5fMFWqRzY9M/3YF9+aPSPPB06IzP2P7oOxrWo= +github.com/oapi-codegen/runtime v1.0.0/go.mod h1:LmCUMQuPB4M/nLXilQXhHw+BLZdDb18B34OO356yJ/A= github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037 h1:G7ERwszslrBzRxj//JalHPu/3yz+De2J+4aLtSRlHiY= github.com/oasdiff/yaml v0.0.0-20250309154309-f31be36b4037/go.mod h1:2bpvgLBZEtENV5scfDFEtB/5+1M4hkQhDQrccEJ/qGw= github.com/oasdiff/yaml3 v0.0.0-20250309153720-d2182401db90 h1:bQx3WeLcUWy+RletIKwUIt4x3t8n2SxavmoclizMb8c= @@ -1079,6 +1235,12 @@ github.com/open-feature/go-sdk-contrib/providers/go-feature-flag v0.2.3 h1:6jpO6 github.com/open-feature/go-sdk-contrib/providers/go-feature-flag v0.2.3/go.mod h1:dPUHjAIFzg+ci/wt6XxlNiiMkOh5Yw4SGyeRY0AFT0g= github.com/open-feature/go-sdk-contrib/providers/ofrep v0.1.5 h1:ZdqlGnNwhWf3luhBQlIpbglvcCzjkcuEgOEhYhr5Emc= github.com/open-feature/go-sdk-contrib/providers/ofrep v0.1.5/go.mod h1:jrD4UG3ZCzuwImKHlyuIN2iWeYjlOX5+zJ/sX45efuE= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.124.1 h1:NrjsoVPxI6lmV8jPImDcMeqYh+97Y71f/HB5Sfpfe3I= +github.com/open-telemetry/opentelemetry-collector-contrib/internal/coreinternal v0.124.1/go.mod h1:AFMryJmht7dZxcAwc2sx/r4gxbriElWw49ugxKp2mcA= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/core/xidutils v0.124.1 h1:E1e96GTHmiAfIfeYfA5ZVnOxud3+vbisGp0gE1tfd4s= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/core/xidutils v0.124.1/go.mod h1:MOhFATtYSLad9nKunjh6uGf8nQUcWje2LPlhD2uu3do= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.124.1 h1:9c6L4xlAMqhOg5y54Bc2B5t0i49yz7v2I6I8RY4Z0/o= +github.com/open-telemetry/opentelemetry-collector-contrib/pkg/translator/jaeger v0.124.1/go.mod h1:6f0N58o0cOHC0ApSM/qrooVmQza1eQ7L53PDE91uO1Q= github.com/opencontainers/go-digest v1.0.0-rc1/go.mod h1:cMLVZDEM3+U2I4VmLI6N8jQYUd2OVphdqWwCJHrFt2s= github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= @@ -1091,12 +1253,16 @@ github.com/openfga/language/pkg/go v0.2.0-beta.2.0.20250428093642-7aeebe78bbfe h github.com/openfga/language/pkg/go v0.2.0-beta.2.0.20250428093642-7aeebe78bbfe/go.mod h1:5Z0pbTT7Jz/oQFLfadb+C5t5NwHrduAO7j7L07Ec1GM= github.com/openfga/openfga v1.10.0 h1:Ieq4fjJeT3KrxRiekgCnp9VCoXXnBvYITcTR35SPlYY= github.com/openfga/openfga v1.10.0/go.mod h1:6/m4GTwQsqECsGYQVD3t5sCX97rh3smnmxbMa3YAtJk= +github.com/opentracing-contrib/go-grpc v0.1.1 h1:Ws7IN1zyiL1DFqKQPhRXuKe5pLYzMfdxnC1qtajE2PE= +github.com/opentracing-contrib/go-grpc v0.1.1/go.mod h1:Nu6sz+4zzgxXu8rvKfnwjBEmHsuhTigxRwV2RhELrS8= github.com/opentracing-contrib/go-stdlib v1.0.0 h1:TBS7YuVotp8myLon4Pv7BtCBzOTo1DeZCld0Z63mW2w= github.com/opentracing-contrib/go-stdlib v1.0.0/go.mod h1:qtI1ogk+2JhVPIXVc6q+NHziSmy2W5GbdQZFUHADCBU= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs= github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc= github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw= +github.com/openzipkin/zipkin-go v0.4.3 h1:9EGwpqkgnwdEIJ+Od7QVSEIH+ocmm5nPat0G7sjsSdg= +github.com/openzipkin/zipkin-go v0.4.3/go.mod h1:M9wCJZFWCo2RiY+o1eBCEMe0Dp2S5LDHcMZmk3RmK7c= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -1110,9 +1276,13 @@ github.com/pelletier/go-toml/v2 v2.2.4 h1:mye9XuhQ6gvn5h28+VilKrrPoQVanw5PMw/TB0 github.com/pelletier/go-toml/v2 v2.2.4/go.mod h1:2gIqNv+qfxSVS7cM2xJQKtLSTLUE9V8t9Stt+h56mCY= github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s= github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw= +github.com/phpdave11/gofpdi v1.0.14 h1:jlcDIJ6ObCh3X9nANGEK6RY5wbUKHJ5unBjrzG4i89A= +github.com/phpdave11/gofpdi v1.0.14/go.mod h1:vBmVV0Do6hSBHC8uKUQ71JGW+ZGQq74llk/7bXwjDoI= github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= github.com/pierrec/lz4/v4 v4.1.22 h1:cKFw6uJDK+/gfw5BcDL0JL5aBsAFdsIT18eRtLj7VIU= github.com/pierrec/lz4/v4 v4.1.22/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pires/go-proxyproto v0.7.0 h1:IukmRewDQFWC7kfnb66CSomk2q/seBuilHBYFwyq0Hs= +github.com/pires/go-proxyproto v0.7.0/go.mod h1:Vz/1JPY/OACxWGQNIRY2BeyDmpoaWmEP40O9LbuiFR4= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c h1:+mdjkGKdHQG3305AYmdv1U2eRNDiU2ErMBj1gwrq8eQ= github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c/go.mod h1:7rwL4CYBLnjLxUqIJNnCWiEdr3bn6IUYi15bNlnbCCU= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -1179,14 +1349,20 @@ github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d h1:HWfigq github.com/protocolbuffers/txtpbfmt v0.0.0-20241112170944-20d2c9ebc01d/go.mod h1:jgxiZysxFPM+iWKwQwPR+y+Jvo54ARd4EisXxKYpB5c= github.com/puzpuzpuz/xsync/v2 v2.5.1 h1:mVGYAvzDSu52+zaGyNjC+24Xw2bQi3kTr4QJ6N9pIIU= github.com/puzpuzpuz/xsync/v2 v2.5.1/go.mod h1:gD2H2krq/w52MfPLE+Uy64TzJDVY7lP2znR9qmR35kU= +github.com/puzpuzpuz/xsync/v4 v4.2.0 h1:dlxm77dZj2c3rxq0/XNvvUKISAmovoXF4a4qM6Wvkr0= +github.com/puzpuzpuz/xsync/v4 v4.2.0/go.mod h1:VJDmTCJMBt8igNxnkQd86r+8KUeN1quSfNKu5bLYFQo= github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4= github.com/redis/go-redis/v9 v9.14.0 h1:u4tNCjXOyzfgeLN+vAZaW1xUooqWDqVEsZN0U01jfAE= github.com/redis/go-redis/v9 v9.14.0/go.mod h1:huWgSWd8mW6+m0VPhJjSSQ+d6Nh1VICQ6Q5lHuCH/Iw= +github.com/redis/rueidis v1.0.64 h1:XqgbueDuNV3qFdVdQwAHJl1uNt90zUuAJuzqjH4cw6Y= +github.com/redis/rueidis v1.0.64/go.mod h1:Lkhr2QTgcoYBhxARU7kJRO8SyVlgUuEkcJO1Y8MCluA= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE= github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ= github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= +github.com/robfig/cron/v3 v3.0.1 h1:WdRxkvbJztn8LMz/QEvLN5sBU+xKpSqwwUO1Pjr4qDs= +github.com/robfig/cron/v3 v3.0.1/go.mod h1:eQICP3HwyT7UooqI/z+Ov+PtYAWygg1TEWWzGIFLtro= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= @@ -1194,19 +1370,33 @@ github.com/rogpeppe/go-internal v1.14.1 h1:UQB4HGPB6osV0SQTLymcB4TgvyWu6ZyliaW0t github.com/rogpeppe/go-internal v1.14.1/go.mod h1:MaRKkUm5W0goXpeCfT7UZI6fk/L7L7so1lCWt35ZSgc= github.com/rs/cors v1.11.1 h1:eU3gRzXLRK57F5rKMGMZURNdIG4EoAmX8k94r9wXWHA= github.com/rs/cors v1.11.1/go.mod h1:XyqrcTp5zjWr1wsJ8PIRZssZ8b/WMcMf71DJnit4EMU= +github.com/russellhaering/goxmldsig v1.4.0 h1:8UcDh/xGyQiyrW+Fq5t8f+l2DLB1+zlhYzkPUJ7Qhys= +github.com/russellhaering/goxmldsig v1.4.0/go.mod h1:gM4MDENBQf7M+V824SGfyIUVFWydB7n0KkEubVJl+Tw= github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkBk= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sagikazarmark/crypt v0.6.0/go.mod h1:U8+INwJo3nBv1m6A/8OBXAq7Jnpspk5AxSgDyEQcea8= github.com/sagikazarmark/locafero v0.11.0 h1:1iurJgmM9G3PA/I+wWYIOw/5SyBtxapeHDcg+AAIFXc= github.com/sagikazarmark/locafero v0.11.0/go.mod h1:nVIGvgyzw595SUSUE6tvCp3YYTeHs15MvlmU87WwIik= github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529 h1:nn5Wsu0esKSJiIVhscUtVbo7ada43DJhG55ua/hjS5I= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/segmentio/asm v1.2.0 h1:9BQrFxC+YOHJlTlHGkTrFWf59nbL3XnCoFLTwDCI7ys= +github.com/segmentio/asm v1.2.0/go.mod h1:BqMnlJP91P8d+4ibuonYZw9mfnzI9HfxselHZr5aAcs= +github.com/segmentio/encoding v0.5.3 h1:OjMgICtcSFuNvQCdwqMCv9Tg7lEOXGwm1J5RPQccx6w= +github.com/segmentio/encoding v0.5.3/go.mod h1:HS1ZKa3kSN32ZHVZ7ZLPLXWvOVIiZtyJnO1gPH1sKt0= +github.com/sercand/kuberesolver/v6 v6.0.0 h1:ScvS2Ga9snVkpOahln/BCLySr3/iBAHJf25u66DweZ0= +github.com/sercand/kuberesolver/v6 v6.0.0/go.mod h1:Dxkqms3OJadP5zirIBPLi9FV8Qpys3T3w40XPEcVsu0= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3 h1:n661drycOFuPLCN3Uc8sB6B/s6Z4t2xvBgU1htSHuq8= +github.com/sergi/go-diff v1.3.2-0.20230802210424-5b0b94c5c0d3/go.mod h1:A0bzQcvG0E7Rwjx0REVgAGH58e96+X0MeOfepqsbeW4= github.com/sethvargo/go-retry v0.3.0 h1:EEt31A35QhrcRZtrYFDTBg91cqZVnFL2navjDrah2SE= github.com/sethvargo/go-retry v0.3.0/go.mod h1:mNX17F0C/HguQMyMyJxcnU471gOZGxCLyYaFyAZraas= +github.com/shadowspore/fossil-delta v0.0.0-20241213113458-1d797d70cbe3 h1:/4/IJi5iyTdh6mqOUaASW148HQpujYiHl0Wl78dSOSc= +github.com/shadowspore/fossil-delta v0.0.0-20241213113458-1d797d70cbe3/go.mod h1:aJIMhRsunltJR926EB2MUg8qHemFQDreSB33pyto2Ps= github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= github.com/shopspring/decimal v1.4.0 h1:bxl37RwXBklmTi0C79JfXCEBD1cqqHt0bbgBAGFp81k= github.com/shopspring/decimal v1.4.0/go.mod h1:gawqmDU56v4yIKSwfBSFip1HdCCXN8/+DMd9qYNcwME= @@ -1229,6 +1419,8 @@ github.com/smartystreets/goconvey v1.8.1 h1:qGjIddxOk4grTu9JPOU31tVfq3cNdBlNa5sS github.com/smartystreets/goconvey v1.8.1/go.mod h1:+/u4qLyY6x1jReYOp7GOM2FSt8aP9CzCZL03bI28W60= github.com/soheilhy/cmux v0.1.5 h1:jjzc5WVemNEDTLwv9tlmemhC73tI08BNOIGwBOo10Js= github.com/soheilhy/cmux v0.1.5/go.mod h1:T7TcVDs9LWfQgPlPsdngu6I6QIoyIFZDDC6sNE1GqG0= +github.com/sony/gobreaker v0.5.0 h1:dRCvqm0P490vZPmy7ppEk2qCnCieBooFJ+YoXGYB+yg= +github.com/sony/gobreaker v0.5.0/go.mod h1:ZKptC7FHNvhBz7dN2LGjPVBz2sZJmc0/PkyDJOjmxWY= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8 h1:+jumHNA0Wrelhe64i8F6HNlS8pkoyMv5sreGx2Ry5Rw= github.com/sourcegraph/conc v0.3.1-0.20240121214520-5f936abd7ae8/go.mod h1:3n1Cwaq1E1/1lhQhtRK2ts/ZwZEhjcQeJQ1RuC6Q/8U= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= @@ -1256,6 +1448,8 @@ github.com/spf13/viper v1.21.0 h1:x5S+0EU27Lbphp4UKm1C+1oQO+rKx36vfCoaVebLFSU= github.com/spf13/viper v1.21.0/go.mod h1:P0lhsswPGWD/1lZJ9ny3fYnVqxiegrlNrEmgLjbTCAY= github.com/spiffe/go-spiffe/v2 v2.5.0 h1:N2I01KCUkv1FAjZXJMwh95KK1ZIQLYbPfhaxw8WS0hE= github.com/spiffe/go-spiffe/v2 v2.5.0/go.mod h1:P+NxobPc6wXhVtINNtFjNWGBTreew1GBUCwT2wPmb7g= +github.com/spyzhov/ajson v0.9.6 h1:iJRDaLa+GjhCDAt1yFtU/LKMtLtsNVKkxqlpvrHHlpQ= +github.com/spyzhov/ajson v0.9.6/go.mod h1:a6oSw0MMb7Z5aD2tPoPO+jq11ETKgXUr2XktHdT8Wt8= github.com/stoewer/go-strcase v1.3.1 h1:iS0MdW+kVTxgMoE1LAZyMiYJFKlOzLooE4MxjirtkAs= github.com/stoewer/go-strcase v1.3.1/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= @@ -1295,6 +1489,8 @@ github.com/tjhop/slog-gokit v0.1.3/go.mod h1:Bbu5v2748qpAWH7k6gse/kw3076IJf6owJm github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75 h1:6fotK7otjonDflCTK0BCfls4SPy3NcCVb5dqqmbRknE= github.com/tmc/grpc-websocket-proxy v0.0.0-20220101234140-673ab2c3ae75/go.mod h1:KO6IkyS8Y3j8OdNO85qEYBsRPuteD+YciPomcXdrMnk= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/ua-parser/uap-go v0.0.0-20250213224047-9c035f085b90 h1:rB0J+hLNltG1Qv+UF+MkdFz89XMps5BOAFJN4xWjc+s= +github.com/ua-parser/uap-go v0.0.0-20250213224047-9c035f085b90/go.mod h1:BUbeWZiieNxAuuADTBNb3/aeje6on3DhU3rpWsQSB1E= github.com/uber/jaeger-client-go v2.30.0+incompatible h1:D6wyKGCecFaSRUpo8lCVbaOOb6ThwMmTEbhRwtKR97o= github.com/uber/jaeger-client-go v2.30.0+incompatible/go.mod h1:WVhlPFC8FDjOFMMWRy2pZqQJSXxYSwNYOkTr/Z6d3Kk= github.com/uber/jaeger-lib v2.4.1+incompatible h1:td4jdvLcExb4cBISKIpHuGoVXh+dVKhn2Um6rjCsSsg= @@ -1312,6 +1508,12 @@ github.com/unknwon/log v0.0.0-20200308114134-929b1006e34a/go.mod h1:1xEUf2abjfP9 github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/urfave/cli v1.22.17 h1:SYzXoiPfQjHBbkYxbew5prZHS1TOLT3ierW8SYLqtVQ= github.com/urfave/cli v1.22.17/go.mod h1:b0ht0aqgH/6pBYzzxURyrM4xXNgsoT/n2ZzwQiEhNVo= +github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= +github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= +github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/wk8/go-ordered-map v1.0.0 h1:BV7z+2PaK8LTSd/mWgY12HyMAo5CEgkHqbkVq2thqr8= +github.com/wk8/go-ordered-map v1.0.0/go.mod h1:9ZIbRunKbuvfPKyBP1SIKLcXNlv74YCOZ3t3VTS6gRk= github.com/wk8/go-ordered-map/v2 v2.1.8 h1:5h/BUHu93oj4gIdvHHHGsScSTMijfx5PeYkE/fJgbpc= github.com/wk8/go-ordered-map/v2 v2.1.8/go.mod h1:5nJHM5DyteebpVlHnWMV0rPz6Zp7+xBAnxjb1X5vnTw= github.com/woodsbury/decimal128 v1.3.0 h1:8pffMNWIlC0O5vbyHWFZAt5yWvWcrHA+3ovIIjVWss0= @@ -1323,12 +1525,24 @@ github.com/xdg/scram v0.0.0-20180814205039-7eeb5667e42c/go.mod h1:lB8K/P019DLNhe github.com/xdg/stringprep v1.0.0/go.mod h1:Jhud4/sHMO4oL310DaZAKk9ZaJ08SJfe+sJh0HrGL1Y= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510 h1:S2dVYn90KE98chqDkyE9Z4N61UnQd+KOfgp5Iu53llk= github.com/xiang90/probing v0.0.0-20221125231312-a49e3df8f510/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= +github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 h1:gEOO8jv9F4OT7lGCjxCBTO/36wtF6j2nSip77qHd4x4= +github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1/go.mod h1:Ohn+xnUBiLI6FVj/9LpzZWtj1/D6lUovWYBkxHVV3aM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 h1:ilQV1hzziu+LLM3zUTJ0trRztfwgjqKnBWNtSRkbmwM= +github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78/go.mod h1:aL8wCCfTfSfmXjznFBSZNN13rSJjlIOI1fUNAtF7rmI= +github.com/yudai/gojsondiff v1.0.0 h1:27cbfqXLVEJ1o8I6v3y9lg8Ydm53EKqHXAOMxEGlCOA= +github.com/yudai/gojsondiff v1.0.0/go.mod h1:AY32+k2cwILAkW1fbgxQ5mUmMiZFgLIV+FBNExI05xg= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82 h1:BHyfKlQyqbsFN5p3IfnEUduWvb9is428/nNb5L3U01M= +github.com/yudai/golcs v0.0.0-20170316035057-ecda9a501e82/go.mod h1:lgjkn3NuSvDfVJdfcVVdX+jpBxNmX4rDAzaS45IcYoM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/zclconf/go-cty v1.16.3 h1:osr++gw2T61A8KVYHoQiFbFd1Lh3JOCXc/jFLJXKTxk= +github.com/zclconf/go-cty v1.16.3/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= github.com/zeebo/assert v1.3.0 h1:g7C04CbJuIDKNPFHmsk4hwZDO5O+kntRxzaUoNXj+IQ= github.com/zeebo/assert v1.3.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0= github.com/zeebo/errs v1.4.0 h1:XNdoD/RRMKP7HD0UhJnIzUy74ISdGGxURlYG8HSWSfM= @@ -1369,6 +1583,10 @@ go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0/go.mod h1:vNK8G9p7aAivkbmorf4v+7Hgx+Zs0yY+0fOtgBfjQKo= go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA= go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A= +go.opentelemetry.io/collector/pdata v1.30.0 h1:j3jyq9um436r6WzWySzexP2nLnFdmL5uVBYAlyr9nDM= +go.opentelemetry.io/collector/pdata v1.30.0/go.mod h1:0Bxu1ktuj4wE7PIASNSvd0SdBscQ1PLtYasymJ13/Cs= +go.opentelemetry.io/collector/semconv v0.124.0 h1:YTdo3UFwNyDQCh9DiSm2rbzAgBuwn/9dNZ0rv454goA= +go.opentelemetry.io/collector/semconv v0.124.0/go.mod h1:te6VQ4zZJO5Lp8dM2XIhDxDiL45mwX0YAQQWRQ0Qr9U= go.opentelemetry.io/contrib/bridges/prometheus v0.61.0 h1:RyrtJzu5MAmIcbRrwg75b+w3RlZCP0vJByDVzcpAe3M= go.opentelemetry.io/contrib/bridges/prometheus v0.61.0/go.mod h1:tirr4p9NXbzjlbruiRGp53IzlYrDk5CO2fdHj0sSSaY= go.opentelemetry.io/contrib/detectors/gcp v1.36.0 h1:F7q2tNlCaHY9nMKHR6XH9/qkp8FktLnIcy6jJNyOCQw= @@ -1451,8 +1669,12 @@ go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI= go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU= go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc= go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= +go4.org/netipx v0.0.0-20230125063823-8449b0a6169f h1:ketMxHg+vWm3yccyYiq+uK8D3fRmna2Fcj+awpQp84s= +go4.org/netipx v0.0.0-20230125063823-8449b0a6169f/go.mod h1:tgPU4N2u9RByaTN3NC2p9xOzyFpte4jYwsIIRF7XlSc= gocloud.dev v0.42.0 h1:qzG+9ItUL3RPB62/Amugws28n+4vGZXEoJEAMfjutzw= gocloud.dev v0.42.0/go.mod h1:zkaYAapZfQisXOA4bzhsbA4ckiStGQ3Psvs9/OQ5dPM= +gocloud.dev/secrets/hashivault v0.42.0 h1:kPWIIu1AP6ApHf7HwUrzGrwyRJEfTd46JNUNgnbpsFA= +gocloud.dev/secrets/hashivault v0.42.0/go.mod h1:LXprr1XLEAT7BVZ+Y66dJEHQMzDsowIExj5Ktr9HLvM= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -1716,8 +1938,8 @@ golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -2061,22 +2283,24 @@ k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kms v0.34.1 h1:iCFOvewDPzWM9fMTfyIPO+4MeuZ0tcZbugxLNSHFG4w= k8s.io/kms v0.34.1/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM= +k8s.io/kube-aggregator v0.34.1 h1:WNLV0dVNoFKmuyvdWLd92iDSyD/TSTjqwaPj0U9XAEU= +k8s.io/kube-aggregator v0.34.1/go.mod h1:RU8j+5ERfp0h+gIvWtxRPfsa5nK7rboDm8RST8BJfYQ= k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA= k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= -modernc.org/cc/v4 v4.26.2 h1:991HMkLjJzYBIfha6ECZdjrIYz2/1ayr+FL8GN+CNzM= -modernc.org/cc/v4 v4.26.2/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= -modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= -modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= -modernc.org/fileutil v1.3.8 h1:qtzNm7ED75pd1C7WgAGcK4edm4fvhtBsEiI/0NQ54YM= -modernc.org/fileutil v1.3.8/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4= +modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A= +modernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q= +modernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA= +modernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks= modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI= -modernc.org/libc v1.66.3 h1:cfCbjTUcdsKyyZZfEUKfoHcP3S0Wkvz3jgSzByEWVCQ= -modernc.org/libc v1.66.3/go.mod h1:XD9zO8kt59cANKvHPXpx7yS2ELPheAey0vjIuZOhOU8= +modernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A= +modernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I= modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU= modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg= modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI= @@ -2085,8 +2309,8 @@ modernc.org/opt v0.1.4 h1:2kNGMRiUjrp4LcaPuLY2PzUfqM/w9N23quVwhKt5Qm8= modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= -modernc.org/sqlite v1.38.2 h1:Aclu7+tgjgcQVShZqim41Bbw9Cho0y/7WzYptXqkEek= -modernc.org/sqlite v1.38.2/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E= +modernc.org/sqlite v1.39.1 h1:H+/wGFzuSCIEVCvXYVHX5RQglwhMOvtHSv+VtidL2r4= +modernc.org/sqlite v1.39.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A= modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y= diff --git a/apps/iam/kinds/v0alpha1/teambindingspec.cue b/apps/iam/kinds/v0alpha1/teambindingspec.cue index c20e592e458..0e16650d639 100644 --- a/apps/iam/kinds/v0alpha1/teambindingspec.cue +++ b/apps/iam/kinds/v0alpha1/teambindingspec.cue @@ -11,6 +11,8 @@ TeamBindingSpec: { // permission of the identity in the team permission: TeamPermission + + external: bool } TeamRef:{ diff --git a/apps/iam/pkg/apis/iam/v0alpha1/teambinding_spec_gen.go b/apps/iam/pkg/apis/iam/v0alpha1/teambinding_spec_gen.go index 13abd605168..87c976f7957 100644 --- a/apps/iam/pkg/apis/iam/v0alpha1/teambinding_spec_gen.go +++ b/apps/iam/pkg/apis/iam/v0alpha1/teambinding_spec_gen.go @@ -38,6 +38,7 @@ type TeamBindingSpec struct { TeamRef TeamBindingTeamRef `json:"teamRef"` // permission of the identity in the team Permission TeamBindingTeamPermission `json:"permission"` + External bool `json:"external"` } // NewTeamBindingSpec creates a new TeamBindingSpec object. diff --git a/apps/iam/pkg/apis/iam/v0alpha1/zz_openapi_gen.go b/apps/iam/pkg/apis/iam/v0alpha1/zz_openapi_gen.go index 2532b5df8cc..b0489baabb3 100644 --- a/apps/iam/pkg/apis/iam/v0alpha1/zz_openapi_gen.go +++ b/apps/iam/pkg/apis/iam/v0alpha1/zz_openapi_gen.go @@ -2123,8 +2123,15 @@ func schema_pkg_apis_iam_v0alpha1_TeamBindingSpec(ref common.ReferenceCallback) Format: "", }, }, + "external": { + SchemaProps: spec.SchemaProps{ + Default: false, + Type: []string{"boolean"}, + Format: "", + }, + }, }, - Required: []string{"subject", "teamRef", "permission"}, + Required: []string{"subject", "teamRef", "permission", "external"}, }, }, Dependencies: []string{ diff --git a/apps/investigations/go.mod b/apps/investigations/go.mod index 2e2704b8e67..778776ed2de 100644 --- a/apps/investigations/go.mod +++ b/apps/investigations/go.mod @@ -72,7 +72,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/investigations/go.sum b/apps/investigations/go.sum index ff48e3193e0..f50f1d3b2ce 100644 --- a/apps/investigations/go.sum +++ b/apps/investigations/go.sum @@ -179,8 +179,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/playlist/go.mod b/apps/playlist/go.mod index 02cf3943f6f..cca459faea2 100644 --- a/apps/playlist/go.mod +++ b/apps/playlist/go.mod @@ -73,7 +73,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/playlist/go.sum b/apps/playlist/go.sum index ff48e3193e0..f50f1d3b2ce 100644 --- a/apps/playlist/go.sum +++ b/apps/playlist/go.sum @@ -179,8 +179,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/plugins/go.mod b/apps/plugins/go.mod index 7c803ef1e15..175f5d0c3e4 100644 --- a/apps/plugins/go.mod +++ b/apps/plugins/go.mod @@ -80,7 +80,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/plugins/go.sum b/apps/plugins/go.sum index 16411aeecb3..91ea5ada338 100644 --- a/apps/plugins/go.sum +++ b/apps/plugins/go.sum @@ -195,8 +195,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/preferences/go.mod b/apps/preferences/go.mod index 932af3adf61..29d1b1035af 100644 --- a/apps/preferences/go.mod +++ b/apps/preferences/go.mod @@ -53,7 +53,7 @@ require ( golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/apps/preferences/go.sum b/apps/preferences/go.sum index 0bca000ff09..d2b6077a6cb 100644 --- a/apps/preferences/go.sum +++ b/apps/preferences/go.sum @@ -140,8 +140,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/provisioning/go.mod b/apps/provisioning/go.mod index e30a0b77cc7..4e1540512ae 100644 --- a/apps/provisioning/go.mod +++ b/apps/provisioning/go.mod @@ -72,7 +72,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250908214217-97024824d090 // indirect google.golang.org/grpc v1.75.1 // indirect diff --git a/apps/provisioning/go.sum b/apps/provisioning/go.sum index ce659fcf611..c8a60fb705f 100644 --- a/apps/provisioning/go.sum +++ b/apps/provisioning/go.sum @@ -204,8 +204,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/scope/go.mod b/apps/scope/go.mod index a6ed7ba83a1..691621a2a79 100644 --- a/apps/scope/go.mod +++ b/apps/scope/go.mod @@ -30,7 +30,7 @@ require ( go.yaml.in/yaml/v2 v2.4.2 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/net v0.45.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect google.golang.org/protobuf v1.36.9 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/apps/scope/go.sum b/apps/scope/go.sum index 7bf603654c8..6ac3c9dca1a 100644 --- a/apps/scope/go.sum +++ b/apps/scope/go.sum @@ -81,8 +81,8 @@ golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= diff --git a/apps/secret/go.mod b/apps/secret/go.mod index 0ff5e5f02eb..dbadbada0ba 100644 --- a/apps/secret/go.mod +++ b/apps/secret/go.mod @@ -58,7 +58,7 @@ require ( golang.org/x/oauth2 v0.30.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20250908214217-97024824d090 // indirect gopkg.in/inf.v0 v0.9.1 // indirect diff --git a/apps/secret/go.sum b/apps/secret/go.sum index 54152dfd80d..6a9315815a6 100644 --- a/apps/secret/go.sum +++ b/apps/secret/go.sum @@ -152,8 +152,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/apps/shorturl/go.mod b/apps/shorturl/go.mod index fe039294882..b408027adca 100644 --- a/apps/shorturl/go.mod +++ b/apps/shorturl/go.mod @@ -78,7 +78,7 @@ require ( golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.36.0 // indirect golang.org/x/term v0.35.0 // indirect - golang.org/x/text v0.29.0 // indirect + golang.org/x/text v0.30.0 // indirect golang.org/x/time v0.13.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect diff --git a/apps/shorturl/go.sum b/apps/shorturl/go.sum index 5b7d01fbcd9..23f1820794d 100644 --- a/apps/shorturl/go.sum +++ b/apps/shorturl/go.sum @@ -193,8 +193,8 @@ golang.org/x/term v0.35.0 h1:bZBVKBudEyhRcajGcNc3jIfWPqV4y/Kt2XcoigOWtDQ= golang.org/x/term v0.35.0/go.mod h1:TPGtkTLesOwf2DE8CgVYiZinHAOuy5AYUYT1lENIZnA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.13.0 h1:eUlYslOIt32DgYD6utsuUeHs4d7AsEYLuIAdg7FlYgI= golang.org/x/time v0.13.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= diff --git a/devenv/create_docker_compose.sh b/devenv/create_docker_compose.sh index 2acdd0836a1..5d1d2a90bb4 100755 --- a/devenv/create_docker_compose.sh +++ b/devenv/create_docker_compose.sh @@ -2,15 +2,18 @@ shopt -s nullglob # Enable nullglob -blocks_dir=docker/blocks -docker_dir=docker -template_dir=templates +# Get the directory where this script is located (works from any execution directory) +SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" + +blocks_dir="${SCRIPT_DIR}/docker/blocks" +docker_dir="${SCRIPT_DIR}/docker" +template_dir="${SCRIPT_DIR}/templates" grafana_config_file=conf.tmp grafana_config=config -compose_header_file=docker/compose_header.yml -compose_volume_section_file=docker/compose_volume_section.yml +compose_header_file="${SCRIPT_DIR}/docker/compose_header.yml" +compose_volume_section_file="${SCRIPT_DIR}/docker/compose_volume_section.yml" compose_volume_section_create_flag=docker_volume_create_true compose_file=docker-compose.yaml env_file=.env diff --git a/docs/sources/alerting/configure-notifications/template-notifications/examples.md b/docs/sources/alerting/configure-notifications/template-notifications/examples.md index 7927d367c94..f44ada3c4bf 100644 --- a/docs/sources/alerting/configure-notifications/template-notifications/examples.md +++ b/docs/sources/alerting/configure-notifications/template-notifications/examples.md @@ -89,7 +89,53 @@ This page provides various examples illustrating how to template common notifica Notification templates can access the [notification data](ref:reference-notification-data) using the dot (`.`). The following examples demonstrate some basic uses of the [template language](ref:language). -For instance, to check if there are common labels (`.CommonLabels`) for all alerts in the notification, use `if`: +### Text formatting examples + +Text formatting in notification templates varies by contact point type. Each platform has its own formatting syntax: + +#### Slack formatting + +For Slack contact points, you can use: + +```go +{{ define "slack_formatted_message" -}} +*This text will be bold in Slack* +_This text will be italic in Slack_ +Regular text without formatting +{{ end }} +``` + +Execute the template: + +```go +{{ template "slack_formatted_message" . }} +``` + +```template_output +*This text will be bold in Slack* +_This text will be italic in Slack_ +Regular text without formatting +``` + +#### Additional contact point types + +{{< admonition type="note" >}} +Each contact point type has its own formatting requirements: + +- Some support Markdown-style formatting +- Others use HTML tags +- Some may not support formatting at all + +Check your specific contact point's documentation for supported formatting syntax. +{{< /admonition >}} + +## Template logic examples + +Beyond text formatting, you can use template logic to create dynamic notification content. The following examples demonstrate basic template operations: + +### Conditional logic + +To check if there are common labels (`.CommonLabels`) for all alerts in the notification, use `if`: ```go {{ define "custom_message" -}} @@ -101,6 +147,8 @@ There are no common labels {{ end }} ``` +### Iterating over alerts + To iterate on the alerts in the notification and print a specific label, use `range` and `index`: ```go diff --git a/docs/sources/developers/plugins/plugin.schema.json b/docs/sources/developers/plugins/plugin.schema.json index 8cb3954f13d..bc34bdad71d 100644 --- a/docs/sources/developers/plugins/plugin.schema.json +++ b/docs/sources/developers/plugins/plugin.schema.json @@ -106,6 +106,11 @@ "type": "string", "format": "uri", "description": "URL value to use for this specific link." + }, + "target": { + "type": "string", + "description": "A string that indicates where to display the linked resource", + "enum": ["_blank", "_self", "_parent", "_top"] } } } @@ -499,8 +504,8 @@ }, "state": { "type": "string", - "description": "Marks a plugin as a pre-release.", - "enum": ["alpha", "beta"] + "description": "Describes plugins life cycle status", + "enum": ["alpha", "beta", "stable", "deprecated"] }, "streaming": { "type": "boolean", @@ -588,7 +593,7 @@ "properties": { "addedComponents": { "type": "array", - "description": "This list must contain all component extensions that your plugin registers to other extension points using [`.addComponent()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions#addcomponent). **Components that are not listed here won't work.**", + "description": "This list must contain all component extensions that your plugin registers to other extension points using [`.addComponent()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions-reference/ui-extensions#addcomponent). **Components that are not listed here won't work.**", "items": { "type": "object", "properties": { @@ -614,7 +619,7 @@ }, "addedLinks": { "type": "array", - "description": "This list must contain all link extensions that your plugin registers to other extension points using [`.addLink()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions#addlink). **Links that are not listed here won't work.**", + "description": "This list must contain all link extensions that your plugin registers to other extension points using [`.addLink()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions-reference/ui-extensions#addlink). **Links that are not listed here won't work.**", "items": { "type": "object", "properties": { @@ -638,9 +643,35 @@ "required": ["targets", "title"] } }, + "addedFunctions": { + "type": "array", + "description": "This list must contain all function extensions that your plugin registers to other extension points using [`.addedFunctions()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions-reference/ui-extensions#addfunction). **Functions that are not listed here won't work.**", + "items": { + "type": "object", + "properties": { + "targets": { + "type": "array", + "description": "The extension point ids your plugin registers the extension to, e.g. `[\"grafana/dashboard/panel/menu\"]`", + "items": { + "type": "string" + } + }, + "title": { + "type": "string", + "description": "The title of your function extension.", + "minLength": 10 + }, + "description": { + "type": "string", + "description": "Additional information about your function extension." + } + }, + "required": ["targets", "title"] + } + }, "exposedComponents": { "type": "array", - "description": "This list must contain all components that your plugin exposes using [`.exposeComponent()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions#exposecomponent). **Components that are not listed here won't work.**", + "description": "This list must contain all components that your plugin exposes using [`.exposeComponent()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions-reference/ui-extensions#exposecomponent). **Components that are not listed here won't work.**", "items": { "type": "object", "properties": { @@ -663,7 +694,7 @@ }, "extensionPoints": { "type": "array", - "description": "This list must contain all extension points that your plugin defines using [`usePluginLinks()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions#usepluginlinks) or [`usePluginComponents()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions#useplugincomponents). **Extension points that are not listed in here won't work.**", + "description": "This list must contain all extension points that your plugin defines using [`usePluginLinks()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions-reference/ui-extensions#usepluginlinks) or [`usePluginComponents()`](https://grafana.com/developers/plugin-tools/reference/ui-extensions-reference/ui-extensions#useplugincomponents). **Extension points that are not listed in here won't work.**", "items": { "type": "object", "properties": { diff --git a/docs/sources/setup-grafana/configure-grafana/enterprise-configuration/index.md b/docs/sources/setup-grafana/configure-grafana/enterprise-configuration/index.md index c7570c71eaa..82eec98249a 100644 --- a/docs/sources/setup-grafana/configure-grafana/enterprise-configuration/index.md +++ b/docs/sources/setup-grafana/configure-grafana/enterprise-configuration/index.md @@ -112,6 +112,22 @@ Decide whether or not to enable the TLS (Transport Layer Security) protocol when Set the tenant ID for Loki communication, which is disabled by default. The tenant ID is required to interact with Loki running in [multi-tenant mode](/docs/loki/latest/operations/multi-tenancy/). +### batch_wait_duration + +How long to wait before sending a request to Loki with the batch of events. Uses duration format: e.g. 5s, 1m. Defaults to 5s. + +Whatever happens first between `batch_wait_duration` and `batch_size_bytes` will trigger the batch to be sent to Loki. + +If the wait duration is very long and the `batch_size_bytes` is very high, events may take a long time to be sent. + +### batch_size_bytes + +How many events (in bytes) to accumulate in a single batch before sending it to Loki. Defaults to 100 KiB. + +Whatever happens first between `batch_wait_duration` and `batch_size_bytes` will trigger the batch to be sent to Loki. + +If you wish to always wait for the `batch_wait_duration`, set this to a very high number. + ## [analytics.summaries] ### buffer_write_interval diff --git a/docs/sources/setup-grafana/configure-security/export-logs.md b/docs/sources/setup-grafana/configure-security/export-logs.md index f55336f8a67..e2ca4ad221c 100644 --- a/docs/sources/setup-grafana/configure-security/export-logs.md +++ b/docs/sources/setup-grafana/configure-security/export-logs.md @@ -94,6 +94,14 @@ tls = true # Set the tenant ID for Loki communication, which is disabled by default. # The tenant ID is required to interact with Loki running in multi-tenant mode. tenant_id = +# How long to wait before sending a request to Loki with the batch of events. Uses duration format: e.g. 5s, 1m +# Whatever happens first between `batch_wait_duration` and `batch_size_bytes` will trigger the batch to be sent to Loki. +# If the wait duration is very long and the `batch_size_bytes` is very high, events may take a long time to be sent. +batch_wait_duration = 5s +# How many events (in bytes) to accumulate in a single batch before sending it to Loki. +# Whatever happens first between `batch_wait_duration` and `batch_size_bytes` will trigger the batch to be sent to Loki. +# If you wish to always wait for the `batch_wait_duration`, set this to a very high number. +batch_size_bytes = 102400 # 100KiB ``` Using `logger` will print usage insights to your [Grafana server log](../../configure-grafana/#log). diff --git a/docs/sources/setup-grafana/configure-security/manage-single-access.md b/docs/sources/setup-grafana/configure-security/manage-single-access.md new file mode 100644 index 00000000000..1ca84d68960 --- /dev/null +++ b/docs/sources/setup-grafana/configure-security/manage-single-access.md @@ -0,0 +1,158 @@ +--- +aliases: + - ../../enterprise/manage-single-access/ +description: Manage multi-team access in a single Grafana instance +keywords: + - grafana + - rbac + - lbac + - auth + - access + - teams +labels: + products: + - cloud + - enterprise +title: Manage multi-team access in a single Grafana instance +weight: 1200 +refs: + create-folder: + - pattern: /docs/grafana/ + destination: /docs/grafana//dashboards/manage-dashboards/#create-a-dashboard-folder + - pattern: /docs/grafana-cloud/ + destination: /docs/grafana-cloud/visualizations/dashboards/manage-dashboards/#create-a-dashboard-folder + rbac: + - pattern: /docs/grafana/ + destination: /docs/grafana//administration/roles-and-permissions/access-control + - pattern: /docs/grafana-cloud/ + destination: /docs/grafana-cloud/security-and-account-management/authentication-and-permissions/access-control + rbac-assign: + - pattern: /docs/grafana/ + destination: /docs/grafana//administration/roles-and-permissions/access-control/assign-rbac-roles + - pattern: /docs/grafana-cloud/ + destination: /docs/grafana-cloud/security-and-account-management/authentication-and-permissions/access-control/assign-rbac-roles + rbac-fixed: + - pattern: /docs/grafana/ + destination: /docs/grafana//administration/roles-and-permissions/access-control/rbac-fixed-basic-role-definitions/#fixed-role-definitions + - pattern: /docs/grafana-cloud/ + destination: /docs/grafana-cloud/security-and-account-management/authentication-and-permissions/access-control/rbac-fixed-basic-role-definitions/#fixed-role-definitions + drilldown: + - pattern: /docs/grafana/ + destination: /docs/grafana/}} +For guidance on when to use one stack versus multiple, refer to [Stack architecture guidance](https://grafana.com/docs/grafana-cloud/security-and-account-management/cloud-stacks/stack-architecture-guidance/). +{{< /admonition >}} + +### Create teams and configure user access + +After you’ve deployed your Grafana instance: + +- To follow the example in this doc, create three [Grafana Teams](../../../administration/team-management/configure-grafana-teams/#create-a-grafana-team) and add them to the Grafana instance. +- Determine the [RBAC](ref:rbac) strategy for your organization. RBAC extends default Grafana roles, provides more granular access rights, and simplifies how to grant, modify, or revoke user access to Grafana resources, such as users and reports. +- Assign each user to the [relevant team](../../../administration/user-management/manage-org-users/). By default [new users](../../configure-grafana/#auto_assign_org) are granted the **Viewer** role. +- Assign the [**Admin** role](ref:rbac-assign) to Team C so that they can manage all resources in the instance. + +### Design a folder structure to match your access needs + +To design a [folder](ref:create-folder) setup that helps users quickly understand where to go, what they can access, and what they can manage: + +- Create an “Everyone” folder for shared items that all teams can manage, and grant teams Admin access to that folder. +- For each team, create a folder that they can manage and grant them the `fixed:teams:read` [fixed role](ref:rbac-assign). This means they can share items in their team folder with other teams, to encourage collaboration and learning from each other. +- For Team C, create an “Admins” folder for sensitive content only Admins can access. +- Optionally, create a personal folder for each team member so that they can work on draft content before moving it into their team folder when ready. + +{{< figure src="/media/docs/grafana/oac/AccessTeams01.png" max-width="750px" alt="Teams and folders in the stack, and the related admin permissions Team A and Team B have been granted" >}} + +### Configure data access based on team requirements + +Next, focus on how teams interact with data to decide further access needs. + +#### Shared baseline data access + +Grant the `datasources:explorer` fixed role to all teams so they can use the [Drilldown apps](ref:drilldown) for easily exploring data sources. + +However, you may need to protect data in shared resources. For example, all teams can be forwarding metrics to a shared [data source](ref:add-data-source), but not everyone needs to see all of the data. In this case, grant each team query access to the data relevant for them, based on [label based access controls (LBAC) per team](ref:lbac). This way, you’ll maintain a central observability pipeline but still preserve data separation. + +#### Autonomous team data management + +If any of your teams, Team A for example, need to build and manage their own data sources for product-specific use cases, grant the `datasources:creator` fixed role so they can create and manage their own data sources independently. + +{{< figure src="/media/docs/grafana/oac/AccessTeams02.png" max-width="750px" alt="Teams and data sources in the stack, and the related permissions Team A and Team B have been granted" >}} + +#### Resources at an instance level + +Some Grafana resources, such as service accounts, alert contact points, [Fleet Management collectors](https://grafana.com/docs/grafana-cloud/send-data/fleet-management/), and other feature resources, are not linked to teams but are managed at the stack level. For these type of resources, assign fixed roles to teams carefully. + +For example, users working in [Frontend Observability](https://grafana.com/docs/grafana-cloud/monitor-applications/frontend-observability/) need a writer fixed role so that they can create and manage services. + +{{< figure src="/media/docs/grafana/oac/AccessTeams03.png" max-width="750px" alt="Grafana Cloud Frontend Observability resources in the stack, and the related permissions Team A have been granted" >}} + +### Scale access management with Terraform and SSO + +After you've made sure the model is working, you can codify it. + +You can add any new users to your Grafana instance with an Identity Provider through [SCIM](../../configure-security/configure-scim-provisioning/). Use [role sync](../../configure-security/configure-authentication/saml/configure-saml-team-role-mapping/#configure-role-sync-for-saml) to automatically assign users the correct basic role (Viewer, Editor, or Admin) based on their mapped attributes in the IdP.. + +You can also use Terraform to provision teams their folders, fixed roles, and shared data source LBAC rules. For example, if you need to add a new team (Team D), you only need to add the new team to Grafana and run the Terraform script, which will automatically set them up to start using Grafana. + +{{< figure src="/media/docs/grafana/oac/AccessTeams04.png" max-width="750px" alt="Add new Team D from Okta and automate the rest of their IAM setup using Terraform" >}} + +## Other resources + +Read on to learn more about access management: + +- The [Least privilege custom role explainer](https://grafana.com/blog/2024/09/10/grafana-access-management-how-to-use-teams-for-seamless-user-and-permission-management/) blog walks through how to design roles that keep things simple and safe, so your users have just the access they need. +- See the [LBAC for metrics data sources](https://www.youtube.com/watch?v=gj27qKPSVsM) demo to learn how you can give every team a clear view of their own data while still benefiting from a shared pipeline. +- The [Introducing SCIM](https://grafana.com/blog/2025/05/14/introducing-scim-provisioning-in-grafana-enterprise-grade-user-management-made-simple/) post covers how to connect Grafana to your identity provider, making it easy to bring new users on board and keep permissions in sync as your organization grows. diff --git a/docs/sources/visualizations/_index.md b/docs/sources/visualizations/_index.md new file mode 100644 index 00000000000..55c03c0f06d --- /dev/null +++ b/docs/sources/visualizations/_index.md @@ -0,0 +1,48 @@ +--- +aliases: + - /docs/grafana-cloud/visualization/ + - /docs/grafana-cloud/visualizations/ +description: Learn how to build dashboards and visualizations. +menuTitle: Visualize data +title: Visualize your data in Grafana +hero: + title: Visualize data + level: 1 + width: 100 + height: 100 + description: Easily collect, correlate, and visualize data with beautiful dashboards using Grafana—the solution that drives informed decisions, enhances system performance, and streamlines troubleshooting. +cards: + items: + - description: Allow you to query, transform, visualize, and understand your data no matter where it’s stored. + height: 24 + href: /docs/grafana-cloud/visualizations/dashboards/ + title: Dashboards + - description: Allow you to easily collect, correlate, and visualize data so you can make informed decisions in real time. + height: 24 + href: /docs/grafana-cloud/visualizations/panels-visualizations/ + title: Panels and visualizations + - description: Use the Drilldown apps to explore your telemetry data with a queryless experience. + height: 24 + href: /docs/grafana-cloud/visualizations/simplified-exploration/ + title: Drilldown apps + +weight: 500 +--- + +{{< docs/hero-simple key="hero" >}} + +--- + +## Overview + +A Grafana dashboard is a set of one or more panels that provide an at-a-glance view of related information. These panels are the basic building block in Grafana dashboards, and they're created using components that query and transform raw data from a data source into charts, graphs, and other visualizations. + +A data source can be an SQL database, Grafana Loki, Grafana Mimir, or a JSON-based API. It can even be a basic CSV file. Queries allow you to reduce the entirety of your data to a specific dataset, providing a more manageable visualization. Data source plugins take a query you want answered, retrieve the data from the data source, and reconcile the differences between the data model of the data source and the data model of Grafana dashboards. + +The growing suite of Grafana visualizations, ranging from time series graphs to heatmaps to cutting-edge 3D charts, provide you several different ways to present your data within a panel, depending on what best suits the data and your needs. If the data format in a visualization doesn’t meet your requirements, you can apply a transformation that manipulates the data returned by a query. + +With 150+ data source plugins, you can unify all your data sources into a single dashboard to streamline data monitoring and troubleshooting. With Grafana, you can translate, transform, and visualize data in flexible and versatile dashboards. + +## Explore + +{{< card-grid key="cards" type="simple" >}} diff --git a/docs/sources/dashboards/_index.md b/docs/sources/visualizations/dashboards/_index.md similarity index 94% rename from docs/sources/dashboards/_index.md rename to docs/sources/visualizations/dashboards/_index.md index c919c48debb..03c1b9724b7 100644 --- a/docs/sources/dashboards/_index.md +++ b/docs/sources/visualizations/dashboards/_index.md @@ -1,7 +1,8 @@ --- aliases: - - features/dashboard/dashboards/ # /docs/grafana/latest/features/dashboard/dashboards/ - - ./dashboards/previews/ # /docs/grafana/latest/dashboards/previews/ + - ../features/dashboard/dashboards/ # /docs/grafana/latest/features/dashboard/dashboards/ + - ../dashboards/previews/ # /docs/grafana/latest/dashboards/previews/ + - ../dashboards/ # /docs/grafana/next/dashboards/ labels: products: - cloud diff --git a/docs/sources/dashboards/assess-dashboard-usage/index.md b/docs/sources/visualizations/dashboards/assess-dashboard-usage/index.md similarity index 92% rename from docs/sources/dashboards/assess-dashboard-usage/index.md rename to docs/sources/visualizations/dashboards/assess-dashboard-usage/index.md index e989ec12470..2030cd1b2d8 100644 --- a/docs/sources/dashboards/assess-dashboard-usage/index.md +++ b/docs/sources/visualizations/dashboards/assess-dashboard-usage/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../enterprise/usage-insights/ - - ../enterprise/usage-insights/dashboard-datasource-insights/ - - ../enterprise/usage-insights/improved-search/ - - ../enterprise/usage-insights/presence-indicator/ + - ../../enterprise/usage-insights/ # /docs/grafana/next/enterprise/usage-insights/ + - ../../enterprise/usage-insights/dashboard-datasource-insights/ # /docs/grafana/next/enterprise/usage-insights/dashboard-datasource-insights/ + - ../../enterprise/usage-insights/improved-search/ # /docs/grafana/next/enterprise/usage-insights/improved-search/ + - ../../enterprise/usage-insights/presence-indicator/ # /docs/grafana/next/enterprise/usage-insights/presence-indicator/ + - ../../dashboards/assess-dashboard-usage/ # /docs/grafana/next/dashboards/assess-dashboard-usage/ description: Understand how your Grafana instance is used keywords: - grafana diff --git a/docs/sources/dashboards/build-dashboards/_index.md b/docs/sources/visualizations/dashboards/build-dashboards/_index.md similarity index 86% rename from docs/sources/dashboards/build-dashboards/_index.md rename to docs/sources/visualizations/dashboards/build-dashboards/_index.md index 4978be9dd35..5432ff0671d 100644 --- a/docs/sources/dashboards/build-dashboards/_index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/_index.md @@ -21,6 +21,8 @@ refs: destination: /docs/grafana//dashboards/variables/ - pattern: /docs/grafana-cloud/ destination: /docs/grafana//dashboards/variables/ +aliases: + - ../../dashboards/build-dashboards/ # /docs/grafana/next/dashboards/build-dashboards/ --- # Build dashboards diff --git a/docs/sources/dashboards/build-dashboards/annotate-visualizations/index.md b/docs/sources/visualizations/dashboards/build-dashboards/annotate-visualizations/index.md similarity index 96% rename from docs/sources/dashboards/build-dashboards/annotate-visualizations/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/annotate-visualizations/index.md index 81f6ce065f1..47f088783f5 100644 --- a/docs/sources/dashboards/build-dashboards/annotate-visualizations/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/annotate-visualizations/index.md @@ -1,7 +1,9 @@ --- aliases: - - ../../reference/annotations/ - - ../annotations/ + - ../../../dashboards/annotations/ # /docs/grafana/next/annotations/ + - ../../../dashboards/build-dashboards/annotate-visualizations/ # /docs/grafana/next/dashboards/build-dashboards/annotate-visualizations/ + - ../../../panels/visualizations/annotations/ # /docs/grafana/next/panels/visualizations/annotations/ + - ../../../reference/annotations/ # /docs/grafana/latest/reference/annotations/ keywords: - grafana - annotations diff --git a/docs/sources/dashboards/build-dashboards/best-practices/index.md b/docs/sources/visualizations/dashboards/build-dashboards/best-practices/index.md similarity index 95% rename from docs/sources/dashboards/build-dashboards/best-practices/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/best-practices/index.md index e67a1a87ead..df7f3f2e648 100644 --- a/docs/sources/dashboards/build-dashboards/best-practices/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/best-practices/index.md @@ -1,11 +1,12 @@ --- aliases: - - ../../best-practices/ - - ../../best-practices/best-practices-for-creating-dashboards/ - - ../../best-practices/best-practices-for-managing-dashboards/ - - ../../best-practices/common-observability-strategies/ - - ../../best-practices/dashboard-management-maturity-levels/ - - ../../getting-started/strategies/ + - ../../../best-practices/ # /docs/grafana/next/best-practices/ + - ../../../best-practices/best-practices-for-creating-dashboards/ # /docs/grafana/next/best-practices/best-practices-for-creating-dashboards/ + - ../../../best-practices/best-practices-for-managing-dashboards/ # /docs/grafana/next/best-practices/best-practices-for-managing-dashboards/ + - ../../../best-practices/common-observability-strategies/ # /docs/grafana/next/best-practices/common-observability-strategies/ + - ../../../best-practices/dashboard-management-maturity-levels/ # /docs/grafana/next/best-practices/dashboard-management-maturity-levels/ + - ../../../getting-started/strategies/ # /docs/grafana/next/getting-started/strategies/ + - ../../../dashboards/build-dashboards/best-practices/ # /docs/grafana/next/dashboards/build-dashboards/best-practices/ description: Learn best practices for building and maintaining Grafana dashboards labels: products: diff --git a/docs/sources/dashboards/build-dashboards/create-dashboard-url-variables/index.md b/docs/sources/visualizations/dashboards/build-dashboards/create-dashboard-url-variables/index.md similarity index 93% rename from docs/sources/dashboards/build-dashboards/create-dashboard-url-variables/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/create-dashboard-url-variables/index.md index 49639f74d01..b1f9d5ed609 100644 --- a/docs/sources/dashboards/build-dashboards/create-dashboard-url-variables/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/create-dashboard-url-variables/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../variables/url-variables/ - - ../../variables/variable-types/url-variables/ + - ../../../variables/url-variables/ # /docs/grafana/next/variables/url-variables/ + - ../../../variables/variable-types/url-variables/ # /docs/grafana/next/variables/variable-types/url-variables/ + - ../../../dashboards/build-dashboards/create-dashboard-url-variables/ # /docs/grafana/next/dashboards/build-dashboards/create-dashboard-url-variables/ keywords: - grafana - url variables diff --git a/docs/sources/dashboards/build-dashboards/create-dashboard/index.md b/docs/sources/visualizations/dashboards/build-dashboards/create-dashboard/index.md similarity index 97% rename from docs/sources/dashboards/build-dashboards/create-dashboard/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/create-dashboard/index.md index 5368b509e59..33ac74c856d 100644 --- a/docs/sources/dashboards/build-dashboards/create-dashboard/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/create-dashboard/index.md @@ -1,6 +1,7 @@ --- aliases: - - add-organize-panels/ + - ../../../dashboards/build-dashboards/add-organize-panels/ # /docs/grafana/next/dashboards/build-dashboards/add-organize-panels/ + - ../../../dashboards/build-dashboards/create-dashboard/ # /docs/grafana/next/dashboards/build-dashboards/create-dashboard/ keywords: - panel - dashboard diff --git a/docs/sources/dashboards/build-dashboards/create-dynamic-dashboard/index.md b/docs/sources/visualizations/dashboards/build-dashboards/create-dynamic-dashboard/index.md similarity index 99% rename from docs/sources/dashboards/build-dashboards/create-dynamic-dashboard/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/create-dynamic-dashboard/index.md index 0e9f99946bc..a77e4ca988f 100644 --- a/docs/sources/dashboards/build-dashboards/create-dynamic-dashboard/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/create-dynamic-dashboard/index.md @@ -72,6 +72,8 @@ refs: destination: /docs/grafana//panels-visualizations/configure-overrides/ - pattern: /docs/grafana-cloud/ destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-overrides/ +aliases: + - ../../../dashboards/build-dashboards/create-dynamic-dashboard/ # /docs/grafana/next/dashboards/build-dashboards/create-dynamic-dashboard/ --- # Create and edit dynamic dashboards diff --git a/docs/sources/dashboards/build-dashboards/import-dashboards/index.md b/docs/sources/visualizations/dashboards/build-dashboards/import-dashboards/index.md similarity index 89% rename from docs/sources/dashboards/build-dashboards/import-dashboards/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/import-dashboards/index.md index df660d1b351..a51746e7b87 100644 --- a/docs/sources/dashboards/build-dashboards/import-dashboards/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/import-dashboards/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../reference/export_import/ # /docs/grafana//reference/export_import/ - - ../export-import/ # /docs/grafana//dashboards/export-import/ + - ../../../reference/export_import/ # /docs/grafana/next/reference/export_import/ + - ../../../dashboards/export-import/ # /docs/grafana/next/dashboards/export-import/ + - ../../../dashboards/build-dashboards/import-dashboards/ # /docs/grafana/next/dashboards/build-dashboards/import-dashboards/ canonical: https://grafana.com/docs/grafana/latest/dashboards/build-dashboards/import-dashboards/ keywords: - grafana diff --git a/docs/sources/dashboards/build-dashboards/manage-dashboard-links/index.md b/docs/sources/visualizations/dashboards/build-dashboards/manage-dashboard-links/index.md similarity index 94% rename from docs/sources/dashboards/build-dashboards/manage-dashboard-links/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/manage-dashboard-links/index.md index 99f4cf3bf32..cddf9a5b9f5 100644 --- a/docs/sources/dashboards/build-dashboards/manage-dashboard-links/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/manage-dashboard-links/index.md @@ -1,11 +1,12 @@ --- aliases: - - ../../features/navigation-links/ - - ../../linking/ - - ../../linking/dashboard-links/ - - ../../linking/linking-overview/ - - ../../panels/working-with-panels/add-link-to-panel/ - - ../manage-dashboard-links/ + - ../../../dashboards/build-dashboards/manage-dashboard-links/ # /docs/grafana/next/dashboards/build-dashboards/manage-dashboard-links/ + - ../../../features/navigation-links/ # /docs/grafana/next/features/navigation-links/ + - ../../../linking/ # /docs/grafana/next/linking/ + - ../../../linking/dashboard-links/ # /docs/grafana/next/linking/dashboard-links/ + - ../../../linking/linking-overview/ # /docs/grafana/next/linking/linking-overview/ + - ../../../panels/working-with-panels/add-link-to-panel/ # /docs/grafana/next/panels/working-with-panels/add-link-to-panel + - ../../../dashboards/manage-dashboard-links/ # /docs/grafana/next/dashboards/manage-dashboard-links/ description: Add links to your Grafana dashboards to connect to other dashboards, panels, and websites keywords: - link diff --git a/docs/sources/dashboards/build-dashboards/manage-library-panels/index.md b/docs/sources/visualizations/dashboards/build-dashboards/manage-library-panels/index.md similarity index 85% rename from docs/sources/dashboards/build-dashboards/manage-library-panels/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/manage-library-panels/index.md index facbdfa92a2..d8b60fef667 100644 --- a/docs/sources/dashboards/build-dashboards/manage-library-panels/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/manage-library-panels/index.md @@ -1,13 +1,14 @@ --- aliases: - - ../../panels/library-panels/ - - ../../panels/library-panels/add-library-panel/ - - ../../panels/library-panels/create-library-panel/ - - ../../panels/library-panels/delete-library-panel/ - - ../../panels/library-panels/manage-library-panel/ - - ../../panels/library-panels/unlink-library-panel/ - - ../../panels/panel-library/ - - ../manage-library-panels/ + - ../../../dashboards/build-dashboards/manage-library-panels/ # /docs/grafana/next/dashboards/build-dashboards/manage-library-panels/ + - ../../../panels/library-panels/ # /docs/grafana/next/panels/library-panels + - ../../../panels/library-panels/add-library-panel/ # /docs/grafana/next/panels/library-panels/add-library-panel + - ../../../panels/library-panels/create-library-panel/ # /docs/grafana/next/panels/library-panels/create-library-panel + - ../../../panels/library-panels/delete-library-panel/ # /docs/grafana/next/panels/library-panels/delete-library-panel + - ../../../panels/library-panels/manage-library-panel/ # /docs/grafana/next/panels/library-panels/manage-library-panel + - ../../../panels/library-panels/unlink-library-panel/ # /docs/grafana/next/panels/library-panels/unlink-library-panel + - ../../../panels/panel-library/ # /docs/grafana/next/panels/panels-library/ + - ../manage-library-panels/ # /docs/grafana/next/visualizations/dashboards/manage-library-panels/ labels: products: - cloud diff --git a/docs/sources/dashboards/build-dashboards/manage-version-history/index.md b/docs/sources/visualizations/dashboards/build-dashboards/manage-version-history/index.md similarity index 88% rename from docs/sources/dashboards/build-dashboards/manage-version-history/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/manage-version-history/index.md index d1ed28efc3f..712cb4c4205 100644 --- a/docs/sources/dashboards/build-dashboards/manage-version-history/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/manage-version-history/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../reference/dashboard_history/ - - ../dashboard-history/ + - ../../../reference/dashboard_history/ # /docs/grafana/next/reference/dashboard_history/ + - ../../../dashboards/dashboard-history/ # /docs/grafana/next/dashboards/dashboard-history/ + - ../../../dashboards/build-dashboards/manage-version-history/ # /docs/grafana/next/dashboards/build-dashboards/manage-version-history/ keywords: - grafana - dashboard diff --git a/docs/sources/dashboards/build-dashboards/modify-dashboard-settings/index.md b/docs/sources/visualizations/dashboards/build-dashboards/modify-dashboard-settings/index.md similarity index 98% rename from docs/sources/dashboards/build-dashboards/modify-dashboard-settings/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/modify-dashboard-settings/index.md index dbe77c05013..dbc49c40bde 100644 --- a/docs/sources/dashboards/build-dashboards/modify-dashboard-settings/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/modify-dashboard-settings/index.md @@ -34,6 +34,8 @@ refs: destination: /docs/grafana//dashboards/build-dashboards/manage-dashboard-links/#dashboard-links - pattern: /docs/grafana-cloud/ destination: /docs/grafana-cloud/visualizations/dashboards/build-dashboards/manage-dashboard-links/#dashboard-links +aliases: + - ../../../dashboards/build-dashboards/modify-dashboard-settings/ # /docs/grafana/next/dashboards/build-dashboards/modify-dashboard-settings/ --- # Modify dashboard settings diff --git a/docs/sources/dashboards/build-dashboards/view-dashboard-json-model/index.md b/docs/sources/visualizations/dashboards/build-dashboards/view-dashboard-json-model/index.md similarity index 97% rename from docs/sources/dashboards/build-dashboards/view-dashboard-json-model/index.md rename to docs/sources/visualizations/dashboards/build-dashboards/view-dashboard-json-model/index.md index c2e95bbba00..7720a4c946a 100644 --- a/docs/sources/dashboards/build-dashboards/view-dashboard-json-model/index.md +++ b/docs/sources/visualizations/dashboards/build-dashboards/view-dashboard-json-model/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../reference/dashboard/ - - ../json-model/ + - ../../../reference/dashboard/ # /docs/grafana/next/reference/dashboard/ + - ../../../dashboards/json-model/ # /docs/grafana/next/dashboards/json-model/ + - ../../../dashboards/build-dashboards/view-dashboard-json-model/ # /docs/grafana/next/dashboards/build-dashboards/view-dashboard-json-model/ keywords: - grafana - dashboard diff --git a/docs/sources/dashboards/create-manage-playlists/index.md b/docs/sources/visualizations/dashboards/create-manage-playlists/index.md similarity index 96% rename from docs/sources/dashboards/create-manage-playlists/index.md rename to docs/sources/visualizations/dashboards/create-manage-playlists/index.md index 4f2d7831350..a61238e029d 100644 --- a/docs/sources/dashboards/create-manage-playlists/index.md +++ b/docs/sources/visualizations/dashboards/create-manage-playlists/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../reference/playlist/ - - playlist/ + - ../../reference/playlist/ # /docs/grafana/next/reference/playlist/ + - ../../dashboards/playlist/ # /docs/grafana/next/dashboards/playlist/ + - ../../dashboards/create-manage-playlists/ # /docs/grafana/next/dashboards/create-manage-playlists/ keywords: - grafana - dashboard diff --git a/docs/sources/dashboards/create-reports/_index.md b/docs/sources/visualizations/dashboards/create-reports/_index.md similarity index 97% rename from docs/sources/dashboards/create-reports/_index.md rename to docs/sources/visualizations/dashboards/create-reports/_index.md index 0e9650f35ca..e55fd9e9fee 100644 --- a/docs/sources/dashboards/create-reports/_index.md +++ b/docs/sources/visualizations/dashboards/create-reports/_index.md @@ -1,10 +1,11 @@ --- aliases: - - ../administration/reports/ # /docs/grafana/latest/administration/reports/ - - ../enterprise/export-pdf/ # /docs/grafana/latest/enterprise/export-pdf/ - - ../enterprise/reporting/ # /docs/grafana/latest/enterprise/reporting/ - - ../panels/create-reports/ # /docs/grafana/latest/panels/create-reports/ - - reporting/ # /docs/grafana/latest/dashboards/reporting/ + - ../../administration/reports/ # /docs/grafana/next/administration/reports/ + - ../../enterprise/export-pdf/ # /docs/grafana/next/enterprise/export-pdf/ + - ../../enterprise/reporting/ # /docs/grafana/next/enterprise/reporting/ + - ../../panels/create-reports/ # /docs/grafana/next/panels/create-reports/ + - ../../dashboards/reporting/ # /docs/grafana/next/dashboards/reporting/ + - ../../dashboards/create-reports/ # /docs/grafana/next/dashboards/create-reports/ keywords: - grafana - reporting diff --git a/docs/sources/dashboards/create-reports/report-settings/index.md b/docs/sources/visualizations/dashboards/create-reports/report-settings/index.md similarity index 96% rename from docs/sources/dashboards/create-reports/report-settings/index.md rename to docs/sources/visualizations/dashboards/create-reports/report-settings/index.md index b63b636d809..6f131c676a2 100644 --- a/docs/sources/dashboards/create-reports/report-settings/index.md +++ b/docs/sources/visualizations/dashboards/create-reports/report-settings/index.md @@ -17,6 +17,8 @@ refs: destination: /docs/grafana//administration/organization-preferences/#change-grafana-ui-theme - pattern: /docs/grafana-cloud/ destination: /docs/grafana//administration/organization-preferences/#change-grafana-ui-theme +aliases: + - ../../../dashboards/create-reports/report-settings/ # /docs/grafana/next/dashboards/create-reports/report-settings/ --- # Reporting settings diff --git a/docs/sources/dashboards/manage-dashboards/index.md b/docs/sources/visualizations/dashboards/manage-dashboards/index.md similarity index 71% rename from docs/sources/dashboards/manage-dashboards/index.md rename to docs/sources/visualizations/dashboards/manage-dashboards/index.md index a5473c5a71f..268b7a7ad8e 100644 --- a/docs/sources/dashboards/manage-dashboards/index.md +++ b/docs/sources/visualizations/dashboards/manage-dashboards/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../panels/working-with-panels/organize-dashboard/ - - ../reference/dashboard_folders/ - - dashboard-folders/ - - dashboard-manage/ + - ../../panels/working-with-panels/organize-dashboard/ # /docs/grafana/next/panels/working-with-panels/organize-dashboard/ + - ../../reference/dashboard_folders/ # /docs/grafana/next/reference/dashboard_folders/ + - ../../dashboards/dashboard-folders/ # /docs/grafana/next/dashboards/dashboard-folders/ + - ../../dashboards/dashboard-manage/ # /docs/grafana/next/dashboards/dashboard-manage/ + - ../../dashboards/manage-dashboards/ # /docs/grafana/next/dashboards/manage-dashboards/ canonical: https://grafana.com/docs/grafana/latest/dashboards/manage-dashboards/ keywords: - grafana @@ -114,6 +115,39 @@ Changes are saved automatically. For more information about dashboard permissions, refer to [Dashboard permissions](ref:dashboard-permissions). +## Dashboard and folder deletion + +**Folders** - When you delete folders, the action is immediate and can't be reversed. + +**Dashboards** - Deleted dashboards are stored in the deletion history and can be [restored](#restore-dashboards) if needed (Cloud only). + +## Restore deleted dashboards + +{{% admonition type="caution" %}} +The feature is only available in Grafana Cloud. +{{% /admonition %}} + +When you delete dashboards, they’re stored in the deletion history for up to 12 months, allowing you to restore them if needed. +The deletion history can contain a maximum of 1000 dashboards. +After this limit is reached, the oldest deleted dashboards are permanently removed even if the 12-month expiration period isn't over yet. + +You can access the list of deleted dashboards from the **Dashboards** page by clicking the **Recently deleted** button, or by navigating to **Dashboards > Recently deleted**. + +To restore one or more dashboards, follow these steps: + +1. In the main menu, click **Dashboards > Recently deleted** or click the **Recently deleted** button from the **Dashboards** page. +2. Select the dashboards you want to restore. +3. Click **Restore** and select a folder to which the dashboards will be moved: + - If you select one dashboard and its original folder still exists, that folder is preselected. + - If you select multiple dashboards from the _same_ folder, that folder is preselected. + - If you select dashboards from _different_ folders, you’ll need to choose one target folder for all of them. + - If the original folder no longer exists, you’ll need to select a new target folder. +4. Click **Restore**. + +{{% admonition type="note" %}} +Only users with admin rights can access the **Restore dashboards** page. +{{% /admonition %}} + ## Set up generative AI features for dashboards You can use generative AI to help you with the following tasks: diff --git a/docs/sources/dashboards/search-dashboards/index.md b/docs/sources/visualizations/dashboards/search-dashboards/index.md similarity index 98% rename from docs/sources/dashboards/search-dashboards/index.md rename to docs/sources/visualizations/dashboards/search-dashboards/index.md index 61126b9828c..63b3804fdeb 100644 --- a/docs/sources/dashboards/search-dashboards/index.md +++ b/docs/sources/visualizations/dashboards/search-dashboards/index.md @@ -28,6 +28,8 @@ refs: destination: /docs/grafana//setup-grafana/configure-grafana/#feature_toggles - pattern: /docs/grafana-cloud/ destination: /docs/grafana//setup-grafana/configure-grafana/#feature_toggles +aliases: + - ../../dashboards/search-dashboards/ # /docs/grafana/next/dashboards/search-dashboards/ --- # Search dashboards and folders diff --git a/docs/sources/dashboards/share-dashboards-panels/_index.md b/docs/sources/visualizations/dashboards/share-dashboards-panels/_index.md similarity index 96% rename from docs/sources/dashboards/share-dashboards-panels/_index.md rename to docs/sources/visualizations/dashboards/share-dashboards-panels/_index.md index 1b606ed8d0d..3454f719a0c 100644 --- a/docs/sources/dashboards/share-dashboards-panels/_index.md +++ b/docs/sources/visualizations/dashboards/share-dashboards-panels/_index.md @@ -1,13 +1,14 @@ --- aliases: - - ../reference/share_dashboard/ # /docs/grafana/latest/reference/share_dashboard/ - - ../reference/share_panel/ # /docs/grafana/latest/reference/share_panel/ - - ../share-dashboards-panels/ # /docs/grafana/latest/share-dashboards-panels/ - - ../sharing/ # /docs/grafana/latest/sharing/ - - ../sharing/playlists/ # /docs/grafana/latest/sharing/playlists/ - - ../sharing/share-dashboard/ # /docs/grafana/latest/sharing/share-dashboard/ - - ../sharing/share-panel/ # /docs/grafana/latest/sharing/share-panel/ - - share-dashboard/ # /docs/grafana/latest/dashboards/share-dashboard/ + - ../../reference/share_dashboard/ # /docs/grafana/next/reference/share_dashboard/ + - ../../reference/share_panel/ # /docs/grafana/next/reference/share_panel/ + - ../../share-dashboards-panels/ # /docs/grafana/next/share-dashboards-panels/ + - ../../sharing/ # /docs/grafana/next/sharing/ + - ../../sharing/playlists/ # /docs/grafana/next/sharing/playlists/ + - ../../sharing/share-dashboard/ # /docs/grafana/next/sharing/share-dashboard/ + - ../../sharing/share-panel/ # /docs/grafana/next/sharing/share-panel/ + - ../../dashboards/share-dashboard/ # /docs/grafana/next/dashboards/share-dashboard/ + - ../../dashboards/share-dashboards-panels/ # /docs/grafana/next/dashboards/share-dashboards-panels/ keywords: - grafana - dashboard diff --git a/docs/sources/dashboards/share-dashboards-panels/shared-dashboards/index.md b/docs/sources/visualizations/dashboards/share-dashboards-panels/shared-dashboards/index.md similarity index 98% rename from docs/sources/dashboards/share-dashboards-panels/shared-dashboards/index.md rename to docs/sources/visualizations/dashboards/share-dashboards-panels/shared-dashboards/index.md index 9ea6df4e47e..dc4b41ce1fd 100644 --- a/docs/sources/dashboards/share-dashboards-panels/shared-dashboards/index.md +++ b/docs/sources/visualizations/dashboards/share-dashboards-panels/shared-dashboards/index.md @@ -1,6 +1,7 @@ --- aliases: - - ../dashboard-public/ # /docs/grafana/latest/dashboards/dashboard-public/ + - ../../../dashboards/dashboard-public/ # /docs/grafana/next/dashboards/dashboard-public/ + - ../../../dashboards/share-dashboards-panels/shared-dashboards/ # /docs/grafana/next/dashboards/share-dashboards-panels/shared-dashboards/ labels: products: - cloud diff --git a/docs/sources/dashboards/troubleshoot-dashboards/index.md b/docs/sources/visualizations/dashboards/troubleshoot-dashboards/index.md similarity index 91% rename from docs/sources/dashboards/troubleshoot-dashboards/index.md rename to docs/sources/visualizations/dashboards/troubleshoot-dashboards/index.md index bb6530b7952..c04defe36c4 100644 --- a/docs/sources/dashboards/troubleshoot-dashboards/index.md +++ b/docs/sources/visualizations/dashboards/troubleshoot-dashboards/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../troubleshooting/troubleshoot-dashboards/ - - ../reference/timerange/ + - ../../troubleshooting/troubleshoot-dashboards/ # /docs/grafana/next/troubleshooting/troubleshoot-dashboards/ + - ../../reference/timerange/ # /docs/grafana/next/reference/timerange/ + - ../../dashboards/troubleshoot-dashboards/ # /docs/grafana/next/dashboards/troubleshoot-dashboards/ canonical: https://grafana.com/docs/grafana/latest/dashboards/troubleshoot-dashboards/ keywords: - grafana diff --git a/docs/sources/dashboards/use-dashboards/index.md b/docs/sources/visualizations/dashboards/use-dashboards/index.md similarity index 95% rename from docs/sources/dashboards/use-dashboards/index.md rename to docs/sources/visualizations/dashboards/use-dashboards/index.md index 5d956b4c380..108d6bc8136 100644 --- a/docs/sources/dashboards/use-dashboards/index.md +++ b/docs/sources/visualizations/dashboards/use-dashboards/index.md @@ -1,12 +1,13 @@ --- aliases: - - ../reference/search/ - - dashboard-ui/ - - dashboard-ui/dashboard-header/ - - dashboard-ui/dashboard-row/ - - search/ - - shortcuts/ - - time-range-controls/ + - ../../reference/search/ # /docs/grafana/next/reference/search/ + - ../../dashboards/dashboard-ui/ # /docs/grafana/next/dashboards/dashboard-ui/ + - ../../dashboards/dashboard-ui/dashboard-header/ # /docs/grafana/next/dashboards/dashboard-ui/dashboard-header/ + - ../../dashboards/dashboard-ui/dashboard-row/ # /docs/grafana/next/dashboards/dashboard-ui/dashboard-row/ + - ../../dashboards/search/ # /docs/grafana/next/dashboards/search/ + - ../../dashboards/shortcuts/ # /docs/grafana/next/dashboards/shortcuts/ + - ../../dashboards/time-range-controls/ # /docs/grafana/next/dashboards/time-range-controls/ + - ../../dashboards/use-dashboards/ # /docs/grafana/next/dashboards/use-dashboards/ keywords: - dashboard - search diff --git a/docs/sources/dashboards/variables/_index.md b/docs/sources/visualizations/dashboards/variables/_index.md similarity index 93% rename from docs/sources/dashboards/variables/_index.md rename to docs/sources/visualizations/dashboards/variables/_index.md index da7451271d2..df11c5d64ac 100644 --- a/docs/sources/dashboards/variables/_index.md +++ b/docs/sources/visualizations/dashboards/variables/_index.md @@ -1,8 +1,9 @@ --- aliases: - - ../variables/ # /docs/grafana//variables/ - - ../variables/templates-and-variables/ # /docs/grafana//variables/templates-and-variables/ - - ../variables/variable-examples/ # /docs/grafana//variables/variable-examples/ + - ../../variables/ # /docs/grafana/next/variables/ + - ../../variables/templates-and-variables/ # /docs/grafana/next/variables/templates-and-variables/ + - ../../variables/variable-examples/ # /docs/grafana/next/variables/variable-examples/ + - ../../dashboards/variables/ # /docs/grafana/next/dashboards/variables/ labels: products: - cloud diff --git a/docs/sources/dashboards/variables/add-template-variables/index.md b/docs/sources/visualizations/dashboards/variables/add-template-variables/index.md similarity index 94% rename from docs/sources/dashboards/variables/add-template-variables/index.md rename to docs/sources/visualizations/dashboards/variables/add-template-variables/index.md index b41615cd4e7..0343d78fb91 100644 --- a/docs/sources/dashboards/variables/add-template-variables/index.md +++ b/docs/sources/visualizations/dashboards/variables/add-template-variables/index.md @@ -1,30 +1,31 @@ --- aliases: - - ../../reference/templating/ - - ../../variables/add-ad-hoc-filters/ - - ../../variables/add-constant-variable/ - - ../../variables/add-custom-variable/ - - ../../variables/add-data-source-variable/ - - ../../variables/add-interval-variable/ - - ../../variables/add-query-variable/ - - ../../variables/add-template-variables/ - - ../../variables/add-text-box-variable/ - - ../../variables/chained-variables/ - - ../../variables/filter-variables-with-regex/ - - ../../variables/formatting-multi-value-variables/ - - ../../variables/global-variables/ - - ../../variables/manage-variable/ - - ../../variables/variable-selection-options/ - - ../../variables/variable-types/ - - ../../variables/variable-types/add-ad-hoc-filters/ - - ../../variables/variable-types/add-constant-variable/ - - ../../variables/variable-types/add-custom-variable/ - - ../../variables/variable-types/add-data-source-variable/ - - ../../variables/variable-types/add-interval-variable/ - - ../../variables/variable-types/add-query-variable/ - - ../../variables/variable-types/add-text-box-variable/ - - ../../variables/variable-types/chained-variables/ - - ../../variables/variable-types/global-variables/ + - ../../../reference/templating/ # /docs/grafana/next/reference/templating/ + - ../../../variables/add-ad-hoc-filters/ # /docs/grafana/next/variables/add-ad-hoc-filters/ + - ../../../variables/add-constant-variable/ # /docs/grafana/next/variables/add-constant-variable/ + - ../../../variables/add-custom-variable/ # /docs/grafana/next/variables/add-custom-variable/ + - ../../../variables/add-data-source-variable/ # /docs/grafana/next/variables/add-data-source-variable/ + - ../../../variables/add-interval-variable/ # /docs/grafana/next/variables/add-interval-variable/ + - ../../../variables/add-query-variable/ # /docs/grafana/next/variables/add-query-variable/ + - ../../../variables/add-template-variables/ # /docs/grafana/next/variables/add-template-variables/ + - ../../../variables/add-text-box-variable/ # /docs/grafana/next/variables/add-text-box-variable/ + - ../../../variables/chained-variables/ # /docs/grafana/next/variables/chained-variables/ + - ../../../variables/filter-variables-with-regex/ # /docs/grafana/next/variables/filter-variables-with-regex/ + - ../../../variables/formatting-multi-value-variables/ # /docs/grafana/next/variables/formatting-multi-value-variables/ + - ../../../variables/global-variables/ # /docs/grafana/next/variables/global-variables/ + - ../../../variables/manage-variable/ # /docs/grafana/next/variables/manage-variable/ + - ../../../variables/variable-selection-options/ # /docs/grafana/next/variables/variable-selection-options/ + - ../../../variables/variable-types/ # /docs/grafana/next/variables/variable-types/ + - ../../../variables/variable-types/add-ad-hoc-filters/ # /docs/grafana/next/variables/variable-types/add-ad-hoc-filters/ + - ../../../variables/variable-types/add-constant-variable/ # /docs/grafana/next/variables/variable-types/add-constant-variable/ + - ../../../variables/variable-types/add-custom-variable/ # /docs/grafana/next/variables/variable-types/add-custom-variable/ + - ../../../variables/variable-types/add-data-source-variable/ # /docs/grafana/next/variables/variable-types/add-data-source-variable/ + - ../../../variables/variable-types/add-interval-variable/ # /docs/grafana/next/variables/variable-types/add-interval-variable/ + - ../../../variables/variable-types/add-query-variable/ # /docs/grafana/next/variables/variable-types/add-query-variable/ + - ../../../variables/variable-types/add-text-box-variable/ # /docs/grafana/next/variables/variable-types/add-text-box-variable/ + - ../../../variables/variable-types/chained-variables/ # /docs/grafana/next/variables/variable-types/chained-variables/ + - ../../../variables/variable-types/global-variables/ # /docs/grafana/next/variables/variable-types/global-variables/ + - ../../../dashboards/variables/add-template-variables/ # /docs/grafana/next/dashboards/variables/add-template-variables/ keywords: - grafana - documentation diff --git a/docs/sources/dashboards/variables/inspect-variable/index.md b/docs/sources/visualizations/dashboards/variables/inspect-variable/index.md similarity index 90% rename from docs/sources/dashboards/variables/inspect-variable/index.md rename to docs/sources/visualizations/dashboards/variables/inspect-variable/index.md index bcdb8635141..8466a4228ce 100644 --- a/docs/sources/dashboards/variables/inspect-variable/index.md +++ b/docs/sources/visualizations/dashboards/variables/inspect-variable/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../reference/templating/ - - ../../variables/inspect-variable/ + - ../../../reference/templating/ # /docs/grafana/next/reference/templating/ + - ../../../variables/inspect-variable/ # /docs/grafana/next/variables/inspect-variable/ + - ../../../dashboards/variables/inspect-variable/ # /docs/grafana/next/dashboards/variables/inspect-variable/ keywords: - grafana - templating diff --git a/docs/sources/dashboards/variables/variable-syntax/index.md b/docs/sources/visualizations/dashboards/variables/variable-syntax/index.md similarity index 94% rename from docs/sources/dashboards/variables/variable-syntax/index.md rename to docs/sources/visualizations/dashboards/variables/variable-syntax/index.md index 7d0fbc81993..2c0b4060921 100644 --- a/docs/sources/dashboards/variables/variable-syntax/index.md +++ b/docs/sources/visualizations/dashboards/variables/variable-syntax/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../reference/templating/ - - ../../variables/advanced-variable-format-options/ - - ../../variables/syntax/ + - ../../../reference/templating/ # /docs/grafana/next/reference/templating/ + - ../../../variables/advanced-variable-format-options/ # /docs/grafana/next/variables/advanced-variable-format-options/ + - ../../../variables/syntax/ # /docs/grafana/next/variables/syntax/ + - ../../../dashboards/variables/variable-syntax/ # /docs/grafana/next/dashboards/variables/variable-syntax/ keywords: - grafana - templating diff --git a/docs/sources/explore/_index.md b/docs/sources/visualizations/explore/_index.md similarity index 91% rename from docs/sources/explore/_index.md rename to docs/sources/visualizations/explore/_index.md index 0deda3011d3..3ef9659a165 100644 --- a/docs/sources/explore/_index.md +++ b/docs/sources/visualizations/explore/_index.md @@ -1,6 +1,8 @@ --- aliases: - - features/explore/ + - ../features/explore/ # /docs/grafana/next/features/explore/ + - ../explore/ # /docs/grafana/next/explore/ + - /docs/grafana-cloud/visualizations/explore/ keywords: - explore - loki diff --git a/docs/sources/explore/correlations-editor-in-explore.md b/docs/sources/visualizations/explore/correlations-editor-in-explore.md similarity index 98% rename from docs/sources/explore/correlations-editor-in-explore.md rename to docs/sources/visualizations/explore/correlations-editor-in-explore.md index 7f93fd30dc6..fde5d933103 100644 --- a/docs/sources/explore/correlations-editor-in-explore.md +++ b/docs/sources/visualizations/explore/correlations-editor-in-explore.md @@ -6,6 +6,8 @@ labels: - cloud title: Correlations Editor in Explore weight: 20 +aliases: + - ../../explore/correlations-editor-in-explore/ # /docs/grafana/next/explore/correlations-editor-in-explore/ --- # Correlations Editor in Explore diff --git a/docs/sources/explore/explore-inspector.md b/docs/sources/visualizations/explore/explore-inspector.md similarity index 96% rename from docs/sources/explore/explore-inspector.md rename to docs/sources/visualizations/explore/explore-inspector.md index 6880f292e82..17074a21fab 100644 --- a/docs/sources/explore/explore-inspector.md +++ b/docs/sources/visualizations/explore/explore-inspector.md @@ -9,6 +9,9 @@ keywords: - Explore title: Query inspector in Explore weight: 15 +aliases: + - ../../explore/explore-inspector/ # /docs/grafana/next/explore/explore-inspector/ + - /docs/grafana-cloud/visualizations/explore/explore-inspector/ --- # Query inspector in Explore diff --git a/docs/sources/explore/get-started-with-explore.md b/docs/sources/visualizations/explore/get-started-with-explore.md similarity index 99% rename from docs/sources/explore/get-started-with-explore.md rename to docs/sources/visualizations/explore/get-started-with-explore.md index 5b7a97b85d9..8874741cb44 100644 --- a/docs/sources/explore/get-started-with-explore.md +++ b/docs/sources/visualizations/explore/get-started-with-explore.md @@ -1,6 +1,6 @@ --- aliases: - - + - ../../explore/get-started-with-explore/ # /docs/grafana/next/explore/get-started-with-explore/ keywords: - explore - loki diff --git a/docs/sources/explore/logs-integration.md b/docs/sources/visualizations/explore/logs-integration.md similarity index 99% rename from docs/sources/explore/logs-integration.md rename to docs/sources/visualizations/explore/logs-integration.md index 42af2ccc0e0..8aa18f45616 100644 --- a/docs/sources/explore/logs-integration.md +++ b/docs/sources/visualizations/explore/logs-integration.md @@ -10,6 +10,8 @@ labels: - oss title: Logs in Explore weight: 25 +aliases: + - ../../explore/logs-integration/ # /docs/grafana/next/explore/logs-integration/ --- # Logs in Explore diff --git a/docs/sources/explore/query-management.md b/docs/sources/visualizations/explore/query-management.md similarity index 97% rename from docs/sources/explore/query-management.md rename to docs/sources/visualizations/explore/query-management.md index 11f86be67c9..4be1a932ea8 100644 --- a/docs/sources/explore/query-management.md +++ b/docs/sources/visualizations/explore/query-management.md @@ -16,6 +16,8 @@ refs: destination: /docs/grafana//panels-visualizations/query-transform-data/#saved-queries - pattern: /docs/grafana-cloud/ destination: /docs/grafana-cloud/visualizations/panels-visualizations/query-transform-data/#saved-queries +aliases: + - ../../explore/query-management/ # /docs/grafana/next/explore/query-management/ --- # Query management in Explore diff --git a/docs/sources/explore/trace-integration.md b/docs/sources/visualizations/explore/trace-integration.md similarity index 99% rename from docs/sources/explore/trace-integration.md rename to docs/sources/visualizations/explore/trace-integration.md index e1675c3d414..9a07f6ad18c 100644 --- a/docs/sources/explore/trace-integration.md +++ b/docs/sources/visualizations/explore/trace-integration.md @@ -9,6 +9,8 @@ labels: - oss title: Traces in Explore weight: 40 +aliases: + - ../../explore/trace-integration/ # /docs/grafana/next/explore/trace-integration/ --- # Traces in Explore diff --git a/docs/sources/panels-visualizations/_index.md b/docs/sources/visualizations/panels-visualizations/_index.md similarity index 89% rename from docs/sources/panels-visualizations/_index.md rename to docs/sources/visualizations/panels-visualizations/_index.md index d6f2e0982e8..642c1ba183b 100644 --- a/docs/sources/panels-visualizations/_index.md +++ b/docs/sources/visualizations/panels-visualizations/_index.md @@ -1,8 +1,9 @@ --- aliases: - - dashboards/configure-panels-visualizations/ - - features/panels/panels/ - - panels/ + - ../dashboards/configure-panels-visualizations/ # /docs/grafana/next/dashboards/configure-panels-visualizations/ + - ../features/panels/panels/ # /docs/grafana/next/features/panels/panels/ + - ../panels/ # /docs/grafana/next/panels/ + - ../panels-visualizations/ # /docs/grafana/next/panels-visualizations/ keywords: - grafana - configure diff --git a/docs/sources/panels-visualizations/configure-data-links/index.md b/docs/sources/visualizations/panels-visualizations/configure-data-links/index.md similarity index 96% rename from docs/sources/panels-visualizations/configure-data-links/index.md rename to docs/sources/visualizations/panels-visualizations/configure-data-links/index.md index ad1724acb09..7d72bcba934 100644 --- a/docs/sources/panels-visualizations/configure-data-links/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-data-links/index.md @@ -1,11 +1,12 @@ --- aliases: - - ../linking/data-link-variables/ - - ../linking/data-links/ - - ../panels/configure-data-links/ - - ../reference/datalinks/ - - ../variables/url-variables/ - - ../variables/variable-types/url-variables/ + - ../../linking/data-link-variables/ # /docs/grafana/next/linking/data-link-variables/ + - ../../linking/data-links/ # /docs/grafana/next/linking/data-links/ + - ../../panels/configure-data-links/ # /docs/grafana/next/panels/configure-data-links/ + - ../../reference/datalinks/ # /docs/grafana/next/reference/datalinks/ + - ../../variables/url-variables/ # /docs/grafana/next/variables/url-variables/ + - ../../variables/variable-types/url-variables/ # /docs/grafana/next/variables/variable-types/url-variables/ + - ../../panels-visualizations/configure-data-links/ # /docs/grafana/next/panels-visualizations/configure-data-links/ keywords: - grafana - url variables diff --git a/docs/sources/panels-visualizations/configure-legend/index.md b/docs/sources/visualizations/panels-visualizations/configure-legend/index.md similarity index 95% rename from docs/sources/panels-visualizations/configure-legend/index.md rename to docs/sources/visualizations/panels-visualizations/configure-legend/index.md index 4f7a6e27648..8c8baa81800 100644 --- a/docs/sources/panels-visualizations/configure-legend/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-legend/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../panels/working-with-panels/configure-legend/ - - visualizations/configure-legend/ + - ../../panels/working-with-panels/configure-legend/ # /docs/grafana/next/panels/working-with-panels/configure-legend/ + - ../../panels-visualizations/visualizations/configure-legend/ # /docs/grafana/next/panels-visualizations/visualizations/configure-legend/ + - ../../panels-visualizations/configure-legend/ # /docs/grafana/next/panels-visualizations/configure-legend/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/configure-overrides/index.md b/docs/sources/visualizations/panels-visualizations/configure-overrides/index.md similarity index 92% rename from docs/sources/panels-visualizations/configure-overrides/index.md rename to docs/sources/visualizations/panels-visualizations/configure-overrides/index.md index c01a72bd781..c46223ac73b 100644 --- a/docs/sources/panels-visualizations/configure-overrides/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-overrides/index.md @@ -1,13 +1,14 @@ --- aliases: - - ../panels/configure-overrides/ - - ../panels/field-overrides/ - - ../panels/override-field-values/ - - ../panels/override-field-values/about-field-overrides/ - - ../panels/override-field-values/add-a-field-override/ - - ../panels/override-field-values/delete-a-field-override/ - - ../panels/override-field-values/edit-field-override/ - - ../panels/override-field-values/view-field-override/ + - ../../panels/configure-overrides/ # /docs/grafana/next/panels/configure-overrides/ + - ../../panels/field-overrides/ # /docs/grafana/next/panels/field-overrides/ + - ../../panels/override-field-values/ # /docs/grafana/next/panels/override-field-values/ + - ../../panels/override-field-values/about-field-overrides/ # /docs/grafana/next/panels/override-field-values/about-field-overrides/ + - ../../panels/override-field-values/add-a-field-override/ # /docs/grafana/next/panels/override-field-values/add-a-field-override/ + - ../../panels/override-field-values/delete-a-field-override/ # /docs/grafana/next/panels/override-field-values/delete-a-field-override/ + - ../../panels/override-field-values/edit-field-override/ # /docs/grafana/next/panels/override-field-values/edit-field-override/ + - ../../panels/override-field-values/view-field-override/ # /docs/grafana/next/panels/override-field-values/view-field-override/ + - ../../panels-visualizations/configure-overrides/ # /docs/grafana/next/panels-visualizations/configure-overrides/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/configure-panel-options/index.md b/docs/sources/visualizations/panels-visualizations/configure-panel-options/index.md similarity index 91% rename from docs/sources/panels-visualizations/configure-panel-options/index.md rename to docs/sources/visualizations/panels-visualizations/configure-panel-options/index.md index dc7c8601c11..3a2185d699a 100644 --- a/docs/sources/panels-visualizations/configure-panel-options/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-panel-options/index.md @@ -1,10 +1,11 @@ --- aliases: - - ../panels/add-panels-dynamically/ - - ../panels/configure-panel-options/ - - ../panels/repeat-panels-or-rows/ - - ../panels/working-with-panels/add-title-and-description/ - - ../panels/working-with-panels/view-json-model/ + - ../../panels/add-panels-dynamically/ # /docs/grafana/next/panels/add-panels-dynamically/ + - ../../panels/configure-panel-options/ # /docs/grafana/next/panels/configure-panel-options/ + - ../../panels/repeat-panels-or-rows/ # /docs/grafana/next/panels/repeat-panels-or-rows/ + - ../../panels/working-with-panels/add-title-and-description/ # /docs/grafana/next/panels/working-with-panels/add-title-and-description/ + - ../../panels/working-with-panels/view-json-model/ # /docs/grafana/next/panels/working-with-panels/view-json-model/ + - ../../panels-visualizations/configure-panel-options/ # /docs/grafana/next/panels-visualizations/configure-panel-options/ keywords: - panel - dynamic diff --git a/docs/sources/panels-visualizations/configure-standard-options/index.md b/docs/sources/visualizations/panels-visualizations/configure-standard-options/index.md similarity index 95% rename from docs/sources/panels-visualizations/configure-standard-options/index.md rename to docs/sources/visualizations/panels-visualizations/configure-standard-options/index.md index c4ed1caa981..ca35f5df71c 100644 --- a/docs/sources/panels-visualizations/configure-standard-options/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-standard-options/index.md @@ -1,13 +1,14 @@ --- aliases: - - ../panels/apply-color-to-series/ - - ../panels/configure-standard-options/ - - ../panels/field-options/ - - ../panels/field-options/standard-field-options/ - - ../panels/reference-standard-field-definitions/ - - ../panels/standard-field-definitions/ - - ../panels/working-with-panels/format-standard-fields/ - - ../panels/field-configuration-options/ # /docs/grafana/latest/panels/field-configuration-options/ + - ../../panels/apply-color-to-series/ # /docs/grafana/next/panels/apply-color-to-series/ + - ../../panels/configure-standard-options/ # /docs/grafana/next/panels/configure-standard-options/ + - ../../panels/field-options/ # /docs/grafana/next/panels/field-options/ + - ../../panels/field-options/standard-field-options/ # /docs/grafana/next/panels/field-options/standard-field-options/ + - ../../panels/reference-standard-field-definitions/ # /docs/grafana/next/panels/reference-standard-field-definitions/ + - ../../panels/standard-field-definitions/ # /docs/grafana/next/panels/standard-field-definitions/ + - ../../panels/working-with-panels/format-standard-fields/ # /docs/grafana/next/panels/working-with-panels/format-standard-fields/ + - ../../panels/field-configuration-options/ # /docs/grafana/next/panels/field-configuration-options/ + - ../../panels-visualizations/configure-standard-options/ # /docs/grafana/next/panels-visualizations/configure-standard-options/ keywords: - panel - dashboard diff --git a/docs/sources/panels-visualizations/configure-thresholds/index.md b/docs/sources/visualizations/panels-visualizations/configure-thresholds/index.md similarity index 92% rename from docs/sources/panels-visualizations/configure-thresholds/index.md rename to docs/sources/visualizations/panels-visualizations/configure-thresholds/index.md index cf0805a5e93..d4ebc5c123c 100644 --- a/docs/sources/panels-visualizations/configure-thresholds/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-thresholds/index.md @@ -1,12 +1,13 @@ --- aliases: - - ../panels/ - - ../panels/configure-thresholds/ - - ../panels/specify-thresholds/about-thresholds/ - - ../panels/specify-thresholds/add-a-threshold/ - - ../panels/specify-thresholds/add-threshold-to-graph/ - - ../panels/specify-thresholds/delete-a-threshold/ - - ../panels/thresholds/ + - ../../panels/ # /docs/grafana/next/panels/ + - ../../panels/configure-thresholds/ # /docs/grafana/next/panels/configure-thresholds/ + - ../../panels/specify-thresholds/about-thresholds/ # /docs/grafana/next/panels/specify-thresholds/about-thresholds/ + - ../../panels/specify-thresholds/add-a-threshold/ # /docs/grafana/next/panels/specify-thresholds/add-a-threshold/ + - ../../panels/specify-thresholds/add-threshold-to-graph/ # /docs/grafana/next/panels/specify-thresholds/add-threshold-to-graph/ + - ../../panels/specify-thresholds/delete-a-threshold/ # /docs/grafana/next/panels/specify-thresholds/delete-a-threshold/ + - ../../panels/thresholds/ # /docs/grafana/next/panels/thresholds/ + - ../../panels-visualizations/configure-thresholds/ # /docs/grafana/next/panels-visualizations/configure-thresholds/ description: Configure thresholds in your visualizations labels: products: diff --git a/docs/sources/panels-visualizations/configure-tooltips/index.md b/docs/sources/visualizations/panels-visualizations/configure-tooltips/index.md similarity index 100% rename from docs/sources/panels-visualizations/configure-tooltips/index.md rename to docs/sources/visualizations/panels-visualizations/configure-tooltips/index.md diff --git a/docs/sources/panels-visualizations/configure-value-mappings/index.md b/docs/sources/visualizations/panels-visualizations/configure-value-mappings/index.md similarity index 90% rename from docs/sources/panels-visualizations/configure-value-mappings/index.md rename to docs/sources/visualizations/panels-visualizations/configure-value-mappings/index.md index 11223d3870b..1e8cb947a69 100644 --- a/docs/sources/panels-visualizations/configure-value-mappings/index.md +++ b/docs/sources/visualizations/panels-visualizations/configure-value-mappings/index.md @@ -1,14 +1,15 @@ --- aliases: - - ../panels/configure-value-mappings/ - - ../panels/format-data/ - - ../panels/format-data/about-value-mapping/ - - ../panels/format-data/edit-value-mapping/ - - ../panels/format-data/map-a-range/ - - ../panels/format-data/map-a-regular-expression/ - - ../panels/format-data/map-a-special-value/ - - ../panels/format-data/map-a-value/ - - ../panels/value-mappings/ + - ../../configure-value-mappings/ # /docs/grafana/next/panels/configure-value-mappings/ + - ../../panels/format-data/ # /docs/grafana/next/panels/format-data/ + - ../../panels/format-data/about-value-mapping/ # /docs/grafana/next/panels/format-data/about-value-mapping/ + - ../../panels/format-data/edit-value-mapping/ # /docs/grafana/next/panels/format-data/edit-value-mapping/ + - ../../panels/format-data/map-a-range/ # /docs/grafana/next/panels/format-data/map-a-range/ + - ../../panels/format-data/map-a-regular-expression/ # /docs/grafana/next/panels/format-data/map-a-regular-expression/ + - ../../panels/format-data/map-a-special-value/ # /docs/grafana/next/panels/format-data/map-a-special-value/ + - ../../panels/format-data/map-a-value/ # /docs/grafana/next/panels/format-data/map-a-value/ + - ../../panels/value-mappings/ # /docs/grafana/next/panels/value-mappings/ + - ../../panels-visualizations/configure-value-mappings/ # /docs/grafana/next/panels-visualizations/configure-value-mappings/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/panel-editor-overview/index.md b/docs/sources/visualizations/panels-visualizations/panel-editor-overview/index.md similarity index 77% rename from docs/sources/panels-visualizations/panel-editor-overview/index.md rename to docs/sources/visualizations/panels-visualizations/panel-editor-overview/index.md index fbde6ce7975..0a2247537cf 100644 --- a/docs/sources/panels-visualizations/panel-editor-overview/index.md +++ b/docs/sources/visualizations/panels-visualizations/panel-editor-overview/index.md @@ -1,15 +1,16 @@ --- aliases: - - ../dashboards/add-organize-panels/ - - ../dashboards/dashboard-create/ - - ../panels/add-panels-dynamically/about-repeating-panels-rows/ - - ../panels/add-panels-dynamically/configure-repeating-panels/ - - ../panels/add-panels-dynamically/configure-repeating-rows/ - - ../panels/working-with-panels/ - - ../panels/working-with-panels/add-panel/ - - ../panels/working-with-panels/navigate-inspector-panel/ - - ../panels/working-with-panels/navigate-panel-editor/ - - add-organize-panels/ + - ../../dashboards/add-organize-panels/ # /docs/grafana/next/dashboards/add-organize-panels/ + - ../../dashboards/dashboard-create/ # /docs/grafana/next/dashboards/dashboard-create/ + - ../../panels/add-panels-dynamically/about-repeating-panels-rows/ # /docs/grafana/next/panels/add-panels-dynamically/about-repeating-panels-rows/ + - ../../panels/add-panels-dynamically/configure-repeating-panels/ # /docs/grafana/next/panels/add-panels-dynamically/configure-repeating-panels/ + - ../../panels/add-panels-dynamically/configure-repeating-rows/ # /docs/grafana/next/panels/add-panels-dynamically/configure-repeating-rows/ + - ../../panels/working-with-panels/ # /docs/grafana/next/panels/working-with-panels/ + - ../../panels/working-with-panels/add-panel/ # /docs/grafana/next/panels/working-with-panels/add-panel/ + - ../../panels/working-with-panels/navigate-inspector-panel/ # /docs/grafana/next/panels/working-with-panels/navigate-inspector-panel/ + - ../../panels/working-with-panels/navigate-panel-editor/ # /docs/grafana/next/panels/working-with-panels/navigate-panel-editor/ + - ../../panels-visualizations/add-organize-panels/ # /docs/grafana/next/panels-visualizations/add-organize-panels/ + - ../../panels-visualizations/panel-editor-overview/ # /docs/grafana/next/panels-visualizations/panel-editor-overview/ keywords: - panel - dashboard diff --git a/docs/sources/panels-visualizations/panel-inspector/index.md b/docs/sources/visualizations/panels-visualizations/panel-inspector/index.md similarity index 83% rename from docs/sources/panels-visualizations/panel-inspector/index.md rename to docs/sources/visualizations/panels-visualizations/panel-inspector/index.md index d751957a171..15cfc8d7ed6 100644 --- a/docs/sources/panels-visualizations/panel-inspector/index.md +++ b/docs/sources/visualizations/panels-visualizations/panel-inspector/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../panels/query-a-data-source/download-raw-query-results/ - - ../panels/query-a-data-source/inspect-query-performance/ - - ../panels/query-a-data-source/inspect-request-and-response-data/ - - ../panels/working-with-panels/navigate-inspector-panel/ + - ../../panels/query-a-data-source/download-raw-query-results/ # /docs/grafana/next/panels/query-a-data-source/download-raw-query-results/ + - ../../panels/query-a-data-source/inspect-query-performance/ # /docs/grafana/next/panels/query-a-data-source/inspect-query-performance/ + - ../../panels/query-a-data-source/inspect-request-and-response-data/ # /docs/grafana/next/panels/query-a-data-source/inspect-request-and-response-data/ + - ../../panels/working-with-panels/navigate-inspector-panel/ # /docs/grafana/next/panels/working-with-panels/navigate-inspector-panel/ + - ../../panels-visualizations/panel-inspector/ # /docs/grafana/next/panels-visualizations/panel-inspector/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/panel-overview/index.md b/docs/sources/visualizations/panels-visualizations/panel-overview/index.md similarity index 98% rename from docs/sources/panels-visualizations/panel-overview/index.md rename to docs/sources/visualizations/panels-visualizations/panel-overview/index.md index edb390ef143..299f3963e30 100644 --- a/docs/sources/panels-visualizations/panel-overview/index.md +++ b/docs/sources/visualizations/panels-visualizations/panel-overview/index.md @@ -102,6 +102,8 @@ refs: destination: /docs/grafana//panels-visualizations/configure-thresholds/ - pattern: /docs/grafana-cloud/ destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-thresholds/ +aliases: + - ../../panels-visualizations/panel-overview/ # /docs/grafana/next/panels-visualizations/panel-overview/ --- # Panel overview diff --git a/docs/sources/panels-visualizations/query-transform-data/_index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/_index.md similarity index 93% rename from docs/sources/panels-visualizations/query-transform-data/_index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/_index.md index 10d810409c0..42dcf1338b7 100644 --- a/docs/sources/panels-visualizations/query-transform-data/_index.md +++ b/docs/sources/visualizations/panels-visualizations/query-transform-data/_index.md @@ -1,18 +1,19 @@ --- aliases: - - ../panels/expressions/ - - ../panels/inspect-panel/ - - ../panels/queries/ - - ../panels/query-a-data-source/ - - ../panels/query-a-data-source/about-queries/ - - ../panels/query-a-data-source/add-a-query/ - - ../panels/query-a-data-source/manage-queries/ - - ../panels/query-a-data-source/navigate-query-tab/ - - ../panels/query-options/ - - ../panels/reference-query-options/ - - ../panels/share-query-results/ - - manage-queries/ - - query-options/ + - ../../panels-visualizations/manage-queries/ # /docs/grafana/next/panels-visualizations/manage-queries/ + - ../../panels-visualizations/query-options/ # /docs/grafana/next/panels-visualizations/query-options/ + - ../../panels-visualizations/query-transform-data/ # /docs/grafana/next/panels-visualizations/query-transform-data/ + - ../../panels/expressions/ # /docs/grafana/next/panels/expressions/ + - ../../panels/inspect-panel/ # /docs/grafana/next/panels/inspect-panel/ + - ../../panels/queries/ # /docs/grafana/next/panels/queries/ + - ../../panels/query-a-data-source/ # /docs/grafana/next/panels/query-a-data-source/ + - ../../panels/query-a-data-source/about-queries/ # /docs/grafana/next/panels/query-a-data-source/about-queries/ + - ../../panels/query-a-data-source/add-a-query/ # /docs/grafana/next/panels/query-a-data-source/add-a-query/ + - ../../panels/query-a-data-source/manage-queries/ # /docs/grafana/next/panels/query-a-data-source/manage-queries/ + - ../../panels/query-a-data-source/navigate-query-tab/ # /docs/grafana/next/panels/query-a-data-source/navigate-query-tab/ + - ../../panels/query-options/ # /docs/grafana/next/panels/query-options/ + - ../../panels/reference-query-options/ # /docs/grafana/next/panels/reference-query-options/ + - ../../panels/share-query-results/ # /docs/grafana/next/panels/share-query-results/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/query-transform-data/calculation-types/index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/calculation-types/index.md similarity index 81% rename from docs/sources/panels-visualizations/query-transform-data/calculation-types/index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/calculation-types/index.md index 1306197d901..6fe97955ba8 100644 --- a/docs/sources/panels-visualizations/query-transform-data/calculation-types/index.md +++ b/docs/sources/visualizations/panels-visualizations/query-transform-data/calculation-types/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../../panels/calculation-types/ # /docs/grafana//panels/calculation-types/ - - ../../panels/calculations-list/ # /docs/grafana//panels/calculations-list/ - - ../../panels/reference-calculation-types/ # /docs/grafana//panels/reference-calculation-types/ - - ../calculation-types/ # /docs/grafana//panels-visualizations/calculation-types/ + - ../../../panels-visualizations/calculation-types/ # /docs/grafana/next/panels-visualizations/calculation-types/ + - ../../../panels-visualizations/query-transform-data/calculation-types/ # /docs/grafana/next/panels-visualizations/query-transform-data/calculation-types/ + - ../../../panels/calculation-types/ # /docs/grafana//panels/calculation-types/ + - ../../../panels/calculations-list/ # /docs/grafana//panels/calculations-list/ + - ../../../panels/reference-calculation-types/ # /docs/grafana//panels/reference-calculation-types/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/query-transform-data/expression-queries/index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/expression-queries/index.md similarity index 94% rename from docs/sources/panels-visualizations/query-transform-data/expression-queries/index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/expression-queries/index.md index 652f668d106..cf6432be27a 100644 --- a/docs/sources/panels-visualizations/query-transform-data/expression-queries/index.md +++ b/docs/sources/visualizations/panels-visualizations/query-transform-data/expression-queries/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../../panels/query-a-data-source/use-expressions-to-manipulate-data/ - - ../../panels/query-a-data-source/use-expressions-to-manipulate-data/about-expressions/ - - ../../panels/query-a-data-source/use-expressions-to-manipulate-data/write-an-expression/ - - ./ + - ../../../panels-visualizations/query-transform-data/ # /docs/grafana/next/panels-visualizations/query-transform-data/ + - ../../../panels-visualizations/query-transform-data/expression-queries/ # /docs/grafana/next/panels-visualizations/query-transform-data/expression-queries/ + - ../../../panels/query-a-data-source/use-expressions-to-manipulate-data/ # /docs/grafana/next/panels/query-a-data-source/use-expressions-to-manipulate-data/ + - ../../../panels/query-a-data-source/use-expressions-to-manipulate-data/about-expressions/ # /docs/grafana/next/panels/query-a-data-source/use-expressions-to-manipulate-data/about-expressions/ + - ../../../panels/query-a-data-source/use-expressions-to-manipulate-data/write-an-expression/ # /docs/grafana/next/panels/query-a-data-source/use-expressions-to-manipulate-data/write-an-expression/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/query-transform-data/share-query/index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/share-query/index.md similarity index 89% rename from docs/sources/panels-visualizations/query-transform-data/share-query/index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/share-query/index.md index a7da8d12822..0dce820cc7b 100644 --- a/docs/sources/panels-visualizations/query-transform-data/share-query/index.md +++ b/docs/sources/visualizations/panels-visualizations/query-transform-data/share-query/index.md @@ -1,6 +1,7 @@ --- aliases: - - ../../panels/query-a-data-source/share-query/ + - ../../../panels/query-a-data-source/share-query/ # /docs/grafana/next/panels/query-a-data-source/share-query/ + - ../../../panels-visualizations/query-transform-data/share-query/ # /docs/grafana/next/panels-visualizations/query-transform-data/share-query/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/query-transform-data/sql-expressions/index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/sql-expressions/index.md similarity index 100% rename from docs/sources/panels-visualizations/query-transform-data/sql-expressions/index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/sql-expressions/index.md diff --git a/docs/sources/panels-visualizations/query-transform-data/transform-data/index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/transform-data/index.md similarity index 97% rename from docs/sources/panels-visualizations/query-transform-data/transform-data/index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/transform-data/index.md index fda106213f9..b6b3499b4d7 100644 --- a/docs/sources/panels-visualizations/query-transform-data/transform-data/index.md +++ b/docs/sources/visualizations/panels-visualizations/query-transform-data/transform-data/index.md @@ -18,21 +18,21 @@ comments: | Browse to http://localhost:3003/docs/grafana/latest/panels-visualizations/query-transform-data/transform-data/ Refer to ./docs/README.md "Content guidelines" for more information about editing and building these docs. - aliases: - - ../../panels/reference-transformation-functions/ - - ../../panels/transform-data/ - - ../../panels/transform-data/about-transformation/ - - ../../panels/transform-data/add-transformation-to-data/ - - ../../panels/transform-data/apply-transformation-to-data/ - - ../../panels/transform-data/debug-transformation/ - - ../../panels/transform-data/delete-transformation/ - - ../../panels/transform-data/transformation-functions/ - - ../../panels/transformations/ - - ../../panels/transformations/apply-transformations/ - - ../../panels/transformations/config-from-query/ - - ../../panels/transformations/rows-to-fields/ - - ../../panels/transformations/types-options/ + - ../../../panels/transform-data/ # /docs/grafana/next/panels/transform-data/ + - ../../../panels/transform-data/about-transformation/ # /docs/grafana/next/panels/transform-data/about-transformation/ + - ../../../panels/transform-data/add-transformation-to-data/ # /docs/grafana/next/panels/transform-data/add-transformation-to-data/ + - ../../../panels/transform-data/apply-transformation-to-data/ # /docs/grafana/next/panels/transform-data/apply-transformation-to-data/ + - ../../../panels/transform-data/debug-transformation/ # /docs/grafana/next/panels/transform-data/debug-transformation/ + - ../../../panels/transform-data/delete-transformation/ # /docs/grafana/next/panels/transform-data/delete-transformation/ + - ../../../panels/transform-data/transformation-functions/ # /docs/grafana/next/panels/transform-data/transformation-functions/ + - ../../../panels/transformations/ # /docs/grafana/next/panels/transformations/ + - ../../../panels/transformations/apply-transformations/ # /docs/grafana/next/panels/transformations/apply-transformations/ + - ../../../panels/transformations/config-from-query/ # /docs/grafana/next/panels/transformations/config-from-query/ + - ../../../panels/transformations/rows-to-fields/ # /docs/grafana/next/panels/transformations/rows-to-fields/ + - ../../../panels/transformations/types-options/ # /docs/grafana/next/panels/transformations/types-options/ + - ../../../panels/reference-transformation-functions/ # /docs/grafana/next/panels/reference-transformation-functions/ + - ../../../panels-visualizations/query-transform-data/transform-data/ # /docs/grafana/next/panels-visualizations/query-transform-data/transform-data/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/query-transform-data/troubleshoot-queries/index.md b/docs/sources/visualizations/panels-visualizations/query-transform-data/troubleshoot-queries/index.md similarity index 85% rename from docs/sources/panels-visualizations/query-transform-data/troubleshoot-queries/index.md rename to docs/sources/visualizations/panels-visualizations/query-transform-data/troubleshoot-queries/index.md index 5fd433320b9..d967aa9d80e 100644 --- a/docs/sources/panels-visualizations/query-transform-data/troubleshoot-queries/index.md +++ b/docs/sources/visualizations/panels-visualizations/query-transform-data/troubleshoot-queries/index.md @@ -1,6 +1,7 @@ --- aliases: - - ../../troubleshooting/troubleshoot-queries/ + - ../../../troubleshooting/troubleshoot-queries/ # /docs/grafana/next/troubleshooting/troubleshoot-queries/ + - ../../../panels-visualizations/query-transform-data/troubleshoot-queries/ # /docs/grafana/next/panels-visualizations/query-transform-data/troubleshoot-queries/ description: Troubleshoot Grafana queries keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/_index.md b/docs/sources/visualizations/panels-visualizations/visualizations/_index.md similarity index 95% rename from docs/sources/panels-visualizations/visualizations/_index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/_index.md index 454a9884dbc..a23a49ba713 100644 --- a/docs/sources/panels-visualizations/visualizations/_index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/_index.md @@ -1,11 +1,12 @@ --- aliases: - - ../features/panels/graph/ - - ../panels/visualizations/ - - ../panels/visualizations/graph-panel/ - - ../reference/graph/ - - ../visualizations/ - - ../visualizations/graph-panel/ + - ../../features/panels/graph/ # /docs/grafana/next/features/panels/graph/ + - ../../panels-visualizations/visualizations/ # /docs/grafana/next/panels-visualizations/visualizations/ + - ../../panels/visualizations/ # /docs/grafana/next/panels/visualizations/ + - ../../panels/visualizations/graph-panel/ # /docs/grafana/next/panels/visualizations/graph-panel/ + - ../../reference/graph/ # /docs/grafana/next/reference/graph/ + - ../../visualizations/ # /docs/grafana/next/visualizations/ + - ../../visualizations/graph-panel/ # /docs/grafana/next/visualizations/graph-panel/ labels: products: - cloud diff --git a/docs/sources/panels-visualizations/visualizations/alert-list/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/alert-list/index.md similarity index 91% rename from docs/sources/panels-visualizations/visualizations/alert-list/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/alert-list/index.md index 3e6550a8f5e..31ad53d0251 100644 --- a/docs/sources/panels-visualizations/visualizations/alert-list/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/alert-list/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../../features/panels/alertlist/ - - ../../panels/visualizations/alert-list-panel/ - - ../../reference/alertlist/ - - ../../visualizations/alert-list-panel/ + - ../../../features/panels/alertlist/ # /docs/grafana/next/features/panels/alertlist/ + - ../../../panels-visualizations/visualizations/alert-list/ # /docs/grafana/next/panels-visualizations/visualizations/alert-list/ + - ../../../panels/visualizations/alert-list-panel/ # /docs/grafana/next/panels/visualizations/alert-list-panel/ + - ../../../reference/alertlist/ # /docs/grafana/next/reference/alertlist/ + - ../../../visualizations/alert-list-panel/ # /docs/grafana/next/visualizations/alert-list-panel/ keywords: - grafana - alert list diff --git a/docs/sources/panels-visualizations/visualizations/annotations/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/annotations/index.md similarity index 90% rename from docs/sources/panels-visualizations/visualizations/annotations/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/annotations/index.md index d69ea3d95de..ff53ee4e0f4 100644 --- a/docs/sources/panels-visualizations/visualizations/annotations/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/annotations/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../features/panels/annotations/ - - ../../panels/visualizations/annotations/ - - ../../visualizations/annotations/ + - ../../../features/panels/annotations/ # /docs/grafana/next/features/panels/annotations/ + - ../../../panels/visualizations/annotations/ # /docs/grafana/next/panels/visualizations/annotations/ + - ../../annotations/ # /docs/grafana/next/visualizations/annotations/ + - ../../../panels-visualizations/visualizations/annotations/ # /docs/grafana/next/panels-visualizations/visualizations/annotations/ description: Configure options for Grafana's annotations list visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/bar-chart/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/bar-chart/index.md similarity index 97% rename from docs/sources/panels-visualizations/visualizations/bar-chart/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/bar-chart/index.md index 45a847aeac3..9e3f445e612 100644 --- a/docs/sources/panels-visualizations/visualizations/bar-chart/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/bar-chart/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../panels/visualizations/bar-chart/ - - ../../visualizations/bar-chart/ + - ../../../panels/visualizations/bar-chart/ # /docs/grafana/next/panels/visualizations/bar-chart/ + - ../../bar-chart/ # /docs/grafana/next/visualizations/bar-chart/ + - ../../../panels-visualizations/visualizations/bar-chart/ # /docs/grafana/next/panels-visualizations/visualizations/bar-chart/ description: Configure options for Grafana's bar chart visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/bar-gauge/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/bar-gauge/index.md similarity index 95% rename from docs/sources/panels-visualizations/visualizations/bar-gauge/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/bar-gauge/index.md index 72862007d31..90be816c461 100644 --- a/docs/sources/panels-visualizations/visualizations/bar-gauge/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/bar-gauge/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../features/panels/bar_gauge/ - - ../../panels/visualizations/bar-gauge-panel/ - - ../../visualizations/bar-gauge-panel/ + - ../../../features/panels/bar_gauge/ # /docs/grafana/next/features/panels/bar_gauge/ + - ../../../panels/visualizations/bar-gauge-panel/ # /docs/grafana/next/panels/visualizations/bar-gauge-panel/ + - ../../bar-gauge-panel/ # /docs/grafana/next/visualizations/bar-gauge-panel/ + - ../../../panels-visualizations/visualizations/bar-gauge/ # /docs/grafana/next/panels-visualizations/visualizations/bar-gauge/ description: Configure options for Grafana's bar gauge visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/candlestick/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/candlestick/index.md similarity index 98% rename from docs/sources/panels-visualizations/visualizations/candlestick/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/candlestick/index.md index dc0df1d1e9f..bc07d805000 100644 --- a/docs/sources/panels-visualizations/visualizations/candlestick/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/candlestick/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../features/panels/candlestick/ - - ../../panels/visualizations/candlestick/ - - ../../visualizations/candlestick/ + - ../../../features/panels/candlestick/ # /docs/grafana/next/features/panels/candlestick/ + - ../../../panels/visualizations/candlestick/ # /docs/grafana/next/panels/visualizations/candlestick/ + - ../../candlestick/ # /docs/grafana/next/visualizations/candlestick/ + - ../../../panels-visualizations/visualizations/candlestick/ # /docs/grafana/next/panels-visualizations/visualizations/candlestick/ description: Configure options for Grafana's candlestick visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/canvas/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/canvas/index.md similarity index 99% rename from docs/sources/panels-visualizations/visualizations/canvas/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/canvas/index.md index 76a18031449..821d547d7d3 100644 --- a/docs/sources/panels-visualizations/visualizations/canvas/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/canvas/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../features/panels/canvas/ - - ../../visualizations/canvas/ + - ../../../features/panels/canvas/ # /docs/grafana/next/features/panels/canvas/ + - ../../canvas/ # /docs/grafana/next/visualizations/canvas/ + - ../../../panels-visualizations/visualizations/canvas/ # /docs/grafana/next/panels-visualizations/visualizations/canvas/ description: Configure options for Grafana's canvas visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/dashboard-list/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/dashboard-list/index.md similarity index 90% rename from docs/sources/panels-visualizations/visualizations/dashboard-list/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/dashboard-list/index.md index 92e12996630..5c6b4aa8d4a 100644 --- a/docs/sources/panels-visualizations/visualizations/dashboard-list/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/dashboard-list/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../../features/panels/dashlist/ - - ../../panels/visualizations/dashboard-list-panel/ - - ../../reference/dashlist/ - - ../../visualizations/dashboard-list-panel/ + - ../../../features/panels/dashlist/ # /docs/grafana/next/features/panels/dashlist/ + - ../../../panels/visualizations/dashboard-list-panel/ # /docs/grafana/next/panels/visualizations/dashboard-list-panel/ + - ../../../reference/dashlist/ # /docs/grafana/next/reference/dashlist/ + - ../../dashboard-list-panel/ # /docs/grafana/next/visualizations/dashboard-list-panel/ + - ../../../panels-visualizations/visualizations/dashboard-list/ # /docs/grafana/next/panels-visualizations/visualizations/dashboard-list/ keywords: - grafana - dashboard list diff --git a/docs/sources/panels-visualizations/visualizations/datagrid/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/datagrid/index.md similarity index 94% rename from docs/sources/panels-visualizations/visualizations/datagrid/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/datagrid/index.md index 60d9aab5201..b54326968a6 100644 --- a/docs/sources/panels-visualizations/visualizations/datagrid/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/datagrid/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../features/panels/datagrid_panel/ - - ../../reference/datagrid/ - - ../../visualizations/datagrid/ + - ../../../features/panels/datagrid_panel/ # /docs/grafana/next/features/panels/datagrid_panel/ + - ../../../reference/datagrid/ # /docs/grafana/next/reference/datagrid/ + - ../../datagrid/ # /docs/grafana/next/visualizations/datagrid/ + - ../../../panels-visualizations/visualizations/datagrid/ # /docs/grafana/next/panels-visualizations/visualizations/datagrid/ description: Configure options for Grafana's datagrid visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/flame-graph/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/flame-graph/index.md similarity index 98% rename from docs/sources/panels-visualizations/visualizations/flame-graph/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/flame-graph/index.md index 362acb1384a..be79dcbb317 100644 --- a/docs/sources/panels-visualizations/visualizations/flame-graph/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/flame-graph/index.md @@ -1,6 +1,7 @@ --- aliases: - - ../../visualizations/flame-graph/ + - ../../flame-graph/ # /docs/grafana/next/visualizations/flame-graph/ + - ../../../panels-visualizations/visualizations/flame-graph/ # /docs/grafana/next/panels-visualizations/visualizations/flame-graph/ keywords: - grafana - dashboard diff --git a/docs/sources/panels-visualizations/visualizations/gauge/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/gauge/index.md similarity index 96% rename from docs/sources/panels-visualizations/visualizations/gauge/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/gauge/index.md index fbb1cb922ae..496abc455f4 100644 --- a/docs/sources/panels-visualizations/visualizations/gauge/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/gauge/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../features/panels/gauge/ - - ../../panels/visualizations/gauge-panel/ - - ../../visualizations/gauge-panel/ + - ../../../features/panels/gauge/ # /docs/grafana/next/features/panels/gauge/ + - ../../../panels/visualizations/gauge-panel/ # /docs/grafana/next/panels/visualizations/gauge-panel/ + - ../../gauge-panel/ # /docs/grafana/next/visualizations/gauge-panel/ + - ../../../panels-visualizations/visualizations/gauge/ # /docs/grafana/next/panels-visualizations/visualizations/gauge/ description: Configure options for Grafana's gauge visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/geomap/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/geomap/index.md similarity index 94% rename from docs/sources/panels-visualizations/visualizations/geomap/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/geomap/index.md index 030b002760b..241622708db 100644 --- a/docs/sources/panels-visualizations/visualizations/geomap/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/geomap/index.md @@ -1,26 +1,27 @@ --- aliases: - - ../../features/panels/geomap/ - - ../../features/panels/geomap/arcgis/ - - ../../features/panels/geomap/carto/ - - ../../features/panels/geomap/controls/ - - ../../features/panels/geomap/daynight/ - - ../../features/panels/geomap/geojson/ - - ../../features/panels/geomap/heatmap/ - - ../../features/panels/geomap/markers/ - - ../../features/panels/geomap/osm/ - - ../../features/panels/geomap/zyx/ - - ../../panels/visualizations/geomap/ - - ../../panels/visualizations/geomap/arcgis/ - - ../../panels/visualizations/geomap/carto/ - - ../../panels/visualizations/geomap/controls/ - - ../../panels/visualizations/geomap/daynight/ - - ../../panels/visualizations/geomap/geojson/ - - ../../panels/visualizations/geomap/heatmap/ - - ../../panels/visualizations/geomap/markers/ - - ../../panels/visualizations/geomap/osm/ - - ../../panels/visualizations/geomap/zyx/ - - ../../visualizations/geomap/ + - ../../../features/panels/geomap/ # /docs/grafana/next/features/panels/geomap/ + - ../../../features/panels/geomap/arcgis/ # /docs/grafana/next/features/panels/geomap/arcgis/ + - ../../../features/panels/geomap/carto/ # /docs/grafana/next/features/panels/geomap/carto/ + - ../../../features/panels/geomap/controls/ # /docs/grafana/next/features/panels/geomap/controls/ + - ../../../features/panels/geomap/daynight/ # /docs/grafana/next/features/panels/geomap/daynight/ + - ../../../features/panels/geomap/geojson/ # /docs/grafana/next/features/panels/geomap/geojson/ + - ../../../features/panels/geomap/heatmap/ # /docs/grafana/next/features/panels/geomap/heatmap/ + - ../../../features/panels/geomap/markers/ # /docs/grafana/next/features/panels/geomap/markers/ + - ../../../features/panels/geomap/osm/ # /docs/grafana/next/features/panels/geomap/osm/ + - ../../../features/panels/geomap/zyx/ # /docs/grafana/next/features/panels/geomap/zyx/ + - ../../../panels/visualizations/geomap/ # /docs/grafana/next/panels/visualizations/geomap/ + - ../../../panels/visualizations/geomap/arcgis/ # /docs/grafana/next/panels/visualizations/geomap/arcgis/ + - ../../../panels/visualizations/geomap/carto/ # /docs/grafana/next/panels/visualizations/geomap/carto/ + - ../../../panels/visualizations/geomap/controls/ # /docs/grafana/next/panels/visualizations/geomap/controls/ + - ../../../panels/visualizations/geomap/daynight/ # /docs/grafana/next/panels/visualizations/geomap/daynight/ + - ../../../panels/visualizations/geomap/geojson/ # /docs/grafana/next/panels/visualizations/geomap/geojson/ + - ../../../panels/visualizations/geomap/heatmap/ # /docs/grafana/next/panels/visualizations/geomap/heatmap/ + - ../../../panels/visualizations/geomap/markers/ # /docs/grafana/next/panels/visualizations/geomap/markers/ + - ../../../panels/visualizations/geomap/osm/ # /docs/grafana/next/panels/visualizations/geomap/osm/ + - ../../../panels/visualizations/geomap/zyx/ # /docs/grafana/next/panels/visualizations/geomap/zyx/ + - ../../../visualizations/geomap/ # /docs/grafana/visualizations/geomap/ + - ../../../panels-visualizations/visualizations/geomap/ # /docs/grafana/next/panels-visualizations/visualizations/geomap/ description: Configure options for Grafana's geomap visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/heatmap/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/heatmap/index.md similarity index 97% rename from docs/sources/panels-visualizations/visualizations/heatmap/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/heatmap/index.md index a51479e4e7a..31ffb8295dc 100644 --- a/docs/sources/panels-visualizations/visualizations/heatmap/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/heatmap/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../features/panels/heatmap/ - - ../../visualizations/heatmap/ + - ../../../features/panels/heatmap/ # /docs/grafana/next/features/panels/heatmap/ + - ../../heatmap/ # /docs/grafana/next/visualizations/heatmap/ + - ../../../panels-visualizations/visualizations/heatmap/ # /docs/grafana/next/panels-visualizations/visualizations/heatmap/ description: Configure options for Grafana's heatmap visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/histogram/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/histogram/index.md similarity index 94% rename from docs/sources/panels-visualizations/visualizations/histogram/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/histogram/index.md index c96747809dc..c1df19215f7 100644 --- a/docs/sources/panels-visualizations/visualizations/histogram/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/histogram/index.md @@ -1,8 +1,9 @@ --- aliases: - - ../../features/panels/histogram/ - - ../../panels/visualizations/histogram/ - - ../../visualizations/histogram/ + - ../../../features/panels/histogram/ # /docs/grafana/next/features/panels/histogram/ + - ../../../panels/visualizations/histogram/ # /docs/grafana/next/panels/visualizations/histogram/ + - ../../../visualizations/histogram/ # /docs/grafana/next/visualizations/histogram/ + - ../../../panels-visualizations/visualizations/histogram/ # /docs/grafana/next/panels-visualizations/visualizations/histogram/ description: Configure options for Grafana's histogram visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/logs/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/logs/index.md similarity index 92% rename from docs/sources/panels-visualizations/visualizations/logs/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/logs/index.md index 00f0163f55f..91f179e9979 100644 --- a/docs/sources/panels-visualizations/visualizations/logs/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/logs/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../../features/panels/logs/ - - ../../panels/visualizations/logs-panel/ - - ../../reference/logs/ - - ../../visualizations/logs-panel/ + - ../../../features/panels/logs/ # /docs/grafana/next/features/panels/logs/ + - ../../../panels/visualizations/logs-panel/ # /docs/grafana/next/panels/visualizations/logs-panel/ + - ../../../reference/logs/ # /docs/grafana/next/reference/logs/ + - ../../logs-panel/ # /docs/grafana/next/visualizations/logs-panel/ + - ../../../panels-visualizations/visualizations/logs/ # /docs/grafana/next/panels-visualizations/visualizations/logs/ keywords: - grafana - dashboard diff --git a/docs/sources/panels-visualizations/visualizations/news/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/news/index.md similarity index 90% rename from docs/sources/panels-visualizations/visualizations/news/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/news/index.md index 1797116334f..134a90b245f 100644 --- a/docs/sources/panels-visualizations/visualizations/news/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/news/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../panels/visualizations/news-graph/ - - ../../visualizations/news-panel/ + - ../../../panels/visualizations/news-graph/ # /docs/grafana/next/panels/visualizations/news-graph/ + - ../../news-panel/ # /docs/grafana/next/visualizations/news-panel/ + - ../../../panels-visualizations/visualizations/news/ # /docs/grafana/next/panels-visualizations/visualizations/news/ keywords: - grafana - news diff --git a/docs/sources/panels-visualizations/visualizations/node-graph/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/node-graph/index.md similarity index 98% rename from docs/sources/panels-visualizations/visualizations/node-graph/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/node-graph/index.md index a18b7349310..ba0eeb73233 100644 --- a/docs/sources/panels-visualizations/visualizations/node-graph/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/node-graph/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../panels/visualizations/node-graph/ - - ../../visualizations/node-graph/ + - ../../../panels-visualizations/visualizations/node-graph/ # /docs/grafana/next/panels-visualizations/visualizations/node-graph/ + - ../../../panels/visualizations/node-graph/ # /docs/grafana/next/panels/visualizations/node-graph/ + - ../../../visualizations/node-graph/ # /docs/grafana/next/visualizations/node-graph/ keywords: - grafana - dashboard diff --git a/docs/sources/panels-visualizations/visualizations/pie-chart/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/pie-chart/index.md similarity index 96% rename from docs/sources/panels-visualizations/visualizations/pie-chart/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/pie-chart/index.md index 0c46b734d1d..c29e80febdb 100644 --- a/docs/sources/panels-visualizations/visualizations/pie-chart/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/pie-chart/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../panels/visualizations/pie-chart-pane/ - - ../../visualizations/pie-chart-panel/ + - ../../../panels/visualizations/pie-chart-pane/ # /docs/grafana/next/panels/visualizations/pie-chart-pane/ + - ../../pie-chart-panel/ # /docs/grafana/next/visualizations/pie-chart-panel/ + - ../../../panels-visualizations/visualizations/pie-chart/ # /docs/grafana/next/panels-visualizations/visualizations/pie-chart/ keywords: - grafana - pie chart diff --git a/docs/sources/panels-visualizations/visualizations/stat/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/stat/index.md similarity index 95% rename from docs/sources/panels-visualizations/visualizations/stat/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/stat/index.md index e1ad7fada4a..383322d6d27 100644 --- a/docs/sources/panels-visualizations/visualizations/stat/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/stat/index.md @@ -1,10 +1,11 @@ --- aliases: - - ../../features/panels/singlestat/ - - ../../features/panels/stat/ - - ../../panels/visualizations/stat-panel/ - - ../../reference/singlestat/ - - ../../visualizations/stat-panel/ + - ../../../features/panels/singlestat/ # /docs/grafana/next/features/panels/singlestat/ + - ../../../features/panels/stat/ # /docs/grafana/next/features/panels/stat/ + - ../../../panels/visualizations/stat-panel/ # /docs/grafana/next/panels/visualizations/stat-panel/ + - ../../../reference/singlestat/ # /docs/grafana/next/reference/singlestat/ + - ../../stat-panel/ # /docs/grafana/next/visualizations/stat-panel/ + - ../../../panels-visualizations/visualizations/stat/ # /docs/grafana/next/panels-visualizations/visualizations/stat/ description: Configure options for Grafana's stat visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/state-timeline/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/state-timeline/index.md similarity index 96% rename from docs/sources/panels-visualizations/visualizations/state-timeline/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/state-timeline/index.md index 2bf81512885..c5840be810d 100644 --- a/docs/sources/panels-visualizations/visualizations/state-timeline/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/state-timeline/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../panels/visualizations/state-timeline/ - - ../../visualizations/state-timeline/ + - ../../../panels/visualizations/state-timeline/ # /docs/grafana/next/panels/visualizations/state-timeline/ + - ../../state-timeline/ # /docs/grafana/next/visualizations/state-timeline/ + - ../../../panels-visualizations/visualizations/state-timeline/ # /docs/grafana/next/panels-visualizations/visualizations/state-timeline/ description: Configure options for Grafana's state timeline visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/status-history/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/status-history/index.md similarity index 95% rename from docs/sources/panels-visualizations/visualizations/status-history/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/status-history/index.md index 6c7fdb4fd5e..4b30df76171 100644 --- a/docs/sources/panels-visualizations/visualizations/status-history/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/status-history/index.md @@ -1,7 +1,8 @@ --- aliases: - - ../../panels/visualizations/status-history/ - - ../../visualizations/status-history/ + - ../../../panels/visualizations/status-history/ # /docs/grafana/next/panels/visualizations/status-history/ + - ../../status-history/ # /docs/grafana/next/visualizations/status-history/ + - ../../../panels-visualizations/visualizations/status-history/ # /docs/grafana/next/panels-visualizations/visualizations/status-history/ description: Configure options for Grafana's status history visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/table/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/table/index.md similarity index 97% rename from docs/sources/panels-visualizations/visualizations/table/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/table/index.md index 24185ffc378..84015fa7357 100644 --- a/docs/sources/panels-visualizations/visualizations/table/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/table/index.md @@ -1,11 +1,12 @@ --- aliases: - - ../../features/panels/table_panel/ - - ../../panels/visualizations/table/filter-table-columns/ - - ../../reference/table/ - - ../../visualizations/table/ - - ../../visualizations/table/filter-table-columns/ - - /docs/grafana/next/panels/visualizations/table/table-field-options/ + - ../../../features/panels/table_panel/ # /docs/grafana/next/features/panels/table_panel/ + - ../../../panels/visualizations/table/filter-table-columns/ # /docs/grafana/next/panels/visualizations/table/filter-table-columns/ + - ../../../reference/table/ # /docs/grafana/next/reference/table/ + - ../../table/ # /docs/grafana/next/visualizations/table/ + - ../../table/filter-table-columns/ # /docs/grafana/next/visualizations/table/filter-table-columns/ + - ../../../panels/visualizations/table/table-field-options/ # /docs/grafana/next/panels/visualizations/table/table-field-options/ + - ../../../panels-visualizations/visualizations/table/ # /docs/grafana/next/panels-visualizations/visualizations/table/ description: Configure options for Grafana's table visualization keywords: - grafana diff --git a/docs/sources/panels-visualizations/visualizations/text/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/text/index.md similarity index 87% rename from docs/sources/panels-visualizations/visualizations/text/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/text/index.md index fefcc32d251..5647fcff04b 100644 --- a/docs/sources/panels-visualizations/visualizations/text/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/text/index.md @@ -1,9 +1,10 @@ --- aliases: - - ../../features/panels/text/ - - ../../panels/visualizations/text-panel/ - - ../../reference/alertlist/ - - ../../visualizations/text-panel/ + - ../../../features/panels/text/ # /docs/grafana/next/features/panels/text/ + - ../../../panels-visualizations/visualizations/text/ # /docs/grafana/next/panels-visualizations/visualizations/text/ + - ../../../panels/visualizations/text-panel/ # /docs/grafana/next/panels/visualizations/text-panel/ + - ../../../reference/alertlist/ # /docs/grafana/next/reference/alertlist/ + - ../../../visualizations/text-panel/ # /docs/grafana/next/visualizations/text-panel/ keywords: - grafana - text diff --git a/docs/sources/panels-visualizations/visualizations/time-series/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/time-series/index.md similarity index 79% rename from docs/sources/panels-visualizations/visualizations/time-series/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/time-series/index.md index ad1b84f8a27..e7c51fb74cf 100644 --- a/docs/sources/panels-visualizations/visualizations/time-series/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/time-series/index.md @@ -1,22 +1,23 @@ --- aliases: - - ../../features/panels/histogram/ - - ../../panels/visualizations/time-series/ - - ../../panels/visualizations/time-series/annotate-time-series/ - - ../../panels/visualizations/time-series/change-axis-display/ - - ../../panels/visualizations/time-series/graph-color-scheme/ - - ../../panels/visualizations/time-series/graph-time-series-as-bars/ - - ../../panels/visualizations/time-series/graph-time-series-as-lines/ - - ../../panels/visualizations/time-series/graph-time-series-as-points/ - - ../../panels/visualizations/time-series/graph-time-series-stacking/ - - ../../visualizations/time-series/ - - ../../visualizations/time-series/annotate-time-series/ - - ../../visualizations/time-series/change-axis-display/ - - ../../visualizations/time-series/graph-color-scheme/ - - ../../visualizations/time-series/graph-time-series-as-bars/ - - ../../visualizations/time-series/graph-time-series-as-lines/ - - ../../visualizations/time-series/graph-time-series-as-points/ - - ../../visualizations/time-series/graph-time-series-stacking/ + - ../../../features/panels/histogram/ # /docs/grafana/next/features/panels/histogram/ + - ../../../panels/visualizations/time-series/ # /docs/grafana/next/panels/visualizations/time-series/ + - ../../../panels/visualizations/time-series/annotate-time-series/ # /docs/grafana/next/panels/visualizations/time-series/annotate-time-series/ + - ../../../panels/visualizations/time-series/change-axis-display/ # /docs/grafana/next/panels/visualizations/time-series/change-axis-display/ + - ../../../panels/visualizations/time-series/graph-color-scheme/ # /docs/grafana/next/panels/visualizations/time-series/graph-color-scheme/ + - ../../../panels/visualizations/time-series/graph-time-series-as-bars/ # /docs/grafana/next/panels/visualizations/time-series/graph-time-series-as-bars/ + - ../../../panels/visualizations/time-series/graph-time-series-as-lines/ # /docs/grafana/next/panels/visualizations/time-series/graph-time-series-as-lines/ + - ../../../panels/visualizations/time-series/graph-time-series-as-points/ # /docs/grafana/next/panels/visualizations/time-series/graph-time-series-as-points/ + - ../../../panels/visualizations/time-series/graph-time-series-stacking/ # /docs/grafana/next/panels/visualizations/time-series/graph-time-series-stacking/ + - ../../time-series/ # /docs/grafana/next/visualizations/time-series/ + - ../../time-series/annotate-time-series/ # /docs/grafana/next/visualizations/time-series/annotate-time-series/ + - ../../time-series/change-axis-display/ # /docs/grafana/next/visualizations/time-series/change-axis-display/ + - ../../time-series/graph-color-scheme/ # /docs/grafana/next/visualizations/time-series/graph-color-scheme/ + - ../../time-series/graph-time-series-as-bars/ # /docs/grafana/next/visualizations/time-series/graph-time-series-as-bars/ + - ../../time-series/graph-time-series-as-lines/ # /docs/grafana/next/visualizations/time-series/graph-time-series-as-lines/ + - ../../time-series/graph-time-series-as-points/ # /docs/grafana/next/visualizations/time-series/graph-time-series-as-points/ + - ../../time-series/graph-time-series-stacking/ # /docs/grafana/next/visualizations/time-series/graph-time-series-stacking/ + - ../../../panels-visualizations/visualizations/time-series/ # /docs/grafana/next/panels-visualizations/visualizations/time-series/ keywords: - grafana - graph panel diff --git a/docs/sources/panels-visualizations/visualizations/traces/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/traces/index.md similarity index 98% rename from docs/sources/panels-visualizations/visualizations/traces/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/traces/index.md index abf7fc1ddc3..f9e2a74d16d 100644 --- a/docs/sources/panels-visualizations/visualizations/traces/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/traces/index.md @@ -1,6 +1,7 @@ --- aliases: - - ../../visualizations/traces/ + - ../../traces/ # /docs/grafana/next/visualizations/traces/ + - ../../../panels-visualizations/visualizations/traces/ # /docs/grafana/next/panels-visualizations/visualizations/traces/ keywords: - grafana - dashboard diff --git a/docs/sources/panels-visualizations/visualizations/trend/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/trend/index.md similarity index 96% rename from docs/sources/panels-visualizations/visualizations/trend/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/trend/index.md index 21b58fd1b0f..c685bc15d48 100644 --- a/docs/sources/panels-visualizations/visualizations/trend/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/trend/index.md @@ -21,6 +21,8 @@ refs: destination: /docs/grafana//panels-visualizations/visualizations/time-series/ - pattern: /docs/grafana-cloud/ destination: /docs/grafana-cloud/visualizations/panels-visualizations/visualizations/time-series/ +aliases: + - ../../../panels-visualizations/visualizations/trend/ # /docs/grafana/next/panels-visualizations/visualizations/trend/ --- # Trend diff --git a/docs/sources/panels-visualizations/visualizations/xy-chart/index.md b/docs/sources/visualizations/panels-visualizations/visualizations/xy-chart/index.md similarity index 98% rename from docs/sources/panels-visualizations/visualizations/xy-chart/index.md rename to docs/sources/visualizations/panels-visualizations/visualizations/xy-chart/index.md index 72d59e961cc..c8eab88c838 100644 --- a/docs/sources/panels-visualizations/visualizations/xy-chart/index.md +++ b/docs/sources/visualizations/panels-visualizations/visualizations/xy-chart/index.md @@ -31,6 +31,8 @@ refs: destination: /docs/grafana//panels-visualizations/configure-overrides/ - pattern: /docs/grafana-cloud/ destination: /docs/grafana-cloud/visualizations/panels-visualizations/configure-overrides/ +aliases: + - ../../../panels-visualizations/visualizations/xy-chart/ # /docs/grafana/next/panels-visualizations/visualizations/xy-chart/ --- # XY chart diff --git a/docs/sources/explore/simplified-exploration/_index.md b/docs/sources/visualizations/simplified-exploration/_index.md similarity index 92% rename from docs/sources/explore/simplified-exploration/_index.md rename to docs/sources/visualizations/simplified-exploration/_index.md index 360b37aee5a..f812dd1d4c5 100644 --- a/docs/sources/explore/simplified-exploration/_index.md +++ b/docs/sources/visualizations/simplified-exploration/_index.md @@ -4,8 +4,9 @@ keywords: - Simplified exploration - queryless - Explore apps -title: Simplified exploration -menuTitle: Simplified exploration + - Drilldown apps +title: Drilldown +menuTitle: Drilldown weight: 100 hero: title: Simplified exploration with the Drilldown apps @@ -32,9 +33,11 @@ cards: href: ./profiles/ description: View and analyze high-level service performance, identify problem processes for optimization, and diagnose issues to determine root causes. height: 24 +aliases: + - ../explore/simplified-exploration/ # /docs/grafana/next/explore/simplified-exploration/ --- -# Simplified exploration +# Drilldown The Grafana Drilldown apps are designed for effortless data exploration through intuitive, queryless interactions. diff --git a/e2e-playwright/dashboard-new-layouts/utils.ts b/e2e-playwright/dashboard-new-layouts/utils.ts index 70f5aa41bf0..c59f782b37a 100644 --- a/e2e-playwright/dashboard-new-layouts/utils.ts +++ b/e2e-playwright/dashboard-new-layouts/utils.ts @@ -185,7 +185,7 @@ export async function goToEmbeddedPanel(page: Page) { const baseUrl = currentUrl.match(baseUrlRegex)?.[0]; soloPanelUrl = soloPanelUrl!.replace(baseUrlRegex, baseUrl!); - page.goto(soloPanelUrl!); + await page.goto(soloPanelUrl!); } export async function moveTab( diff --git a/e2e/old-arch/dashboards-suite/templating-dashboard-links-and-variables.spec.ts b/e2e/old-arch/dashboards-suite/templating-dashboard-links-and-variables.spec.ts index 06e13002db4..a612d23b50d 100644 --- a/e2e/old-arch/dashboards-suite/templating-dashboard-links-and-variables.spec.ts +++ b/e2e/old-arch/dashboards-suite/templating-dashboard-links-and-variables.spec.ts @@ -8,11 +8,19 @@ describe('Templating', () => { it('Tests dashboard links and variables in links', () => { cy.intercept({ method: 'GET', - url: '/api/search?tag=templating&limit=100', + pathname: /search/, + query: { + tag: 'templating', + limit: '100', + }, }).as('tagsTemplatingSearch'); cy.intercept({ method: 'GET', - url: '/api/search?tag=demo&limit=100', + pathname: /search/, + query: { + tag: 'demo', + limit: '100', + }, }).as('tagsDemoSearch'); e2e.flows.openDashboard({ uid: 'yBCC3aKGk' }); diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 829f5944cff..0fc60f1d5e0 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -420,11 +420,6 @@ "count": 1 } }, - "packages/grafana-prometheus/src/querybuilder/QueryPattern.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "packages/grafana-prometheus/src/querybuilder/components/LabelFilterItem.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 4 @@ -470,6 +465,11 @@ "count": 1 } }, + "packages/grafana-runtime/src/components/DataSourcePicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-runtime/src/config.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 5 @@ -539,6 +539,11 @@ "count": 2 } }, + "packages/grafana-sql/src/components/ErrorBoundary.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-sql/src/components/configuration/ConnectionLimits.tsx": { "no-restricted-syntax": { "count": 2 @@ -564,9 +569,37 @@ "count": 1 } }, + "packages/grafana-ui/src/components/BarGauge/BarGauge.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/BigValue/BigValue.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/BigValue/BigValueLayout.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/Cascader/Cascader.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/ColorPicker/ColorPicker.tsx": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/ColorPicker/ColorPickerPopover.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/Combobox/Combobox.story.tsx": { @@ -613,6 +646,9 @@ }, "no-restricted-syntax": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/DataSourceSettings/SecureSocksProxySettings.tsx": { @@ -635,6 +671,11 @@ "count": 3 } }, + "packages/grafana-ui/src/components/ErrorBoundary/ErrorBoundary.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/FileDropzone/FileDropzone.story.tsx": { "no-restricted-syntax": { "count": 1 @@ -650,11 +691,6 @@ "count": 3 } }, - "packages/grafana-ui/src/components/Forms/Checkbox.story.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "packages/grafana-ui/src/components/Forms/Form.story.tsx": { "react-hooks/rules-of-hooks": { "count": 9 @@ -674,6 +710,9 @@ }, "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/Forms/Legacy/Select/NoOptionsMessage.tsx": { @@ -687,6 +726,9 @@ }, "no-restricted-syntax": { "count": 6 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 3 } }, "packages/grafana-ui/src/components/Forms/Legacy/Select/SelectOption.tsx": { @@ -700,11 +742,22 @@ "packages/grafana-ui/src/components/Forms/Legacy/Select/SelectOptionGroup.tsx": { "@typescript-eslint/no-explicit-any": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/Forms/Legacy/Switch/Switch.tsx": { "no-restricted-syntax": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/Gauge/Gauge.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/Icon/Icon.story.tsx": { @@ -717,13 +770,28 @@ "count": 3 } }, + "packages/grafana-ui/src/components/JSONFormatter/JSONFormatter.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/JSONFormatter/json_explorer/json_explorer.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 } }, - "packages/grafana-ui/src/components/Layout/Stack/Stack.story.tsx": { - "no-restricted-syntax": { + "packages/grafana-ui/src/components/List/AbstractList.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/List/InlineList.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/List/List.tsx": { + "react-prefer-function-component/react-prefer-function-component": { "count": 1 } }, @@ -750,6 +818,14 @@ "packages/grafana-ui/src/components/Modal/ModalsContext.tsx": { "@typescript-eslint/no-explicit-any": { "count": 4 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/Monaco/CodeEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/PageLayout/PageToolbar.story.tsx": { @@ -777,6 +853,16 @@ "count": 1 } }, + "packages/grafana-ui/src/components/QueryField/QueryField.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/RefreshPicker/RefreshPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/SecretFormField/SecretFormField.tsx": { "no-restricted-syntax": { "count": 2 @@ -815,6 +901,11 @@ "count": 4 } }, + "packages/grafana-ui/src/components/Select/ValueContainer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/Select/resetSelectStyles.ts": { "@typescript-eslint/no-explicit-any": { "count": 4 @@ -825,6 +916,11 @@ "count": 6 } }, + "packages/grafana-ui/src/components/SetInterval/SetInterval.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/SingleStatShared/SingleStatBaseOptions.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 3 @@ -833,6 +929,21 @@ "count": 13 } }, + "packages/grafana-ui/src/components/Sparkline/Sparkline.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/StatsPicker/StatsPicker.story.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/StatsPicker/StatsPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/Table/Cells/TableCell.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 3 @@ -913,11 +1024,31 @@ "count": 1 } }, + "packages/grafana-ui/src/components/TableInputCSV/TableInputCSV.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/Tags/Tag.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 } }, + "packages/grafana-ui/src/components/Tooltip/PopoverController.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "packages/grafana-ui/src/components/Typeahead/Typeahead.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 2 + } + }, + "packages/grafana-ui/src/components/UnitPicker/UnitPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "packages/grafana-ui/src/components/ValuePicker/ValuePicker.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 @@ -936,6 +1067,9 @@ "packages/grafana-ui/src/components/VizRepeater/VizRepeater.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/VizTooltip/VizTooltip.tsx": { @@ -951,6 +1085,9 @@ "packages/grafana-ui/src/components/uPlot/Plot.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "packages/grafana-ui/src/components/uPlot/config/UPlotAxisBuilder.ts": { @@ -1062,6 +1199,11 @@ "count": 1 } }, + "public/app/AppWrapper.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/core/TableModel.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -1082,16 +1224,6 @@ "count": 1 } }, - "public/app/core/components/AppChrome/History/HistoryWrapper.tsx": { - "no-restricted-syntax": { - "count": 2 - } - }, - "public/app/core/components/AppNotifications/StoredNotificationItem.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/core/components/DynamicImports/SafeDynamicImport.tsx": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -1113,6 +1245,14 @@ }, "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/core/components/Login/LoginCtrl.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/core/components/Login/LoginForm.tsx": { @@ -1130,14 +1270,12 @@ "count": 1 } }, - "public/app/core/components/NavLandingPage/NavLandingPageCard.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/core/components/OptionsUI/NumberInput.tsx": { "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/core/components/OptionsUI/fieldColor.tsx": { @@ -1145,6 +1283,21 @@ "count": 1 } }, + "public/app/core/components/OptionsUI/multiSelect.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/core/components/OptionsUI/select.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/core/components/OptionsUI/strings.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/core/components/Page/EditableTitle.tsx": { "no-restricted-syntax": { "count": 1 @@ -1165,10 +1318,28 @@ "count": 1 } }, + "public/app/core/components/Select/ServiceAccountPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/core/components/Select/TeamPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/core/components/Select/UserPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/core/components/SharedPreferences/SharedPreferences.tsx": { "no-restricted-syntax": { "count": 8 }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + }, "react/no-unescaped-entities": { "count": 1 } @@ -1183,6 +1354,11 @@ "count": 1 } }, + "public/app/core/components/SplitPaneWrapper/SplitPaneWrapper.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/core/components/TagFilter/TagFilter.tsx": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -1193,6 +1369,11 @@ "count": 1 } }, + "public/app/core/components/TimeSeries/TimeSeries.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/core/components/TimeSeries/utils.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -1201,6 +1382,11 @@ "count": 2 } }, + "public/app/core/components/TimelineChart/TimelineChart.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/core/config.ts": { "no-barrel-files/no-barrel-files": { "count": 2 @@ -1334,11 +1520,6 @@ "count": 1 } }, - "public/app/features/admin/ServerStatsCard.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/admin/UserCreatePage.tsx": { "no-restricted-syntax": { "count": 4 @@ -1347,11 +1528,27 @@ "public/app/features/admin/UserLdapSyncInfo.tsx": { "no-restricted-syntax": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/admin/UserOrgs.tsx": { "no-restricted-syntax": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 3 + } + }, + "public/app/features/admin/UserProfile.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/admin/UserSessions.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/admin/ldap/LdapDrawer.tsx": { @@ -1402,16 +1599,6 @@ "count": 2 } }, - "public/app/features/alerting/unified/AlertsFolderView.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, - "public/app/features/alerting/unified/RedirectToRuleViewer.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/alerting/unified/components/AlertLabelDropdown.tsx": { "no-restricted-syntax": { "count": 1 @@ -1523,11 +1710,6 @@ "count": 1 } }, - "public/app/features/alerting/unified/components/receivers/form/GenerateAlertDataModal.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/alerting/unified/components/receivers/form/GrafanaCommonChannelSettings.tsx": { "no-restricted-syntax": { "count": 1 @@ -1614,7 +1796,7 @@ "@typescript-eslint/consistent-type-assertions": { "count": 1 }, - "no-restricted-syntax": { + "react-prefer-function-component/react-prefer-function-component": { "count": 1 } }, @@ -1658,11 +1840,6 @@ "count": 1 } }, - "public/app/features/alerting/unified/components/rule-editor/rule-types/RuleType.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/alerting/unified/components/rules/Filter/RulesFilter.v1.tsx": { "no-restricted-syntax": { "count": 4 @@ -1688,11 +1865,6 @@ "count": 1 } }, - "public/app/features/alerting/unified/components/settings/AlertmanagerCard.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/alerting/unified/components/silences/MatchersField.tsx": { "no-restricted-syntax": { "count": 5 @@ -1759,11 +1931,6 @@ "count": 6 } }, - "public/app/features/alerting/unified/rule-list/FilterViewStatus.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/alerting/unified/types/alerting.ts": { "@typescript-eslint/no-explicit-any": { "count": 5 @@ -1813,6 +1980,16 @@ "count": 1 } }, + "public/app/features/annotations/components/AnnotationResultMapper.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/annotations/components/StandardAnnotationQueryEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/annotations/events_processing.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -1856,6 +2033,36 @@ "count": 1 } }, + "public/app/features/canvas/elements/notFound.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/canvas/elements/rectangle.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/canvas/runtime/element.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/canvas/runtime/frame.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/canvas/runtime/root.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/canvas/runtime/scene.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/commandPalette/actions/scopeActions.tsx": { "react-hooks/rules-of-hooks": { "count": 4 @@ -1871,11 +2078,6 @@ "count": 1 } }, - "public/app/features/connections/tabs/ConnectData/CardGrid/CardGrid.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/connections/tabs/ConnectData/CardGrid/index.tsx": { "no-barrel-files/no-barrel-files": { "count": 1 @@ -1922,11 +2124,6 @@ "count": 2 } }, - "public/app/features/correlations/Forms/ConfigureCorrelationSourceForm.tsx": { - "no-restricted-syntax": { - "count": 3 - } - }, "public/app/features/correlations/Forms/ConfigureCorrelationTargetForm.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 @@ -1945,11 +2142,6 @@ "count": 4 } }, - "public/app/features/correlations/components/EmptyCorrelationsCTA.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/correlations/types.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -1960,6 +2152,21 @@ "count": 2 } }, + "public/app/features/dashboard-scene/conditional-rendering/conditions/ConditionalRenderingData.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/conditional-rendering/conditions/ConditionalRenderingTimeRangeSize.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/conditional-rendering/conditions/ConditionalRenderingVariable.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/edit-pane/DashboardEditPaneRenderer.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -1970,6 +2177,11 @@ "count": 4 } }, + "public/app/features/dashboard-scene/edit-pane/DashboardEditableElement.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/edit-pane/DashboardOutline.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -1985,11 +2197,31 @@ "count": 1 } }, + "public/app/features/dashboard-scene/inspect/InspectDataTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/inspect/InspectJsonTab.tsx": { "no-restricted-syntax": { "count": 1 } }, + "public/app/features/dashboard-scene/inspect/InspectMetaDataTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/inspect/InspectQueryTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/inspect/InspectStatsTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/pages/DashboardScenePage.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 @@ -2003,11 +2235,26 @@ "count": 1 } }, + "public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataAlertingTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 } }, + "public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataQueriesTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataTransformationsTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/panel-edit/PanelOptionsPane.test.tsx": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2036,6 +2283,21 @@ "count": 1 } }, + "public/app/features/dashboard-scene/scene/AddLibraryPanelDrawer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/scene/CustomTimeRangeCompare.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard-scene/scene/DashboardDataLayerSet.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -2046,6 +2308,11 @@ "count": 1 } }, + "public/app/features/dashboard-scene/scene/ViewPanelScene.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/scene/export/exporters.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 6 @@ -2105,6 +2372,11 @@ "count": 1 } }, + "public/app/features/dashboard-scene/serialization/custom-variables/SnapshotVariable.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard-scene/serialization/transformSceneToSaveModel.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 @@ -2146,11 +2418,6 @@ "count": 4 } }, - "public/app/features/dashboard-scene/settings/variables/VariableSetEditableElement.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/dashboard-scene/settings/variables/components/AdHocVariableForm.tsx": { "no-restricted-syntax": { "count": 1 @@ -2286,6 +2553,11 @@ "count": 1 } }, + "public/app/features/dashboard/components/DashNav/DashNavTimeControls.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard/components/DashNav/index.ts": { "no-barrel-files/no-barrel-files": { "count": 1 @@ -2309,6 +2581,11 @@ "count": 1 } }, + "public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard/components/DashboardRow/index.ts": { "no-barrel-files/no-barrel-files": { "count": 1 @@ -2327,6 +2604,14 @@ "public/app/features/dashboard/components/DashboardSettings/TimePickerSettings.tsx": { "no-restricted-syntax": { "count": 5 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/components/DashboardSettings/VersionsSettings.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/DashboardSettings/index.ts": { @@ -2349,6 +2634,11 @@ "count": 1 } }, + "public/app/features/dashboard/components/PanelEditor/OptionsPaneCategoryDescriptor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 @@ -2358,11 +2648,32 @@ }, "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/components/PanelEditor/OptionsPaneOptions.test.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/components/PanelEditor/PanelEditorQueries.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/components/PanelEditor/PanelHeaderCorner.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/PanelEditor/VisualizationSelectPane.tsx": { @@ -2422,11 +2733,22 @@ }, "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/ShareModal/ShareLink.tsx": { "no-restricted-syntax": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/components/ShareModal/ShareModal.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard.tsx": { @@ -2442,6 +2764,9 @@ "public/app/features/dashboard/components/ShareModal/ShareSnapshot.tsx": { "no-restricted-syntax": { "count": 4 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/ShareModal/ThemePicker.tsx": { @@ -2462,6 +2787,11 @@ "count": 1 } }, + "public/app/features/dashboard/components/SubMenu/SubMenu.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard/components/SubMenu/SubMenuItems.tsx": { "no-restricted-syntax": { "count": 1 @@ -2472,14 +2802,12 @@ "count": 1 } }, - "public/app/features/dashboard/components/TransformationsEditor/TransformationPicker.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/dashboard/components/TransformationsEditor/TransformationsEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/components/VersionHistory/useDashboardRestore.tsx": { @@ -2490,6 +2818,11 @@ "count": 1 } }, + "public/app/features/dashboard/containers/DashboardPage.test.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard/containers/DashboardPage.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 @@ -2499,6 +2832,9 @@ }, "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dashboard/containers/DashboardPageProxy.tsx": { @@ -2511,6 +2847,26 @@ "count": 1 } }, + "public/app/features/dashboard/containers/SoloPanelPage.test.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/dashgrid/DashboardGrid.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/dashgrid/DashboardPanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dashboard/dashgrid/PanelStateWrapper.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/dashboard/dashgrid/SeriesVisibilityConfigFactory.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -2531,7 +2887,7 @@ "count": 2 }, "@typescript-eslint/no-explicit-any": { - "count": 18 + "count": 16 } }, "public/app/features/dashboard/state/DashboardModel.repeat.test.ts": { @@ -2621,6 +2977,11 @@ "count": 1 } }, + "public/app/features/datasources/components/DataSourcePluginSettings.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/datasources/components/DataSourcePluginState.tsx": { "no-restricted-syntax": { "count": 3 @@ -2634,19 +2995,6 @@ "public/app/features/datasources/components/DataSourceTypeCard.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 - }, - "no-restricted-syntax": { - "count": 1 - } - }, - "public/app/features/datasources/components/DataSourcesListCard.tsx": { - "no-restricted-syntax": { - "count": 2 - } - }, - "public/app/features/datasources/components/picker/DataSourceCard.tsx": { - "no-restricted-syntax": { - "count": 1 } }, "public/app/features/datasources/state/actions.test.ts": { @@ -2709,6 +3057,14 @@ "public/app/features/dimensions/editors/ThresholdsEditor/ThresholdsEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/dimensions/editors/ThresholdsEditor/thresholds.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/dimensions/editors/URLPickerTab.tsx": { @@ -2733,7 +3089,7 @@ }, "public/app/features/explore/CorrelationHelper.tsx": { "no-restricted-syntax": { - "count": 3 + "count": 2 } }, "public/app/features/explore/CorrelationTransformationAddModal.tsx": { @@ -2741,21 +3097,66 @@ "count": 4 } }, + "public/app/features/explore/Explore.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/ExploreTimeControls.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/Logs/LiveLogs.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/Logs/LogsColumnSearch.tsx": { "no-restricted-syntax": { "count": 1 } }, + "public/app/features/explore/Logs/LogsContainer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/RawPrometheus/RawPrometheusContainer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/RichHistory/RichHistorySettingsTab.tsx": { "no-restricted-syntax": { "count": 1 } }, + "public/app/features/explore/Table/TableContainer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/TraceView.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 } }, + "public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/CanvasSpanGraph.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/ViewingLayer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/TracePageHeader/SpanGraph/index.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/TracePageHeader/TracePageHeader.tsx": { "react-hooks/rules-of-hooks": { "count": 1 @@ -2766,26 +3167,71 @@ "count": 1 } }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/ListView/index.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanBarRow.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/SpanDetailLinkButtons.tsx": { "react-hooks/rules-of-hooks": { "count": 1 } }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetailRow.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanLinks.tsx": { "no-restricted-syntax": { "count": 1 } }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/SpanTreeOffset.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineColumnResizer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/TimelineViewingLayer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/TraceTimelineViewer/TimelineHeaderRow/index.tsx": { "no-barrel-files/no-barrel-files": { "count": 1 } }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/VirtualizedTraceView.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/TraceTimelineViewer/index.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/TraceTimelineViewer/utils.tsx": { "no-barrel-files/no-barrel-files": { "count": 1 } }, + "public/app/features/explore/TraceView/components/common/SearchBarInput.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/demo/trace-generators.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -2809,6 +3255,21 @@ "count": 1 } }, + "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/DividerDemo.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/DraggableManagerDemo.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/RegionDemo.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/explore/TraceView/components/utils/DraggableManager/demo/index.tsx": { "no-barrel-files/no-barrel-files": { "count": 1 @@ -2886,6 +3347,9 @@ "public/app/features/inspector/InspectDataTab.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/inspector/InspectJSONTab.tsx": { @@ -2904,6 +3368,19 @@ }, "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/invites/InviteeRow.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/invites/InviteesTable.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/invites/SignupInvited.tsx": { @@ -2916,6 +3393,11 @@ "count": 2 } }, + "public/app/features/live/LiveConnectionWarning.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/live/centrifuge/LiveDataStream.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -2926,6 +3408,21 @@ "count": 1 } }, + "public/app/features/logs/components/LogDetails.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/logs/components/LogDetailsRow.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/logs/components/LogMessageAnsi.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/logs/logsFrame.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -2942,6 +3439,9 @@ "public/app/features/manage-dashboards/DashboardImportPage.tsx": { "no-restricted-syntax": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/manage-dashboards/components/ImportDashboardForm.tsx": { @@ -2957,8 +3457,8 @@ "count": 1 } }, - "public/app/features/manage-dashboards/components/PublicDashboardListTable/PublicDashboardListTable.tsx": { - "no-restricted-syntax": { + "public/app/features/manage-dashboards/components/ImportDashboardOverview.tsx": { + "react-prefer-function-component/react-prefer-function-component": { "count": 1 } }, @@ -3013,6 +3513,11 @@ "count": 1 } }, + "public/app/features/org/OrgDetailsPage.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/org/OrgProfile.tsx": { "no-restricted-syntax": { "count": 1 @@ -3028,6 +3533,11 @@ "count": 1 } }, + "public/app/features/panel/components/PanelPluginError.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 3 + } + }, "public/app/features/panel/components/VizTypePicker/PanelTypeCard.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 @@ -3038,11 +3548,6 @@ "count": 1 } }, - "public/app/features/playlist/PlaylistCard.tsx": { - "no-restricted-syntax": { - "count": 2 - } - }, "public/app/features/playlist/PlaylistForm.tsx": { "@grafana/no-aria-label-selectors": { "count": 2 @@ -3076,6 +3581,11 @@ "count": 1 } }, + "public/app/features/plugins/admin/components/PluginDashboards.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/plugins/admin/components/PluginDetailsPage.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -3104,6 +3614,11 @@ "count": 1 } }, + "public/app/features/plugins/components/AppRootPage.test.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/plugins/datasource_srv.test.ts": { "@typescript-eslint/no-explicit-any": { "count": 3 @@ -3147,21 +3662,31 @@ "count": 3 } }, + "public/app/features/profile/UserOrganizations.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/profile/UserProfileEditForm.tsx": { "no-restricted-syntax": { "count": 3 } }, + "public/app/features/profile/UserSessions.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/profile/UserTeams.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/provisioning/Config/ConfigFormGithubCollapse.tsx": { "no-restricted-syntax": { "count": 2 } }, - "public/app/features/provisioning/File/FileHistoryPage.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/features/provisioning/File/FileStatusPage.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 @@ -3189,6 +3714,9 @@ }, "react-hooks/rules-of-hooks": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/query/components/QueryEditorRowHeader.tsx": { @@ -3196,9 +3724,17 @@ "count": 1 } }, + "public/app/features/query/components/QueryEditorRows.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/query/components/QueryGroup.tsx": { "@grafana/no-aria-label-selectors": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/query/state/DashboardQueryRunner/AnnotationsQueryRunner.ts": { @@ -3287,6 +3823,11 @@ "count": 2 } }, + "public/app/features/teams/TeamGroupSync.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/teams/TeamSettings.tsx": { "no-restricted-syntax": { "count": 4 @@ -3360,11 +3901,21 @@ "count": 1 } }, + "public/app/features/transformers/editors/ConcatenateTransformerEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/transformers/editors/ConvertFieldTypeTransformerEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 } }, + "public/app/features/transformers/editors/FilterByNameTransformerEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/transformers/editors/GroupToNestedTableTransformerEditor.tsx": { "no-restricted-syntax": { "count": 1 @@ -3375,6 +3926,11 @@ "count": 1 } }, + "public/app/features/transformers/editors/RenameByRegexTransformer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/transformers/editors/SortByTransformerEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -3429,9 +3985,17 @@ "count": 3 } }, + "public/app/features/variables/adhoc/AdHocVariableEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/variables/adhoc/picker/AdHocFilter.tsx": { "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/variables/adhoc/picker/AdHocFilterKey.tsx": { @@ -3449,24 +4013,52 @@ "count": 1 } }, + "public/app/features/variables/adhoc/picker/AdHocPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/variables/adhoc/picker/ConditionSegment.tsx": { "no-restricted-syntax": { "count": 2 } }, + "public/app/features/variables/constant/ConstantVariableEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/variables/constant/reducer.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 } }, + "public/app/features/variables/custom/CustomVariableEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/variables/custom/reducer.ts": { "@typescript-eslint/consistent-type-assertions": { "count": 1 } }, + "public/app/features/variables/datasource/DataSourceVariableEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/variables/editor/VariableEditorContainer.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/features/variables/editor/VariableEditorEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/variables/editor/VariableEditorList.tsx": { @@ -3497,6 +4089,11 @@ "count": 4 } }, + "public/app/features/variables/pickers/OptionsPicker/OptionsPicker.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/features/variables/pickers/OptionsPicker/actions.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 @@ -3518,16 +4115,25 @@ "public/app/features/variables/pickers/shared/VariableInput.tsx": { "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/variables/pickers/shared/VariableOptions.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/variables/query/QueryVariableEditor.tsx": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/features/variables/query/QueryVariableRefreshSelect.tsx": { @@ -3658,6 +4264,11 @@ "count": 1 } }, + "public/app/plugins/datasource/azuremonitor/components/ConfigEditor/ConfigEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/azuremonitor/components/ConfigEditor/CurrentUserFallbackCredentials.tsx": { "no-restricted-syntax": { "count": 2 @@ -3670,7 +4281,7 @@ }, "public/app/plugins/datasource/azuremonitor/components/LogsQueryEditor/AzureCheatSheet.tsx": { "no-restricted-syntax": { - "count": 2 + "count": 1 } }, "public/app/plugins/datasource/azuremonitor/components/LogsQueryEditor/index.tsx": { @@ -3751,6 +4362,16 @@ "count": 1 } }, + "public/app/plugins/datasource/cloud-monitoring/components/CloudMonitoringCheatSheet.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/datasource/cloud-monitoring/components/ConfigEditor/ConfigEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/cloud-monitoring/components/Fields.tsx": { "no-restricted-syntax": { "count": 1 @@ -3759,6 +4380,9 @@ "public/app/plugins/datasource/cloud-monitoring/components/VariableQueryEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/cloud-monitoring/datasource.ts": { @@ -3945,6 +4569,11 @@ "count": 1 } }, + "public/app/plugins/datasource/grafana-testdata-datasource/ConfigEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/grafana-testdata-datasource/QueryEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 3 @@ -3956,6 +4585,16 @@ "count": 1 } }, + "public/app/plugins/datasource/grafana-testdata-datasource/TestInfoTab.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/datasource/grafana-testdata-datasource/components/CSVWaveEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/grafana-testdata-datasource/components/RandomWalkEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 @@ -3990,6 +4629,9 @@ "public/app/plugins/datasource/grafana/components/QueryEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/grafana/components/TimeRegionEditor.tsx": { @@ -4005,9 +4647,17 @@ "count": 1 } }, + "public/app/plugins/datasource/graphite/components/MetricTankMetaInspector.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/graphite/configuration/ConfigEditor.tsx": { "no-restricted-syntax": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/graphite/datasource.ts": { @@ -4085,6 +4735,9 @@ }, "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/influxdb/components/editor/config/InfluxSQLConfig.tsx": { @@ -4100,6 +4753,14 @@ "public/app/plugins/datasource/influxdb/components/editor/query/flux/FluxQueryEditor.tsx": { "no-restricted-syntax": { "count": 3 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/datasource/influxdb/components/editor/query/fsql/FSQLEditor.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/influxdb/components/editor/query/influxql/visual/PartListSection.tsx": { @@ -4150,11 +4811,21 @@ "count": 2 } }, + "public/app/plugins/datasource/loki/components/LokiCheatSheet.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/loki/components/LokiContextUi.tsx": { "no-restricted-syntax": { "count": 7 } }, + "public/app/plugins/datasource/loki/components/LokiLabelBrowser.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/loki/components/LokiQueryEditor.tsx": { "no-restricted-syntax": { "count": 2 @@ -4163,6 +4834,9 @@ "public/app/plugins/datasource/loki/components/LokiQueryField.tsx": { "no-restricted-syntax": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/loki/configuration/DerivedField.tsx": { @@ -4185,11 +4859,6 @@ "count": 1 } }, - "public/app/plugins/datasource/loki/querybuilder/components/QueryPattern.tsx": { - "no-restricted-syntax": { - "count": 1 - } - }, "public/app/plugins/datasource/loki/querybuilder/state.ts": { "no-restricted-syntax": { "count": 2 @@ -4270,6 +4939,11 @@ "count": 15 } }, + "public/app/plugins/datasource/tempo/QueryField.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/datasource/tempo/ServiceGraphSection.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -4278,6 +4952,9 @@ "public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilter.tsx": { "no-restricted-syntax": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/datasource/tempo/_importedDependencies/components/AdHocFilter/AdHocFilterKey.tsx": { @@ -4350,8 +5027,8 @@ "count": 1 } }, - "public/app/plugins/panel/annolist/AnnotationListItem.tsx": { - "no-restricted-syntax": { + "public/app/plugins/panel/annolist/AnnoListPanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { "count": 1 } }, @@ -4365,6 +5042,11 @@ "count": 1 } }, + "public/app/plugins/panel/bargauge/BarGaugePanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/candlestick/CandlestickPanel.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -4378,6 +5060,21 @@ "count": 8 } }, + "public/app/plugins/panel/canvas/CanvasPanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/panel/canvas/components/connections/Connections.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/panel/canvas/components/connections/Connections2.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/canvas/editor/LineStyleEditor.tsx": { "no-restricted-syntax": { "count": 1 @@ -4404,11 +5101,27 @@ }, "@typescript-eslint/no-explicit-any": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/panel/debug/DebugPanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/panel/debug/EventBusLogger.tsx": { "@typescript-eslint/no-explicit-any": { "count": 2 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/panel/debug/RenderInfoViewer.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/panel/debug/StateView.tsx": { @@ -4421,9 +5134,22 @@ "count": 1 } }, + "public/app/plugins/panel/gauge/GaugePanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, + "public/app/plugins/panel/geomap/GeomapPanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/geomap/components/DebugOverlay.tsx": { "@grafana/no-aria-label-selectors": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/panel/geomap/components/MarkersLegend.tsx": { @@ -4434,6 +5160,11 @@ "count": 1 } }, + "public/app/plugins/panel/geomap/components/ObservablePropsWrapper.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/geomap/editor/GeomapStyleRulesEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -4482,6 +5213,11 @@ "count": 2 } }, + "public/app/plugins/panel/gettingstarted/GettingStarted.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/heatmap/HeatmapPanel.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 @@ -4516,6 +5252,11 @@ "count": 17 } }, + "public/app/plugins/panel/histogram/Histogram.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/live/LiveChannelEditor.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 2 @@ -4527,6 +5268,9 @@ "public/app/plugins/panel/live/LivePanel.tsx": { "@typescript-eslint/consistent-type-assertions": { "count": 1 + }, + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 } }, "public/app/plugins/panel/nodeGraph/Edge.tsx": { @@ -4569,6 +5313,11 @@ "count": 1 } }, + "public/app/plugins/panel/stat/StatPanel.tsx": { + "react-prefer-function-component/react-prefer-function-component": { + "count": 1 + } + }, "public/app/plugins/panel/state-timeline/migrations.ts": { "@typescript-eslint/no-explicit-any": { "count": 2 diff --git a/eslint.config.js b/eslint.config.js index cb8fba5222d..417d8e552b2 100644 --- a/eslint.config.js +++ b/eslint.config.js @@ -8,6 +8,7 @@ const jsxA11yPlugin = require('eslint-plugin-jsx-a11y'); const lodashPlugin = require('eslint-plugin-lodash'); const barrelPlugin = require('eslint-plugin-no-barrel-files'); const reactPlugin = require('eslint-plugin-react'); +const reactPreferFunctionComponentPlugin = require('eslint-plugin-react-prefer-function-component'); const testingLibraryPlugin = require('eslint-plugin-testing-library'); const unicornPlugin = require('eslint-plugin-unicorn'); @@ -140,6 +141,7 @@ module.exports = [ 'no-barrel-files': barrelPlugin, '@grafana': grafanaPlugin, unicorn: unicornPlugin, + 'react-prefer-function-component': reactPreferFunctionComponentPlugin, }, settings: { @@ -156,6 +158,7 @@ module.exports = [ '@grafana/no-border-radius-literal': 'error', '@grafana/no-unreduced-motion': 'error', '@grafana/no-restricted-img-srcs': 'error', + 'react-prefer-function-component/react-prefer-function-component': 'error', 'react/prop-types': 'off', // need to ignore emotion's `css` prop, see https://github.com/jsx-eslint/eslint-plugin-react/blob/master/docs/rules/no-unknown-property.md#rule-options 'react/no-unknown-property': ['error', { ignore: ['css'] }], diff --git a/go.mod b/go.mod index 8754c16fc81..5d49b559817 100644 --- a/go.mod +++ b/go.mod @@ -38,7 +38,7 @@ require ( github.com/aws/aws-sdk-go-v2/service/ec2 v1.225.2 // @grafana/aws-datasources github.com/aws/aws-sdk-go-v2/service/oam v1.18.3 // @grafana/aws-datasources github.com/aws/aws-sdk-go-v2/service/resourcegroupstaggingapi v1.26.6 // @grafana/aws-datasources - github.com/aws/smithy-go v1.22.5 // @grafana/aws-datasources + github.com/aws/smithy-go v1.23.1 // @grafana/aws-datasources github.com/beevik/etree v1.4.1 // @grafana/grafana-backend-group github.com/benbjohnson/clock v1.3.5 // @grafana/alerting-backend github.com/blang/semver/v4 v4.0.0 // indirect; @grafana/grafana-developer-enablement-squad @@ -107,7 +107,7 @@ require ( github.com/grafana/loki/v3 v3.2.1 // @grafana/observability-logs github.com/grafana/nanogit v0.0.0-20250723104447-68f58f5ecec0 // indirect; @grafana/grafana-git-ui-sync-team github.com/grafana/otel-profiling-go v0.5.1 // @grafana/grafana-backend-group - github.com/grafana/pyroscope-go/godeltaprof v0.1.8 // @grafana/observability-traces-and-profiling + github.com/grafana/pyroscope-go/godeltaprof v0.1.9 // @grafana/observability-traces-and-profiling github.com/grafana/pyroscope/api v1.2.1-0.20250415190842-3ff7247547ae // @grafana/observability-traces-and-profiling github.com/grafana/tempo v1.5.1-0.20250529124718-87c2dc380cec // @grafana/observability-traces-and-profiling github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 // @grafana/grafana-search-and-storage @@ -140,7 +140,7 @@ require ( github.com/migueleliasweb/go-github-mock v1.1.0 // @grafana/grafana-git-ui-sync-team github.com/mitchellh/copystructure v1.2.0 // @grafana/grafana-operator-experience-squad github.com/mitchellh/mapstructure v1.5.1-0.20231216201459-8508981c8b6c //@grafana/identity-access-team - github.com/mocktools/go-smtp-mock/v2 v2.3.1 // @grafana/grafana-backend-group + github.com/mocktools/go-smtp-mock/v2 v2.5.1 // @grafana/grafana-backend-group github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // @grafana/alerting-backend github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f // @grafana/grafana-operator-experience-squad github.com/olekukonko/tablewriter v0.0.5 // @grafana/grafana-backend-group @@ -175,7 +175,7 @@ require ( github.com/ua-parser/uap-go v0.0.0-20250213224047-9c035f085b90 // @grafana/grafana-backend-group github.com/urfave/cli v1.22.17 // indirect; @grafana/grafana-backend-group github.com/urfave/cli/v2 v2.27.7 // @grafana/grafana-backend-group - github.com/urfave/cli/v3 v3.3.3 // @grafana/grafana-backend-group + github.com/urfave/cli/v3 v3.4.1 // @grafana/grafana-backend-group github.com/wk8/go-ordered-map v1.0.0 // @grafana/grafana-backend-group github.com/xlab/treeprint v1.2.0 // @grafana/observability-traces-and-profiling github.com/youmark/pkcs8 v0.0.0-20240726163527-a2c0da244d78 // @grafana/grafana-operator-experience-squad @@ -205,7 +205,7 @@ require ( golang.org/x/net v0.45.0 // @grafana/oss-big-tent @grafana/partner-datasources golang.org/x/oauth2 v0.30.0 // @grafana/identity-access-team golang.org/x/sync v0.17.0 // @grafana/alerting-backend - golang.org/x/text v0.29.0 // @grafana/grafana-backend-group + golang.org/x/text v0.30.0 // @grafana/grafana-backend-group golang.org/x/time v0.13.0 // @grafana/grafana-backend-group golang.org/x/tools v0.37.0 // indirect; @grafana/grafana-as-code gonum.org/v1/gonum v0.16.0 // @grafana/oss-big-tent @@ -225,7 +225,7 @@ require ( k8s.io/kube-aggregator v0.34.1 // @grafana/grafana-app-platform-squad k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // @grafana/grafana-app-platform-squad k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // @grafana/partner-datasources - modernc.org/sqlite v1.38.2 // @grafana/grafana-backend-group + modernc.org/sqlite v1.39.1 // @grafana/grafana-backend-group pgregory.net/rapid v1.2.0 // @grafana/grafana-operator-experience-squad sigs.k8s.io/randfill v1.0.0 // @grafana/grafana-app-platform-squad sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // @grafana/grafana-app-platform-squad @@ -645,7 +645,7 @@ require ( gopkg.in/telebot.v3 v3.3.8 // indirect k8s.io/apiextensions-apiserver v0.34.1 // indirect k8s.io/kms v0.34.1 // indirect - modernc.org/libc v1.66.3 // indirect + modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect diff --git a/go.sum b/go.sum index acb8cdb6a37..0cc21ad631a 100644 --- a/go.sum +++ b/go.sum @@ -890,8 +890,8 @@ github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2 h1:pd9G9HQaM6UZAZh19pYOkpKS github.com/aws/aws-sdk-go-v2/service/ssooidc v1.33.2/go.mod h1:eknndR9rU8UpE/OmFpqU78V1EcXPKFTTm5l/buZYgvM= github.com/aws/aws-sdk-go-v2/service/sts v1.38.0 h1:iV1Ko4Em/lkJIsoKyGfc0nQySi+v0Udxr6Igq+y9JZc= github.com/aws/aws-sdk-go-v2/service/sts v1.38.0/go.mod h1:bEPcjW7IbolPfK67G1nilqWyoxYMSPrDiIQ3RdIdKgo= -github.com/aws/smithy-go v1.22.5 h1:P9ATCXPMb2mPjYBgueqJNCA5S9UfktsW0tTxi+a7eqw= -github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= +github.com/aws/smithy-go v1.23.1 h1:sLvcH6dfAFwGkHLZ7dGiYF7aK6mg4CgKA/iDKjLDt9M= +github.com/aws/smithy-go v1.23.1/go.mod h1:LEj2LM3rBRQJxPZTB4KuzZkaZYnZPnvgIhb4pu07mx0= github.com/axiomhq/hyperloglog v0.0.0-20191112132149-a4c4c47bc57f/go.mod h1:2stgcRjl6QmW+gU2h5E7BQXg4HU0gzxKWDuT5HviN9s= github.com/axiomhq/hyperloglog v0.0.0-20240507144631-af9851f82b27 h1:60m4tnanN1ctzIu4V3bfCNJ39BiOPSm1gHFlFjTkRE0= github.com/axiomhq/hyperloglog v0.0.0-20240507144631-af9851f82b27/go.mod h1:k08r+Yj1PRAmuayFiRK6MYuR5Ve4IuZtTfxErMIh0+c= @@ -1637,8 +1637,8 @@ github.com/grafana/otel-profiling-go v0.5.1 h1:stVPKAFZSa7eGiqbYuG25VcqYksR6iWvF github.com/grafana/otel-profiling-go v0.5.1/go.mod h1:ftN/t5A/4gQI19/8MoWurBEtC6gFw8Dns1sJZ9W4Tls= github.com/grafana/prometheus-alertmanager v0.25.1-0.20250911094103-5456b6e45604 h1:aXfUhVN/Ewfpbko2CCtL65cIiGgwStOo4lWH2b6gw2U= github.com/grafana/prometheus-alertmanager v0.25.1-0.20250911094103-5456b6e45604/go.mod h1:O/QP1BCm0HHIzbKvgMzqb5sSyH88rzkFk84F4TfJjBU= -github.com/grafana/pyroscope-go/godeltaprof v0.1.8 h1:iwOtYXeeVSAeYefJNaxDytgjKtUuKQbJqgAIjlnicKg= -github.com/grafana/pyroscope-go/godeltaprof v0.1.8/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9 h1:c1Us8i6eSmkW+Ez05d3co8kasnuOY813tbMN8i/a3Og= +github.com/grafana/pyroscope-go/godeltaprof v0.1.9/go.mod h1:2+l7K7twW49Ct4wFluZD3tZ6e0SjanjcUUBPVD/UuGU= github.com/grafana/pyroscope/api v1.2.1-0.20250415190842-3ff7247547ae h1:35W3Wjp9KWnSoV/DuymmyIj5aHE0CYlDQ5m2KeXUPAc= github.com/grafana/pyroscope/api v1.2.1-0.20250415190842-3ff7247547ae/go.mod h1:6CJ1uXmLZ13ufpO9xE4pST+DyaBt0uszzrV0YnoaVLQ= github.com/grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc h1:GN2Lv3MGO7AS6PrRoT6yV5+wkrOpcszoIsO4+4ds248= @@ -2054,8 +2054,8 @@ github.com/moby/sys/sequential v0.5.0 h1:OPvI35Lzn9K04PBbCLW0g4LcFAJgHsvXsRyewg5 github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= github.com/moby/term v0.5.0 h1:xt8Q1nalod/v7BqbG21f8mQPqH+xAaC9C3N3wfWbVP0= github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= -github.com/mocktools/go-smtp-mock/v2 v2.3.1 h1:wq75NDSsOy5oHo/gEQQT0fRRaYKRqr1IdkjhIPXxagM= -github.com/mocktools/go-smtp-mock/v2 v2.3.1/go.mod h1:h9AOf/IXLSU2m/1u4zsjtOM/WddPwdOUBz56dV9f81M= +github.com/mocktools/go-smtp-mock/v2 v2.5.1 h1:QcMJMChSgG1olVj4o6xxQFdrWzRjYNrcq660HAjd0wA= +github.com/mocktools/go-smtp-mock/v2 v2.5.1/go.mod h1:Rr8M2njlxx//l5INl2+uESnsL2lDsL24teEykCrGfmE= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -2479,8 +2479,8 @@ github.com/urfave/cli v1.22.17 h1:SYzXoiPfQjHBbkYxbew5prZHS1TOLT3ierW8SYLqtVQ= github.com/urfave/cli v1.22.17/go.mod h1:b0ht0aqgH/6pBYzzxURyrM4xXNgsoT/n2ZzwQiEhNVo= github.com/urfave/cli/v2 v2.27.7 h1:bH59vdhbjLv3LAvIu6gd0usJHgoTTPhCFib8qqOwXYU= github.com/urfave/cli/v2 v2.27.7/go.mod h1:CyNAG/xg+iAOg0N4MPGZqVmv2rCoP267496AOXUZjA4= -github.com/urfave/cli/v3 v3.3.3 h1:byCBaVdIXuLPIDm5CYZRVG6NvT7tv1ECqdU4YzlEa3I= -github.com/urfave/cli/v3 v3.3.3/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= +github.com/urfave/cli/v3 v3.4.1 h1:1M9UOCy5bLmGnuu1yn3t3CB4rG79Rtoxuv1sPhnm6qM= +github.com/urfave/cli/v3 v3.4.1/go.mod h1:FJSKtM/9AiiTOJL4fJ6TbMUkxBXn7GO9guZqoZtpYpo= github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw= github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= github.com/vultr/govultr/v2 v2.17.2 h1:gej/rwr91Puc/tgh+j33p/BLR16UrIPnSr+AIwYWZQs= @@ -3119,8 +3119,8 @@ golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/text v0.16.0/go.mod h1:GhwF1Be+LQoKShO3cGOHzqOgRrGaYc9AvblQOmPVHnI= golang.org/x/text v0.18.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= -golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= +golang.org/x/text v0.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= +golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -3633,19 +3633,19 @@ lukechampine.com/uint128 v1.2.0/go.mod h1:c4eWIwlEGaxC/+H1VguhU4PHXNWDCDMUlWdIWl modernc.org/cc/v3 v3.36.0/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= modernc.org/cc/v3 v3.36.2/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= modernc.org/cc/v3 v3.36.3/go.mod h1:NFUHyPn4ekoC/JHeZFfZurN6ixxawE1BnVonP/oahEI= -modernc.org/cc/v4 v4.26.2 h1:991HMkLjJzYBIfha6ECZdjrIYz2/1ayr+FL8GN+CNzM= -modernc.org/cc/v4 v4.26.2/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= +modernc.org/cc/v4 v4.26.5 h1:xM3bX7Mve6G8K8b+T11ReenJOT+BmVqQj0FY5T4+5Y4= +modernc.org/cc/v4 v4.26.5/go.mod h1:uVtb5OGqUKpoLWhqwNQo/8LwvoiEBLvZXIQ/SmO6mL0= modernc.org/ccgo/v3 v3.0.0-20220428102840-41399a37e894/go.mod h1:eI31LL8EwEBKPpNpA4bU1/i+sKOwOrQy8D87zWUcRZc= modernc.org/ccgo/v3 v3.0.0-20220430103911-bc99d88307be/go.mod h1:bwdAnOoaIt8Ax9YdWGjxWsdkPcZyRPHqrOvJxaKAKGw= modernc.org/ccgo/v3 v3.16.4/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= modernc.org/ccgo/v3 v3.16.6/go.mod h1:tGtX0gE9Jn7hdZFeU88slbTh1UtCYKusWOoCJuvkWsQ= modernc.org/ccgo/v3 v3.16.8/go.mod h1:zNjwkizS+fIFDrDjIAgBSCLkWbJuHF+ar3QRn+Z9aws= modernc.org/ccgo/v3 v3.16.9/go.mod h1:zNMzC9A9xeNUepy6KuZBbugn3c0Mc9TeiJO4lgvkJDo= -modernc.org/ccgo/v4 v4.28.0 h1:rjznn6WWehKq7dG4JtLRKxb52Ecv8OUGah8+Z/SfpNU= -modernc.org/ccgo/v4 v4.28.0/go.mod h1:JygV3+9AV6SmPhDasu4JgquwU81XAKLd3OKTUDNOiKE= +modernc.org/ccgo/v4 v4.28.1 h1:wPKYn5EC/mYTqBO373jKjvX2n+3+aK7+sICCv4Fjy1A= +modernc.org/ccgo/v4 v4.28.1/go.mod h1:uD+4RnfrVgE6ec9NGguUNdhqzNIeeomeXf6CL0GTE5Q= modernc.org/ccorpus v1.11.6/go.mod h1:2gEUTrWqdpH2pXsmTM1ZkjeSrUWDpjMu2T6m29L/ErQ= -modernc.org/fileutil v1.3.8 h1:qtzNm7ED75pd1C7WgAGcK4edm4fvhtBsEiI/0NQ54YM= -modernc.org/fileutil v1.3.8/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= +modernc.org/fileutil v1.3.40 h1:ZGMswMNc9JOCrcrakF1HrvmergNLAmxOPjizirpfqBA= +modernc.org/fileutil v1.3.40/go.mod h1:HxmghZSZVAz/LXcMNwZPA/DRrQZEVP9VX0V4LQGQFOc= modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI= modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito= modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks= @@ -3658,8 +3658,8 @@ modernc.org/libc v1.16.17/go.mod h1:hYIV5VZczAmGZAnG15Vdngn5HSF5cSkbvfz2B7GRuVU= modernc.org/libc v1.16.19/go.mod h1:p7Mg4+koNjc8jkqwcoFBJx7tXkpj00G77X7A72jXPXA= modernc.org/libc v1.17.0/go.mod h1:XsgLldpP4aWlPlsjqKRdHPqCxCjISdHfM/yeWC5GyW0= modernc.org/libc v1.17.1/go.mod h1:FZ23b+8LjxZs7XtFMbSzL/EhPxNbfZbErxEHc7cbD9s= -modernc.org/libc v1.66.3 h1:cfCbjTUcdsKyyZZfEUKfoHcP3S0Wkvz3jgSzByEWVCQ= -modernc.org/libc v1.66.3/go.mod h1:XD9zO8kt59cANKvHPXpx7yS2ELPheAey0vjIuZOhOU8= +modernc.org/libc v1.66.10 h1:yZkb3YeLx4oynyR+iUsXsybsX4Ubx7MQlSYEw4yj59A= +modernc.org/libc v1.66.10/go.mod h1:8vGSEwvoUoltr4dlywvHqjtAqHBaw0j1jI7iFBTAr2I= modernc.org/mathutil v1.2.2/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.4.1/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= modernc.org/mathutil v1.5.0/go.mod h1:mZW8CKdRPY1v87qxC/wUdX5O1qDzXMP5TH3wjfpga6E= @@ -3677,8 +3677,8 @@ modernc.org/opt v0.1.4/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns= modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w= modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE= modernc.org/sqlite v1.18.1/go.mod h1:6ho+Gow7oX5V+OiOQ6Tr4xeqbx13UZ6t+Fw9IRUG4d4= -modernc.org/sqlite v1.38.2 h1:Aclu7+tgjgcQVShZqim41Bbw9Cho0y/7WzYptXqkEek= -modernc.org/sqlite v1.38.2/go.mod h1:cPTJYSlgg3Sfg046yBShXENNtPrWrDX8bsbAQBzgQ5E= +modernc.org/sqlite v1.39.1 h1:H+/wGFzuSCIEVCvXYVHX5RQglwhMOvtHSv+VtidL2r4= +modernc.org/sqlite v1.39.1/go.mod h1:9fjQZ0mB1LLP0GYrp39oOJXx/I2sxEnZtzCmEQIKvGE= modernc.org/strutil v1.1.1/go.mod h1:DE+MQQ/hjKBZS2zNInV5hhcipt5rLPWkmpbGeW5mmdw= modernc.org/strutil v1.1.3/go.mod h1:MEHNA7PdEnEwLvspRMtWTNnp2nnyvMfkimT1NKNAGbw= modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0= diff --git a/go.work.sum b/go.work.sum index 4ad9d238375..b4435727340 100644 --- a/go.work.sum +++ b/go.work.sum @@ -680,6 +680,7 @@ github.com/aws/aws-sdk-go-v2/service/ssm v1.52.4 h1:hgSBvRT7JEWx2+vEGI9/Ld5rZtl7 github.com/aws/aws-sdk-go-v2/service/ssm v1.52.4/go.mod h1:v7NIzEFIHBiicOMaMTuEmbnzGnqW0d+6ulNALul6fYE= github.com/aws/aws-sdk-go-v2/service/ssm v1.58.0 h1:zQz6Q5uaC8s9734DV9UDAm2q1TEEfOvEejDBSulOapI= github.com/aws/aws-sdk-go-v2/service/ssm v1.58.0/go.mod h1:PUWUl5MDiYNQkUHN9Pyd9kgtA/YhbxnSnHP+yQqzrM8= +github.com/aws/smithy-go v1.22.5/go.mod h1:t1ufH5HMublsJYulve2RKmHDC15xu1f26kHCp/HgceI= github.com/awslabs/aws-lambda-go-api-proxy v0.16.2 h1:CJyGEyO1CIwOnXTU40urf0mchf6t3voxpvUDikOU9LY= github.com/awslabs/aws-lambda-go-api-proxy v0.16.2/go.mod h1:vxxjwBHe/KbgFeNlAP/Tvp4SsVRL3WQamcWRxqVh0z0= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= @@ -988,7 +989,6 @@ github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9 github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= github.com/google/cel-go v0.23.2/go.mod h1:52Pb6QsDbC5kvgxvZhiL9QX1oZEkcUF/ZqaPx1J5Wwo= github.com/google/cel-go v0.26.0/go.mod h1:A9O8OU9rdvrK5MQyrqfIxo1a0u4g3sF8KB6PUIaryMM= -github.com/google/go-github v17.0.0+incompatible h1:N0LgJ1j65A7kfXrZnUDaYCs/Sf4rEjNlfyDHW9dolSY= github.com/google/go-jsonnet v0.18.0 h1:/6pTy6g+Jh1a1I2UMoAODkqELFiVIdOxbNwv0DDzoOg= github.com/google/go-jsonnet v0.18.0/go.mod h1:C3fTzyVJDslXdiTqw/bTFk7vSGyCtH3MGRbDfvEwGd0= github.com/google/go-pkcs11 v0.3.0 h1:PVRnTgtArZ3QQqTGtbtjtnIkzl2iY2kt24yqbrf7td8= @@ -1063,7 +1063,6 @@ github.com/grafana/dskit v0.0.0-20250818234656-8ff9c6532e85/go.mod h1:kImsvJ1xnm github.com/grafana/go-gelf/v2 v2.0.1 h1:BOChP0h/jLeD+7F9mL7tq10xVkDG15he3T1zHuQaWak= github.com/grafana/go-gelf/v2 v2.0.1/go.mod h1:lexHie0xzYGwCgiRGcvZ723bSNyNI8ZRD4s0CLobh90= github.com/grafana/gomemcache v0.0.0-20250228145437-da7b95fd2ac1/go.mod h1:j/s0jkda4UXTemDs7Pgw/vMT06alWc42CHisvYac0qw= -github.com/grafana/gomemcache v0.0.0-20250828162811-a96f6acee2fe/go.mod h1:j/s0jkda4UXTemDs7Pgw/vMT06alWc42CHisvYac0qw= github.com/grafana/grafana-app-sdk v0.40.1/go.mod h1:4P8h7VB6KcDjX9bAoBQc6IP8iNylxe6bSXLR9gA39gM= github.com/grafana/grafana-app-sdk v0.41.0 h1:SYHN3U7B1myRKY3UZZDkFsue9TDmAOap0UrQVTqtYBU= github.com/grafana/grafana-app-sdk v0.41.0/go.mod h1:Wg/3vEZfok1hhIWiHaaJm+FwkosfO98o8KbeLFEnZpY= @@ -1230,6 +1229,7 @@ github.com/kisielk/errcheck v1.5.0 h1:e8esj/e4R+SAOwFwN+n3zr0nYeCyeweozKfO23MvHz github.com/kisielk/gotool v1.0.0 h1:AV2c/EiW3KqPNT9ZKl07ehoAGi4C5/01Cfbblndcapg= github.com/kisielk/sqlstruct v0.0.0-20201105191214-5f3e10d3ab46 h1:veS9QfglfvqAw2e+eeNT/SbGySq8ajECXJ9e4fPoLhY= github.com/klauspost/compress v1.16.7/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/klauspost/cpuid v1.3.1 h1:5JNjFYYQrZeKRJ0734q51WCEEn2huer72Dc7K+R/b6s= github.com/klauspost/cpuid v1.3.1/go.mod h1:bYW4mA6ZgKPob1/Dlai2LviZJO7KGI3uoWLd42rAQw4= github.com/klauspost/cpuid/v2 v2.0.10/go.mod h1:g2LTdtYhdyuGPqyWyv7qRAmj1WBqxuObKfj5c0PQa7c= @@ -2036,6 +2036,7 @@ golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU= golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.28.0/go.mod h1:U8nCwOR8jO/marOQ0QbDiOngZVEBB7MAiitBuMjXiNU= +golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.8.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/time v0.9.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= @@ -2235,6 +2236,8 @@ modernc.org/ccgo/v3 v3.17.0/go.mod h1:Sg3fwVpmLvCUTaqEUjiBDAvshIaKDB0RXaf+zgqFu8 modernc.org/ccorpus v1.11.6 h1:J16RXiiqiCgua6+ZvQot4yUuUy8zxgqbqEEUuGPlISk= modernc.org/ccorpus2 v1.5.2 h1:Ui+4tc58mf/W+2arcYCJR903y3zl3ecsI7Fpaaqozyw= modernc.org/ccorpus2 v1.5.2/go.mod h1:Wifvo4Q/qS/h1aRoC2TffcHsnxwTikmi1AuLANuucJQ= +modernc.org/ccorpus2 v1.5.4 h1:k9A52f3NsUQzHStOav5ukvkdKz63CW5po4gaC5VH4Qc= +modernc.org/ccorpus2 v1.5.4/go.mod h1:Wifvo4Q/qS/h1aRoC2TffcHsnxwTikmi1AuLANuucJQ= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6 h1:5D53IMaUuA5InSeMu9eJtlQXS2NxAhyWQvkKEgXZhHI= modernc.org/gc/v3 v3.0.0-20240107210532-573471604cb6/go.mod h1:Qz0X07sNOR1jWYCrJMEnbW/X55x206Q7Vt4mz6/wHp4= modernc.org/httpfs v1.0.6 h1:AAgIpFZRXuYnkjftxTAZwMIiwEqAfk8aVB2/oA6nAeM= diff --git a/package.json b/package.json index 68aa8df691e..39fc401989a 100644 --- a/package.json +++ b/package.json @@ -198,6 +198,7 @@ "eslint-plugin-no-barrel-files": "^1.1.1", "eslint-plugin-react": "7.37.5", "eslint-plugin-react-hooks": "5.2.0", + "eslint-plugin-react-prefer-function-component": "4.0.1", "eslint-plugin-testing-library": "^7.0.0", "eslint-plugin-unicorn": "^56.0.0", "eslint-scope": "^8.1.0", diff --git a/packages/grafana-data/src/types/pluginExtensions.ts b/packages/grafana-data/src/types/pluginExtensions.ts index 9a02e5fac27..47e130afcce 100644 --- a/packages/grafana-data/src/types/pluginExtensions.ts +++ b/packages/grafana-data/src/types/pluginExtensions.ts @@ -181,6 +181,15 @@ export type PluginExtensionEventHelpers = { * Closes the extension sidebar. */ closeSidebar: () => void; + /** + * @internal + * Toggles the extension sidebar with the registered component. + * If the sidebar is open with the same component, it will be closed. + * If the sidebar is closed or open with a different component, it will be opened with the specified component. + * @param componentTitle The title of the component to be toggled in the sidebar. + * @param props The props to be passed to the component. + */ + toggleSidebar: (componentTitle: string, props?: Record) => void; }; // Extension Points & Contexts diff --git a/packages/grafana-prometheus/src/querybuilder/QueryPattern.tsx b/packages/grafana-prometheus/src/querybuilder/QueryPattern.tsx index b61f64ec58d..5d8a74f787a 100644 --- a/packages/grafana-prometheus/src/querybuilder/QueryPattern.tsx +++ b/packages/grafana-prometheus/src/querybuilder/QueryPattern.tsx @@ -28,7 +28,7 @@ export const QueryPattern = (props: Props) => { const lang = { grammar: promqlGrammar, name: 'promql' }; return ( - + {pattern.name}
{ ); }} > -
+ {promQueryModeller .getQueryPatterns() .filter((pattern) => pattern.type === patternType) @@ -140,7 +140,7 @@ export const QueryPatternsModal = (props: Props) => { setSelectedPatternName={setSelectedPatternName} /> ))} -
+ ); })} @@ -160,12 +160,6 @@ export const QueryPatternsModal = (props: Props) => { const getStyles = (theme: GrafanaTheme2) => { return { - cardsContainer: css({ - display: 'flex', - flexDirection: 'row', - flexWrap: 'wrap', - justifyContent: 'space-between', - }), spacing: css({ marginBottom: theme.spacing(1), }), diff --git a/packages/grafana-runtime/src/services/pluginExtensions/utils.test.tsx b/packages/grafana-runtime/src/services/pluginExtensions/utils.test.tsx index 14f1a9082be..b57a795c3b5 100644 --- a/packages/grafana-runtime/src/services/pluginExtensions/utils.test.tsx +++ b/packages/grafana-runtime/src/services/pluginExtensions/utils.test.tsx @@ -108,11 +108,15 @@ describe('Plugin Extensions / Utils', () => { test('should work when using class components', () => { const props = {}; + // this specifically needs to be a class component + // eslint-disable-next-line react-prefer-function-component/react-prefer-function-component const Component1 = class extends React.Component<{}> { render() { return
Test 1
; } }; + // this specifically needs to be a class component + // eslint-disable-next-line react-prefer-function-component/react-prefer-function-component const Component2 = class extends React.Component<{}> { render() { return
Test 2
; diff --git a/packages/grafana-test-utils/src/handlers/api/search/handlers.ts b/packages/grafana-test-utils/src/handlers/api/search/handlers.ts index 84cda34bb0c..ed42d326d46 100644 --- a/packages/grafana-test-utils/src/handlers/api/search/handlers.ts +++ b/packages/grafana-test-utils/src/handlers/api/search/handlers.ts @@ -24,6 +24,7 @@ const getLegacySearchHandler = () => // Workaround for the fixture kind being 'dashboard' instead of 'dash-db' const mappedTypeFilter = typeFilter === 'dash-db' ? 'dashboard' : typeFilter; const starredFilter = new URL(request.url).searchParams.get('starred') || null; + const tagFilter = new URL(request.url).searchParams.getAll('tag') || null; const response = mockTree .filter((filterItem) => { @@ -32,6 +33,14 @@ const getLegacySearchHandler = () => ({ item }) => item.kind !== 'ui', ]; + if (tagFilter && tagFilter.length > 0) { + filters.push(({ item }) => + Boolean( + (item.kind === 'folder' || item.kind === 'dashboard') && item.tags?.some((tag) => tagFilter.includes(tag)) + ) + ); + } + if (starredFilter) { filters.push(({ item }) => mockStarredDashboards.includes(item.uid)); } diff --git a/packages/grafana-test-utils/src/handlers/apis/dashboard.grafana.app/v0alpha1/handlers.ts b/packages/grafana-test-utils/src/handlers/apis/dashboard.grafana.app/v0alpha1/handlers.ts index f6d079755c5..6981201f81f 100644 --- a/packages/grafana-test-utils/src/handlers/apis/dashboard.grafana.app/v0alpha1/handlers.ts +++ b/packages/grafana-test-utils/src/handlers/apis/dashboard.grafana.app/v0alpha1/handlers.ts @@ -23,6 +23,7 @@ const getSearchHandler = () => const typeFilter = new URL(request.url).searchParams.get('type') || null; const nameFilter = new URL(request.url).searchParams.getAll('name'); const mappedTypeFilter = typeFilter ? typeFilterMap[typeFilter] || typeFilter : null; + const tagFilter = new URL(request.url).searchParams.getAll('tag') || null; const filtered = mockTree.filter((filterItem) => { const filters: FilterArray = [ @@ -39,6 +40,14 @@ const getSearchHandler = () => filters.push(({ item }) => item.kind === mappedTypeFilter); } + if (tagFilter && tagFilter.length > 0) { + filters.push(({ item }) => + Boolean( + (item.kind === 'folder' || item.kind === 'dashboard') && item.tags?.some((tag) => tagFilter.includes(tag)) + ) + ); + } + if (folderFilter && folderFilter !== 'general') { filters.push( ({ item }) => (item.kind === 'folder' || item.kind === 'dashboard') && item.parentUID === folderFilter diff --git a/packages/grafana-ui/.storybook/preview.ts b/packages/grafana-ui/.storybook/preview.ts index 124981e1434..e245a46646a 100644 --- a/packages/grafana-ui/.storybook/preview.ts +++ b/packages/grafana-ui/.storybook/preview.ts @@ -64,7 +64,18 @@ const preview: Preview = { docs: { container: ThemedDocsContainer, }, - a11y: { test: 'error' }, + a11y: { + test: 'error', + config: { + rules: [ + { + id: 'scrollable-region-focusable', + selector: 'body', + enabled: false, + }, + ], + }, + }, knobs: { disable: true, }, diff --git a/packages/grafana-ui/src/components/Forms/Checkbox.story.tsx b/packages/grafana-ui/src/components/Forms/Checkbox.story.tsx index f79388911bd..f08f7a996af 100644 --- a/packages/grafana-ui/src/components/Forms/Checkbox.story.tsx +++ b/packages/grafana-ui/src/components/Forms/Checkbox.story.tsx @@ -18,8 +18,6 @@ const meta: Meta = { controls: { exclude: ['value', 'htmlValue'], }, - // TODO fix a11y issue in story and remove this - a11y: { test: 'off' }, }, }; @@ -94,7 +92,7 @@ export const AllStates: StoryFn = (args) => { - + diff --git a/packages/grafana-ui/src/components/Forms/Checkbox.tsx b/packages/grafana-ui/src/components/Forms/Checkbox.tsx index 29b8dc5e699..173f821e287 100644 --- a/packages/grafana-ui/src/components/Forms/Checkbox.tsx +++ b/packages/grafana-ui/src/components/Forms/Checkbox.tsx @@ -18,7 +18,7 @@ export interface CheckboxProps extends Omit, 'value' value?: boolean; /** htmlValue allows to specify the input "value" attribute */ htmlValue?: string | number; - /** Sets the checkbox into a "mixed" state. This is only a visual change and does not affect the value. */ + /** Sets the checkbox into a "mixed" state */ indeterminate?: boolean; /** Show an invalid state around the input */ invalid?: boolean; @@ -39,8 +39,6 @@ export const Checkbox = React.forwardRef( ); const styles = useStyles2(getCheckboxStyles, invalid); - const ariaChecked = indeterminate ? 'mixed' : undefined; - return (