From f116208b884c951415effb0b43a6fcae283e0e70 Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 17:00:36 +0000 Subject: [PATCH 01/26] chore(deps): update dependency nanoid to v5.1.6 (#113879) | datasource | package | from | to | | ---------- | ------- | ----- | ----- | | npm | nanoid | 5.1.5 | 5.1.6 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 9f05c45b7b7..3e480b353a9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -24305,11 +24305,11 @@ __metadata: linkType: hard "nanoid@npm:^5.0.9": - version: 5.1.5 - resolution: "nanoid@npm:5.1.5" + version: 5.1.6 + resolution: "nanoid@npm:5.1.6" bin: nanoid: bin/nanoid.js - checksum: 10/6de2d006b51c983be385ef7ee285f7f2a57bd96f8c0ca881c4111461644bd81fafc2544f8e07cb834ca0f3e0f3f676c1fe78052183f008b0809efe6e273119f5 + checksum: 10/4109dbcf596d7f297a9b42f459b8f01694a03ebbdd2f41408d963ad54e5ec7234cbe7b4acad137751f31add11bb4fb3415a3e688082516745812811f05570014 languageName: node linkType: hard From 58e0d03f46b1837a4cc64e31c7fa30ce747e4da8 Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 17:01:01 +0000 Subject: [PATCH 02/26] chore(deps): update dependency ol-mapbox-style to v13.1.1 (#113880) | datasource | package | from | to | | ---------- | --------------- | ------ | ------ | | npm | ol-mapbox-style | 13.1.0 | 13.1.1 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- yarn.lock | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/yarn.lock b/yarn.lock index 3e480b353a9..30ffa2e69ae 100644 --- a/yarn.lock +++ b/yarn.lock @@ -25298,14 +25298,14 @@ __metadata: linkType: hard "ol-mapbox-style@npm:^13.0.1": - version: 13.1.0 - resolution: "ol-mapbox-style@npm:13.1.0" + version: 13.1.1 + resolution: "ol-mapbox-style@npm:13.1.1" dependencies: "@maplibre/maplibre-gl-style-spec": "npm:^23.1.0" mapbox-to-css-font: "npm:^3.2.0" peerDependencies: ol: "*" - checksum: 10/a6dba04dcfc9e0344fed9ad1a76b875eb1a1286d2b6c0f9d9d6004bb5376227fa7dee15bbe38966429ab479bec3109b39e92541a20e0e175e8205cc78c039ed2 + checksum: 10/9182bebfee63881465a9dbeecaeab361b70f4fe3abf406d755adde02cf50c765b6e5de072716e627b777ffb2b98fc72dde12bee470996139438a6b1133c370f3 languageName: node linkType: hard From ffcd06c629d71733f9dc894e4770ee1b2e293ca5 Mon Sep 17 00:00:00 2001 From: Yunwen Zheng Date: Fri, 14 Nov 2025 12:03:08 -0500 Subject: [PATCH 03/26] Git sync: Remove unnecessary comments (#113963) remove comment --- .../provisioning/hooks/useSelectionProvisioningStatus.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/public/app/features/provisioning/hooks/useSelectionProvisioningStatus.ts b/public/app/features/provisioning/hooks/useSelectionProvisioningStatus.ts index c362d9fdeec..5c94e2ede8d 100644 --- a/public/app/features/provisioning/hooks/useSelectionProvisioningStatus.ts +++ b/public/app/features/provisioning/hooks/useSelectionProvisioningStatus.ts @@ -12,8 +12,6 @@ import { useSelector } from 'app/types/store'; import { findItem } from '../../browse-dashboards/state/utils'; import { DashboardTreeSelection } from '../../browse-dashboards/types'; -// TODO: This will soon be remove after bulk action is merged in - // This hook can be remove once searching endpoint returns provisioning status // It is used to determine if the selected items are provisioned or not, which is currently missing from the search API export function useSelectionProvisioningStatus( @@ -41,8 +39,6 @@ export function useSelectionProvisioningStatus( [] ); - // Simplified: removed complex root folder tracking logic - const findItemInState = useCallback( (uid: string) => { const item = findItem(browseState.rootItems?.items || [], browseState.childrenByParentUID, uid); From 050f6572a8e34c7f93df121b28c560b5ec94b649 Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 17:03:27 +0000 Subject: [PATCH 04/26] chore(deps): update dependency js-yaml to v4.1.1 [security] (#113953) | datasource | package | from | to | | ---------- | ------- | ----- | ----- | | npm | js-yaml | 4.1.0 | 4.1.1 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- yarn.lock | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/yarn.lock b/yarn.lock index 30ffa2e69ae..fa83eef5960 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22062,7 +22062,7 @@ __metadata: languageName: node linkType: hard -"js-yaml@npm:4.1.0, js-yaml@npm:=4.1.0, js-yaml@npm:^4.1.0": +"js-yaml@npm:4.1.0, js-yaml@npm:=4.1.0": version: 4.1.0 resolution: "js-yaml@npm:4.1.0" dependencies: @@ -22085,6 +22085,17 @@ __metadata: languageName: node linkType: hard +"js-yaml@npm:^4.1.0": + version: 4.1.1 + resolution: "js-yaml@npm:4.1.1" + dependencies: + argparse: "npm:^2.0.1" + bin: + js-yaml: bin/js-yaml.js + checksum: 10/a52d0519f0f4ef5b4adc1cde466cb54c50d56e2b4a983b9d5c9c0f2f99462047007a6274d7e95617a21d3c91fde3ee6115536ed70991cd645ba8521058b78f77 + languageName: node + linkType: hard + "jsbn@npm:1.1.0": version: 1.1.0 resolution: "jsbn@npm:1.1.0" From 4581ed89a04a06b9ab30932f0064f0a5623d3d25 Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Fri, 14 Nov 2025 17:51:42 +0000 Subject: [PATCH 05/26] fix(deps): update dependency marked-mangle to v1.1.12 (#113923) | datasource | package | from | to | | ---------- | ------------- | ------ | ------ | | npm | marked-mangle | 1.1.11 | 1.1.12 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- packages/grafana-data/package.json | 2 +- yarn.lock | 12 ++++++------ 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/packages/grafana-data/package.json b/packages/grafana-data/package.json index 2fce041444e..c502e576ead 100644 --- a/packages/grafana-data/package.json +++ b/packages/grafana-data/package.json @@ -70,7 +70,7 @@ "history": "4.10.1", "lodash": "4.17.21", "marked": "16.3.0", - "marked-mangle": "1.1.11", + "marked-mangle": "1.1.12", "moment": "2.30.1", "moment-timezone": "0.5.47", "ol": "10.6.1", diff --git a/yarn.lock b/yarn.lock index fa83eef5960..dceb030a6b2 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3130,7 +3130,7 @@ __metadata: history: "npm:4.10.1" lodash: "npm:4.17.21" marked: "npm:16.3.0" - marked-mangle: "npm:1.1.11" + marked-mangle: "npm:1.1.12" moment: "npm:2.30.1" moment-timezone: "npm:0.5.47" ol: "npm:10.6.1" @@ -23410,12 +23410,12 @@ __metadata: languageName: node linkType: hard -"marked-mangle@npm:1.1.11": - version: 1.1.11 - resolution: "marked-mangle@npm:1.1.11" +"marked-mangle@npm:1.1.12": + version: 1.1.12 + resolution: "marked-mangle@npm:1.1.12" peerDependencies: - marked: ">=4 <17" - checksum: 10/e2872cbe62dc60347eaef2494049a3fb65bcef3f1097407dd8e3f946856085d3ce05b516ba0d2307cbf91019fd38ad25704200c9dc601a0da29d64c76c803027 + marked: ">=4 <18" + checksum: 10/3340af16fb4247142a6cb803e89a8e1650f2f4878da0d05344dd80780abd575288015e3f9ff831e075a0b09cc5947fce39fd68bcdce2fc8ed2f727a603d78ada languageName: node linkType: hard From de45393eb57d7874f5c6605033b7be5434eab892 Mon Sep 17 00:00:00 2001 From: Juan Cabanas Date: Fri, 14 Nov 2025 15:22:48 -0300 Subject: [PATCH 06/26] Dashboard Library: Integrate template dashboards (#112906) * Extend interpolate endpoint to support community dashboard json interpolation Added unit tests * Implement Frontend Side - Show tabs - Fetch Community dashboads - basic cards for community - Search bar for community * Improve card community and show thumbnails * quick poc with template dashboards * better cards ui * entry point conditional added. dashboard card improved * dev dashboard for testing * details removed in template dashboard modal * improvement when loading the templates * dashboard from template entry points * interactions added * tracking event improvements. card improvement * unused import removed * 90% Complete MVP community dashboards integraton - Use DashboardCard component - Search grafana dashboard in the community tab - Make Tabs and pagination sticky - Adjust titles to be scoped by datasource name/type - Add skeleton loading for community tabs and pagination - Add dashboard details tooltip * Use DataSourcePicker for extra configuration page * Fix suggested dashboard, don't use filter but slug and also add gcomURLink * Implement badge, for now reuse Badge component * translations added * Refactor code, extract to utils function and clean up code * refactor provisioned dashboards images * add missing file * Extract API functions * standarize event handlers * Auto select tab when provisioned or community are not present, also add empty state for provisioned tab * use SecondaryAction iconButton for Details, and also use Tooltip * For suggested dashboards change Grid for Stack to fix issue with less than 3 dashboards, also add the details next to the main action * Fix styling issue with description miss-aligment * Change "use template" to use dashboard * update i18n * fix broken unit test * FF added * uid changed to make it work for both scenarios * Apply PR feedback - add eventLocation - Fix description placeholder - Fix issue with suggested dashboards card aligment, change to Grid * use datasource type instead of name, extract i18n and fix linting * Improve View on Grafana.com link * remove console.log * Fix issue with cards styling * improvements * Apply suggestion from @juanicabanas Co-authored-by: Juan Cabanas * Use query params for modal state and reorder dashboard empty to keep suggestions in the middle * extract common interpolate logic in new function * fix linting * rename loadTemplateDashboard function to loadSuggestedDashboard * Improve automapping layout, add dashboard name to title and pipe the mappings * Apply style guide for callback functions, and refactor constant inputs initialization wiht reduce * Fix styling issues with focus border and pagination * fix issue with card aligment * use attach skeleton instead of custom css * Adjust all i18n to use dashboard-library key * Refactor mapping form to use one array to handle unmapped ds * Update public/app/features/dashboard/dashgrid/DashboardLibrary/CommunityDashboardSection.tsx Co-authored-by: Juan Cabanas * Refactor pagination, use api pagination data * Remove unnecesary trim * Fix issue with Stack height and justifyContent in modal * Update public/app/features/dashboard/dashgrid/DashboardLibrary/SuggestedDashboards.tsx Co-authored-by: Juan Cabanas * Add missing dependency * Fix issue with mapping config form, make buttons to be aligned at the bottom * Fix unit tests * Add and refactor tracking interactions to support experiment KPIS * rename unmappedInputs to unmappedDsInputs for clarity * Update public/app/features/dashboard/dashgrid/DashboardLibrary/CommunityDashboardSection.tsx Co-authored-by: Juan Cabanas * rename modal and move modal to section * Simplify search params, extrack user selected dashboards to helper function, update pagination styles and use url based pagination * Move modal logic to the suggested dashboards component * Fix tracking duplication on first load and revert change on pagination url persistence * Extrac on preview community dashboard into utils * Bring old datasource-provisioned box back and rely on new feature toggle for community dashboards * change logic for showing suggested dashboards, we only need to enable that feature toggle * update i18n * Fix unit test for basic provisioned dashboard * fix css * Apply feedback * Add suggested dashboards to endpoint * Add missing feature toggle check in the backend to expose the interpolate api * Add extra test case * update swagger * Update public/app/features/dashboard/dashgrid/DashboardEmpty/DashboardEmpty.tsx Co-authored-by: Juan Cabanas * update swagger * changes applied to retrieve templates dashboards from raintank * translations * Remove duplicated tracking and add gnet id to the save tracking action * interactions * improvements applied * last improvements * tracking events modified with merge. translations fixed * tests fixed * uid property removed from dto. new way of tracking the ds types added * ds types from gnet dashboard removed * fixes * tracking changed * tracking modified --------- Co-authored-by: alexandra vargas Co-authored-by: Alexa Vargas <239999+axelavargas@users.noreply.github.com> Co-authored-by: nmarrs --- pkg/services/dashboardimport/api/api.go | 2 +- .../AppChrome/QuickAdd/QuickAdd.tsx | 35 +++- .../app/core/utils/navBarItem-translations.ts | 5 +- .../BrowseDashboardsPage.tsx | 2 + .../components/CreateNewButton.tsx | 48 +++-- .../commandPalette/actions/staticActions.ts | 32 +++- .../pages/DashboardScenePageStateManager.ts | 47 ++++- .../dashboard-scene/utils/tracking.ts | 25 +-- .../CommunityDashboardSection.tsx | 13 +- .../DashboardLibrary/DashboardCard.tsx | 23 ++- .../DashboardLibrarySection.tsx | 2 +- .../DashboardLibrary/SuggestedDashboards.tsx | 6 +- .../TemplateDashboardModal.tsx | 176 ++++++++++++++++++ .../api/dashboardLibraryApi.ts | 6 +- .../dashgrid/DashboardLibrary/interactions.ts | 13 ++ .../dashgrid/DashboardLibrary/types.ts | 3 +- .../utils/communityDashboardHelpers.ts | 28 --- .../utils/dashboardLibraryHelpers.ts | 71 +++++++ public/app/features/search/tempI18nPhrases.ts | 9 +- public/locales/en-US/grafana.json | 13 +- 20 files changed, 472 insertions(+), 87 deletions(-) create mode 100644 public/app/features/dashboard/dashgrid/DashboardLibrary/TemplateDashboardModal.tsx create mode 100644 public/app/features/dashboard/dashgrid/DashboardLibrary/utils/dashboardLibraryHelpers.ts diff --git a/pkg/services/dashboardimport/api/api.go b/pkg/services/dashboardimport/api/api.go index b0dabcaf881..9ce7a72684a 100644 --- a/pkg/services/dashboardimport/api/api.go +++ b/pkg/services/dashboardimport/api/api.go @@ -47,7 +47,7 @@ func (api *ImportDashboardAPI) RegisterAPIEndpoints(routeRegister routing.RouteR routing.Wrap(api.ImportDashboard), ) //nolint:staticcheck // not yet migrated to OpenFeature - if api.features.IsEnabledGlobally(featuremgmt.FlagDashboardLibrary) || api.features.IsEnabledGlobally(featuremgmt.FlagSuggestedDashboards) { + if api.features.IsEnabledGlobally(featuremgmt.FlagDashboardLibrary) || api.features.IsEnabledGlobally(featuremgmt.FlagSuggestedDashboards) || api.features.IsEnabledGlobally(featuremgmt.FlagDashboardTemplates) { route.Post( "/interpolate", authorize(accesscontrol.EvalPermission(dashboards.ActionDashboardsCreate)), diff --git a/public/app/core/components/AppChrome/QuickAdd/QuickAdd.tsx b/public/app/core/components/AppChrome/QuickAdd/QuickAdd.tsx index 3d38c543105..94603269de4 100644 --- a/public/app/core/components/AppChrome/QuickAdd/QuickAdd.tsx +++ b/public/app/core/components/AppChrome/QuickAdd/QuickAdd.tsx @@ -1,8 +1,13 @@ import { useMemo, useState } from 'react'; import { t } from '@grafana/i18n'; -import { reportInteraction } from '@grafana/runtime'; +import { getDataSourceSrv, reportInteraction, config } from '@grafana/runtime'; import { Menu, Dropdown, ToolbarButton } from '@grafana/ui'; +import { + CONTENT_KINDS, + DashboardLibraryInteractions, + SOURCE_ENTRY_POINTS, +} from 'app/features/dashboard/dashgrid/DashboardLibrary/interactions'; import { useSelector } from 'app/types/store'; import { NavToolbarSeparator } from '../NavToolbar/NavToolbarSeparator'; @@ -15,7 +20,28 @@ export const QuickAdd = ({}: Props) => { const navBarTree = useSelector((state) => state.navBarTree); const [isOpen, setIsOpen] = useState(false); - const createActions = useMemo(() => findCreateActions(navBarTree), [navBarTree]); + const createActions = useMemo(() => { + const createActions = findCreateActions(navBarTree); + + if (config.featureToggles.dashboardTemplates) { + const testDataSources = getDataSourceSrv().getList({ type: 'grafana-testdata-datasource' }); + if (testDataSources.length > 0) { + createActions.splice(1, 0, { + id: 'browse-template-dashboard', + text: t('navigation.quick-add.new-template-dashboard-button', 'Dashboard from template'), + url: '/dashboards?templateDashboards=true&source=quickAdd', + onClick: () => { + DashboardLibraryInteractions.entryPointClicked({ + entryPoint: SOURCE_ENTRY_POINTS.QUICK_ADD_BUTTON, + contentKind: CONTENT_KINDS.TEMPLATE_DASHBOARD, + }); + }, + }); + } + } + + return createActions; + }, [navBarTree]); const showQuickAdd = createActions.length > 0; if (!showQuickAdd) { @@ -30,7 +56,10 @@ export const QuickAdd = ({}: Props) => { key={index} url={createAction.url} label={createAction.text} - onClick={() => reportInteraction('grafana_menu_item_clicked', { url: createAction.url, from: 'quickadd' })} + onClick={() => { + reportInteraction('grafana_menu_item_clicked', { url: createAction.url, from: 'quickadd' }); + createAction.onClick?.(); + }} /> ))} diff --git a/public/app/core/utils/navBarItem-translations.ts b/public/app/core/utils/navBarItem-translations.ts index 0fab359de4e..0ac5619e893 100644 --- a/public/app/core/utils/navBarItem-translations.ts +++ b/public/app/core/utils/navBarItem-translations.ts @@ -1,4 +1,5 @@ import { t } from '@grafana/i18n'; +import { config } from '@grafana/runtime'; // Maps the ID of the nav item to a translated phrase to later pass to // Because the navigation content is dynamic (defined in the backend), we can not use // the normal inline message definition method. @@ -48,7 +49,9 @@ export function getNavTitle(navId: string | undefined) { case 'dashboards/recently-deleted': return t('nav.recently-deleted.title', 'Recently deleted'); case 'dashboards/new': - return t('nav.new-dashboard.title', 'New dashboard'); + return config.featureToggles.dashboardTemplates + ? t('nav.new-dashboard.empty-title', 'Empty dashboard') + : t('nav.new-dashboard.title', 'New dashboard'); case 'dashboards/folder/new': return t('nav.new-folder.title', 'New folder'); case 'dashboards/import': diff --git a/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx b/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx index bc9572efdbd..921c67ba9cb 100644 --- a/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx +++ b/public/app/features/browse-dashboards/BrowseDashboardsPage.tsx @@ -15,6 +15,7 @@ import { useDispatch } from 'app/types/store'; import { FolderRepo } from '../../core/components/NestedFolderPicker/FolderRepo'; import { contextSrv } from '../../core/services/context_srv'; import { ManagerKind } from '../apiserver/types'; +import { TemplateDashboardModal } from '../dashboard/dashgrid/DashboardLibrary/TemplateDashboardModal'; import { buildNavModel, getDashboardsTabID } from '../folders/state/navModel'; import { ProvisionedFolderPreviewBanner } from '../provisioning/components/Folders/ProvisionedFolderPreviewBanner'; import { useGetResourceRepositoryView } from '../provisioning/hooks/useGetResourceRepositoryView'; @@ -217,6 +218,7 @@ const BrowseDashboardsPage = memo(({ queryParams }: { queryParams: Record + {config.featureToggles.dashboardTemplates && } ); diff --git a/public/app/features/browse-dashboards/components/CreateNewButton.tsx b/public/app/features/browse-dashboards/components/CreateNewButton.tsx index c71b67a911f..c263b110e56 100644 --- a/public/app/features/browse-dashboards/components/CreateNewButton.tsx +++ b/public/app/features/browse-dashboards/components/CreateNewButton.tsx @@ -2,10 +2,15 @@ import { useState } from 'react'; import { useLocation } from 'react-router-dom-v5-compat'; import { locationUtil } from '@grafana/data'; -import { config, locationService, reportInteraction } from '@grafana/runtime'; +import { config, getDataSourceSrv, locationService, reportInteraction } from '@grafana/runtime'; import { Button, Drawer, Dropdown, Icon, Menu, MenuItem } from '@grafana/ui'; import { useCreateFolder } from 'app/api/clients/folder/v1beta1/hooks'; import { useAppNotification } from 'app/core/copy/appNotification'; +import { + CONTENT_KINDS, + DashboardLibraryInteractions, + SOURCE_ENTRY_POINTS, +} from 'app/features/dashboard/dashgrid/DashboardLibrary/interactions'; import { RepoType } from 'app/features/provisioning/Wizard/types'; import { NewProvisionedFolderForm } from 'app/features/provisioning/components/Folders/NewProvisionedFolderForm'; import { useIsProvisionedInstance } from 'app/features/provisioning/hooks/useIsProvisionedInstance'; @@ -15,6 +20,7 @@ import { getNewDashboardPhrase, getNewFolderPhrase, getNewPhrase, + getNewTemplateDashboardPhrase, } from 'app/features/search/tempI18nPhrases'; import { FolderDTO } from 'app/types/folders'; @@ -44,6 +50,12 @@ export default function CreateNewButton({ const notifyApp = useAppNotification(); const isProvisionedInstance = useIsProvisionedInstance(); + let renderPreBuiltDashboardAction = false; + if (config.featureToggles.dashboardTemplates) { + const testDataSources = getDataSourceSrv().getList({ type: 'grafana-testdata-datasource' }); + renderPreBuiltDashboardAction = testDataSources.length > 0; + } + const onCreateFolder = async (folderName: string) => { try { const folder = await newFolder({ @@ -74,16 +86,30 @@ export default function CreateNewButton({ const newMenu = ( {canCreateDashboard && ( - - reportInteraction('grafana_menu_item_clicked', { - url: buildUrl('/dashboard/new', parentFolder?.uid), - from: location.pathname, - }) - } - url={buildUrl('/dashboard/new', parentFolder?.uid)} - /> + <> + + reportInteraction('grafana_menu_item_clicked', { + url: buildUrl('/dashboard/new', parentFolder?.uid), + from: location.pathname, + }) + } + url={buildUrl('/dashboard/new', parentFolder?.uid)} + /> + {renderPreBuiltDashboardAction && ( + + DashboardLibraryInteractions.entryPointClicked({ + entryPoint: SOURCE_ENTRY_POINTS.BROWSE_DASHBOARDS_PAGE, + contentKind: CONTENT_KINDS.TEMPLATE_DASHBOARD, + }) + } + url={buildUrl('/dashboards?templateDashboards=true&source=createNewButton', parentFolder?.uid)} + /> + )} + )} {canCreateFolder && setShowNewFolderDrawer(true)} label={getNewFolderPhrase()} />} {canCreateDashboard && !isProvisionedInstance && parentFolder?.managedBy !== ManagerKind.Repo && ( diff --git a/public/app/features/commandPalette/actions/staticActions.ts b/public/app/features/commandPalette/actions/staticActions.ts index 597e749a6cc..e76938b8c6f 100644 --- a/public/app/features/commandPalette/actions/staticActions.ts +++ b/public/app/features/commandPalette/actions/staticActions.ts @@ -2,6 +2,7 @@ import { useMemo } from 'react'; import { NavModelItem } from '@grafana/data'; import { t } from '@grafana/i18n'; +import { getDataSourceSrv, config, locationService } from '@grafana/runtime'; import { getEnrichedHelpItem } from 'app/core/components/AppChrome/MegaMenu/utils'; import { shouldRenderInviteUserButton, @@ -9,6 +10,11 @@ import { } from 'app/core/components/AppChrome/TopBar/InviteUserButtonUtils'; import { changeTheme } from 'app/core/services/theme'; import { currentMockApiState, toggleMockApiAndReload, togglePseudoLocale } from 'app/dev-utils'; +import { + CONTENT_KINDS, + DashboardLibraryInteractions, + SOURCE_ENTRY_POINTS, +} from 'app/features/dashboard/dashgrid/DashboardLibrary/interactions'; import { useSelector } from 'app/types/store'; import { CommandPaletteAction } from '../types'; @@ -140,7 +146,31 @@ function getGlobalActions(): CommandPaletteAction[] { export function useStaticActions(): CommandPaletteAction[] { const navBarTree = useSelector((state) => state.navBarTree); return useMemo(() => { - const navBarActions = navTreeToActions(navBarTree); + let navBarActions = navTreeToActions(navBarTree); + + if (config.featureToggles.dashboardTemplates) { + const testDataSources = getDataSourceSrv().getList({ type: 'grafana-testdata-datasource' }); + if (testDataSources.length > 0) { + const navBarActionsWithoutActions = navBarActions.filter((action) => action.priority !== ACTIONS_PRIORITY); + const navBarActionsWithActions = navBarActions.filter((action) => action.priority === ACTIONS_PRIORITY); + + navBarActionsWithActions.splice(1, 0, { + id: 'browse-template-dashboard', + name: t('command-palette.action.dashboard-from-template', 'Dashboard from template'), + section: t('command-palette.section.actions', 'Actions'), + priority: ACTIONS_PRIORITY, + perform: () => { + DashboardLibraryInteractions.entryPointClicked({ + entryPoint: SOURCE_ENTRY_POINTS.COMMAND_PALETTE, + contentKind: CONTENT_KINDS.TEMPLATE_DASHBOARD, + }); + locationService.push('/dashboards?templateDashboards=true&source=commandPalette'); + }, + }); + + navBarActions = [...navBarActionsWithoutActions, ...navBarActionsWithActions]; + } + } if (shouldRenderInviteUserButton()) { navBarActions.push({ diff --git a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts index e7c854fc815..be05bb63c66 100644 --- a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts +++ b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts @@ -4,8 +4,8 @@ import { config, getBackendSrv, getDataSourceSrv, isFetchError, locationService import { sceneGraph } from '@grafana/scenes'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2'; import { GetRepositoryFilesWithPathApiResponse, provisioningAPIv0alpha1 } from 'app/api/clients/provisioning/v0alpha1'; +import { contextSrv } from 'app/core/core'; import { StateManagerBase } from 'app/core/services/StateManagerBase'; -import { contextSrv } from 'app/core/services/context_srv'; import { getMessageFromError, getMessageIdFromError, getStatusFromError } from 'app/core/utils/errors'; import { startMeasure, stopMeasure } from 'app/core/utils/metrics'; import { @@ -444,7 +444,12 @@ export class DashboardScenePageStateManager extends DashboardScenePageStateManag const scene = transformSaveModelToScene(rsp); // Special handling for Template route - set up edit mode and dirty state - if (config.featureToggles.dashboardLibrary && options.route === DashboardRoutes.Template) { + if ( + (config.featureToggles.dashboardLibrary || + config.featureToggles.suggestedDashboards || + config.featureToggles.dashboardTemplates) && + options.route === DashboardRoutes.Template + ) { scene.setInitialSaveModel(rsp.dashboard, rsp.meta); scene.onEnterEditMode(); scene.setState({ isDirty: true }); @@ -496,14 +501,20 @@ export class DashboardScenePageStateManager extends DashboardScenePageStateManag }; } - private async loadSuggestedDashboard(): Promise { + private async loadDashboardLibrary(): Promise { // Extract template parameters from URL const searchParams = new URLSearchParams(window.location.search); const datasource = searchParams.get('datasource'); const gnetId = searchParams.get('gnetId'); const pluginId = searchParams.get('pluginId'); + const path = searchParams.get('path'); + // Check if this is a template dashboard + if (gnetId && datasource && pluginId) { + return this.loadTemplateDashboard(gnetId, datasource, pluginId); + } + // Check if this is a community dashboard (has gnetId) or plugin dashboard if (gnetId) { return this.loadCommunityTemplateDashboard(gnetId); @@ -537,6 +548,34 @@ export class DashboardScenePageStateManager extends DashboardScenePageStateManag return this.buildDashboardDTOFromInterpolated(interpolatedDashboard); } + private async loadTemplateDashboard( + gnetId: string, + datasource: string | null, + pluginId: string | null + ): Promise { + // Fetch the community dashboard from grafana.com + const gnetDashboard = await getBackendSrv().get(`/api/gnet/dashboards/${gnetId}`); + + // The dashboard JSON is in the 'json' property + const dashboardJson = gnetDashboard.json; + + const data = { + dashboard: dashboardJson, + overwrite: true, + inputs: [ + { + name: '*', + type: 'datasource', + pluginId: pluginId, + value: datasource, + }, + ], + }; + + const interpolatedDashboard = await getBackendSrv().post('/api/dashboards/interpolate', data); + return this.buildDashboardDTOFromInterpolated(interpolatedDashboard); + } + private async loadCommunityTemplateDashboard(gnetId: string): Promise { // Extract mappings from URL params const location = locationService.getLocation(); @@ -605,7 +644,7 @@ export class DashboardScenePageStateManager extends DashboardScenePageStateManag rsp = await buildNewDashboardSaveModel(urlFolderUid); break; case DashboardRoutes.Template: - rsp = await this.loadSuggestedDashboard(); + rsp = await this.loadDashboardLibrary(); break; case DashboardRoutes.Provisioning: return this.loadProvisioningDashboard(slug || '', uid); diff --git a/public/app/features/dashboard-scene/utils/tracking.ts b/public/app/features/dashboard-scene/utils/tracking.ts index 0be4cdd05ed..20b2123fc8c 100644 --- a/public/app/features/dashboard-scene/utils/tracking.ts +++ b/public/app/features/dashboard-scene/utils/tracking.ts @@ -1,6 +1,6 @@ import { store } from '@grafana/data'; import { config } from '@grafana/runtime'; -import { extractDatasourceTypesFromUrl } from 'app/features/dashboard/dashgrid/DashboardLibrary/utils/communityDashboardHelpers'; +import { getDatasourceTypes } from 'app/features/dashboard/dashgrid/DashboardLibrary/utils/dashboardLibraryHelpers'; import { DashboardScene } from '../scene/DashboardScene'; import { EditableDashboardElementInfo } from '../scene/types/EditableDashboardElement'; @@ -61,18 +61,21 @@ export function trackDashboardSceneCreatedOrSaved( const libraryItemId = urlParams.get('libraryItemId') || urlParams.get('gnetId') || undefined; const creationOrigin = urlParams.get('creationOrigin') || undefined; - // Extract datasourceTypes from URL params (supports both community and provisioned dashboards) - const datasourceTypes = extractDatasourceTypesFromUrl(); + // Extract datasourceTypes from URL params (supports both community and provisioned dashboards) or dashboard panels + const datasourceTypes = getDatasourceTypes(dashboard); const dynamicDashboardsTrackingInformation = dashboard.getDynamicDashboardsTrackingInformation(); - const dashboardLibraryProperties = config.featureToggles.dashboardLibrary - ? { - datasourceTypes, - sourceEntryPoint, - libraryItemId, - creationOrigin, - } - : {}; + const dashboardLibraryProperties = + config.featureToggles.dashboardLibrary || + config.featureToggles.dashboardTemplates || + config.featureToggles.suggestedDashboards + ? { + datasourceTypes, + sourceEntryPoint, + libraryItemId, + creationOrigin, + } + : {}; DashboardInteractions.dashboardCreatedOrSaved(isNew, { ...initialProperties, diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/CommunityDashboardSection.tsx b/public/app/features/dashboard/dashgrid/DashboardLibrary/CommunityDashboardSection.tsx index 2c70c354fbe..d914a31f1bc 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/CommunityDashboardSection.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/CommunityDashboardSection.tsx @@ -94,13 +94,13 @@ export const CommunityDashboardSection = ({ onShowMapping, datasourceType }: Pro datasourceTypes: [ds.type], sourceEntryPoint: SOURCE_ENTRY_POINTS.DATASOURCE_PAGE, eventLocation: EVENT_LOCATIONS.MODAL_COMMUNITY_TAB, - hasResults: apiResponse.dashboards.length > 0, - resultCount: apiResponse.dashboards.length, + hasResults: apiResponse.items.length > 0, + resultCount: apiResponse.items.length, }); } return { - dashboards: apiResponse.dashboards, + dashboards: apiResponse.items, pages: apiResponse.pages, datasourceType: ds.type, }; @@ -160,7 +160,6 @@ export const CommunityDashboardSection = ({ onShowMapping, datasourceType }: Pro return ( onPreviewCommunityDashboard(dashboard)} isLogo={isLogo} details={details} - buttonText={Use dashboard} + kind="suggested_dashboard" /> ); })} @@ -291,9 +290,5 @@ function getStyles(theme: GrafanaTheme2) { justifyContent: 'flex-end', zIndex: 2, }), - searchInput: css({ - paddingLeft: theme.spacing(2), - paddingRight: theme.spacing(2), - }), }; } diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardCard.tsx b/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardCard.tsx index 8d038e0e5c3..0f308b0a4ad 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardCard.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardCard.tsx @@ -27,7 +27,7 @@ interface Props { isLogo?: boolean; // Indicates if imageUrl is a small logo vs full screenshot showDatasourceProvidedBadge?: boolean; dimThumbnail?: boolean; // Apply 50% opacity to thumbnail when badge is shown - buttonText?: React.ReactNode; // Optional custom button text, defaults to "Use template" + kind: 'template_dashboard' | 'suggested_dashboard'; } function DashboardCardComponent({ @@ -39,7 +39,7 @@ function DashboardCardComponent({ isLogo, showDatasourceProvidedBadge, dimThumbnail, - buttonText, + kind, }: Props) { const styles = useStyles2(getStyles); @@ -53,7 +53,8 @@ function DashboardCardComponent({ alt={title} className={cx( isLogo ? styles.logo : styles.thumbnail, - dimThumbnail && showDatasourceProvidedBadge && styles.dimmedImage + dimThumbnail && showDatasourceProvidedBadge && styles.dimmedImage, + kind === 'suggested_dashboard' ? styles.thumbnailCoverImage : styles.thumbnailContainImage )} onError={(e) => { console.error('Failed to load image for:', title, 'URL:', imageUrl); @@ -81,7 +82,11 @@ function DashboardCardComponent({ {details && ( } placement="right"> @@ -155,6 +160,8 @@ function getStyles(theme: GrafanaTheme2) { width: '350px', background: 'transparent', gridGap: theme.spacing(1), + paddingLeft: 0, + paddingRight: 0, }), thumbnailContainer: css({ gridArea: 'Thumbnail', @@ -175,8 +182,13 @@ function getStyles(theme: GrafanaTheme2) { thumbnail: css({ width: '100%', height: '100%', + }), + thumbnailCoverImage: css({ objectFit: 'cover', }), + thumbnailContainImage: css({ + objectFit: 'contain', + }), logoContainer: css({ gridArea: 'Thumbnail', overflow: 'hidden', @@ -215,12 +227,11 @@ function getStyles(theme: GrafanaTheme2) { }), description: css({ display: '-webkit-box', - WebkitLineClamp: 1, + WebkitLineClamp: 2, WebkitBoxOrient: 'vertical', overflow: 'hidden', textOverflow: 'ellipsis', margin: 0, - height: `calc(${theme.typography.body.lineHeight} * 1em)`, // Fixed height for 1 line }), actionsContainer: css({ marginTop: 0, diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardLibrarySection.tsx b/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardLibrarySection.tsx index a672d3eb04f..fefd0f872b2 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardLibrarySection.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/DashboardLibrarySection.tsx @@ -157,7 +157,7 @@ export const DashboardLibrarySection = () => { imageUrl={imageUrl} dashboard={dashboard} onClick={() => onUseProvisionedDashboard(dashboard)} - buttonText={Use dashboard} + kind="suggested_dashboard" /> ); }) || []} diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/SuggestedDashboards.tsx b/public/app/features/dashboard/dashgrid/DashboardLibrary/SuggestedDashboards.tsx index 8e0389525b0..d0384e9746d 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/SuggestedDashboards.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/SuggestedDashboards.tsx @@ -98,7 +98,7 @@ export const SuggestedDashboards = ({ datasourceUid }: Props) => { }), ]); - const community = communityResponse.dashboards; + const community = communityResponse.items; // Mix: 1 provisioned + 2 community const mixed: MixedDashboard[] = []; @@ -319,7 +319,7 @@ export const SuggestedDashboards = ({ datasourceUid }: Props) => { onClick={() => onUseProvisionedDashboard(item.dashboard)} showDatasourceProvidedBadge={true} dimThumbnail={true} - buttonText={Use dashboard} + kind="suggested_dashboard" /> ); } else { @@ -337,7 +337,7 @@ export const SuggestedDashboards = ({ datasourceUid }: Props) => { onClick={() => onPreviewCommunityDashboard(item.dashboard)} isLogo={isLogo} details={details} - buttonText={Use dashboard} + kind="suggested_dashboard" /> ); } diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/TemplateDashboardModal.tsx b/public/app/features/dashboard/dashgrid/DashboardLibrary/TemplateDashboardModal.tsx new file mode 100644 index 00000000000..57dbeafceea --- /dev/null +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/TemplateDashboardModal.tsx @@ -0,0 +1,176 @@ +import { css } from '@emotion/css'; +import { useEffect } from 'react'; +import { useSearchParams } from 'react-router-dom-v5-compat'; +import { useAsync } from 'react-use'; + +import { GrafanaTheme2 } from '@grafana/data'; +import { t, Trans } from '@grafana/i18n'; +import { getBackendSrv, getDataSourceSrv, locationService } from '@grafana/runtime'; +import { Box, Grid, Modal, Text, useStyles2 } from '@grafana/ui'; + +import { DASHBOARD_LIBRARY_ROUTES } from '../types'; + +import { DashboardCard } from './DashboardCard'; +import { + CONTENT_KINDS, + CREATION_ORIGINS, + DashboardLibraryInteractions, + DISCOVERY_METHODS, + EVENT_LOCATIONS, + SourceEntryPoint, + TemplateDashboardSourceEntryPoint, +} from './interactions'; +import { GnetDashboard, GnetDashboardsResponse, Link } from './types'; + +const SourceEntryPointMap: Record = { + quickAdd: TemplateDashboardSourceEntryPoint.QUICK_ADD_BUTTON, + commandPalette: TemplateDashboardSourceEntryPoint.COMMAND_PALETTE, + createNewButton: TemplateDashboardSourceEntryPoint.BROWSE_DASHBOARDS_PAGE, +}; + +export const TemplateDashboardModal = () => { + const [searchParams, setSearchParams] = useSearchParams(); + const isOpen = searchParams.get('templateDashboards') === 'true'; + const entryPoint = searchParams.get('source') || ''; + + const testDataSource = getDataSourceSrv().getList({ type: 'grafana-testdata-datasource' })[0]; + + const styles = useStyles2(getStyles); + + const onClose = () => { + searchParams.delete('templateDashboards'); + setSearchParams(searchParams); + }; + + const onPreviewDashboardClick = async (dashboard: GnetDashboard) => { + const sourceEntryPoint = SourceEntryPointMap[entryPoint] || 'unknown'; + DashboardLibraryInteractions.itemClicked({ + contentKind: CONTENT_KINDS.TEMPLATE_DASHBOARD, + datasourceTypes: [String(testDataSource?.type)], + libraryItemId: String(dashboard.id), + libraryItemTitle: dashboard.name, + sourceEntryPoint, + eventLocation: EVENT_LOCATIONS.BROWSE_DASHBOARDS_PAGE, + discoveryMethod: DISCOVERY_METHODS.BROWSE, + }); + + const params = new URLSearchParams({ + datasource: testDataSource?.uid || '', + title: dashboard.name, + pluginId: String(testDataSource?.type) || '', + gnetId: String(dashboard.id), + // tracking event purpose values + sourceEntryPoint, + libraryItemId: String(dashboard.id), + creationOrigin: CREATION_ORIGINS.DASHBOARD_LIBRARY_TEMPLATE_DASHBOARD, + contentKind: CONTENT_KINDS.TEMPLATE_DASHBOARD, + }); + + const templateUrl = `${DASHBOARD_LIBRARY_ROUTES.Template}?${params.toString()}`; + locationService.push(templateUrl); + }; + + const { value: dashboards = [], loading } = useAsync(async () => { + if (!isOpen) { + return []; + } + + try { + const response = await getBackendSrv().get( + `/api/gnet/dashboards?orgSlug=raintank&categorySlug=templates&includeScreenshots=true`, + undefined, + undefined, + { + showErrorAlert: false, + } + ); + + return response.items; + } catch (error) { + console.error('Error loading template dashboards ', error); + return []; + } + }, [isOpen]); + + useEffect(() => { + if (isOpen && !loading && dashboards.length > 0) { + DashboardLibraryInteractions.loaded({ + numberOfItems: dashboards.length, + contentKinds: [CONTENT_KINDS.TEMPLATE_DASHBOARD], + datasourceTypes: [String(testDataSource?.type)], + sourceEntryPoint: SourceEntryPointMap[entryPoint] || 'unknown', + eventLocation: EVENT_LOCATIONS.BROWSE_DASHBOARDS_PAGE, + }); + } + }, [isOpen, dashboards, entryPoint, testDataSource?.type, loading]); + + if (!testDataSource || (dashboards.length === 0 && !loading)) { + return null; + } + + return ( + +
+ + + Get started with Grafana templates using sample data. Connect your data to power them with real metrics. + + +
+ + + {loading + ? Array.from({ length: 4 }).map((_, index) => ) + : dashboards?.map((dashboard) => { + const thumbnail = dashboard.screenshots?.[0]?.links.find((l: Link) => l.rel === 'image')?.href ?? ''; + const thumbnailUrl = thumbnail ? `/api/gnet${thumbnail}` : ''; + + return ( + onPreviewDashboardClick(dashboard)} + dashboard={dashboard} + kind="template_dashboard" + /> + ); + })} + + +
+ ); +}; + +function getStyles(theme: GrafanaTheme2) { + return { + modal: css({ + width: '1200px', + }), + stickyHeader: css({ + position: 'sticky', + top: 0, + zIndex: 2, + backgroundColor: theme.colors.background.primary, + paddingTop: theme.spacing(1), + paddingBottom: theme.spacing(2), + }), + modalContent: css({ + paddingTop: 0, + height: '100%', + }), + }; +} diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/api/dashboardLibraryApi.ts b/public/app/features/dashboard/dashgrid/DashboardLibrary/api/dashboardLibraryApi.ts index b97568a8ab9..6f3a4045368 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/api/dashboardLibraryApi.ts +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/api/dashboardLibraryApi.ts @@ -71,11 +71,11 @@ export async function fetchCommunityDashboards( // Grafana.com API returns format: { page: number, pages: number, items: GnetDashboard[] } // We normalize it to use "dashboards" instead of "items" for consistency - if (result && Array.isArray(result.items)) { + if (result) { return { page: result.page || params.page, pages: result.pages || 1, - dashboards: result.items, + items: result.items, }; } @@ -84,7 +84,7 @@ export async function fetchCommunityDashboards( return { page: params.page, pages: 1, - dashboards: [], + items: [], }; } diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/interactions.ts b/public/app/features/dashboard/dashgrid/DashboardLibrary/interactions.ts index 714e53145e9..804ef885d61 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/interactions.ts +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/interactions.ts @@ -7,16 +7,25 @@ export const EVENT_LOCATIONS = { EMPTY_DASHBOARD: 'empty_dashboard', MODAL_PROVISIONED_TAB: 'suggested_dashboards_modal_provisioned_tab', MODAL_COMMUNITY_TAB: 'suggested_dashboards_modal_community_tab', + BROWSE_DASHBOARDS_PAGE: 'browse_dashboards_page', } as const; export const CONTENT_KINDS = { DATASOURCE_DASHBOARD: 'datasource_dashboard', COMMUNITY_DASHBOARD: 'community_dashboard', + TEMPLATE_DASHBOARD: 'template_dashboard', // in future this could also include "TEMPLATE_DASHBOARD" if/when items become templates } as const; +export const TemplateDashboardSourceEntryPoint = { + QUICK_ADD_BUTTON: 'quick_add_button', + COMMAND_PALETTE: 'command_palette', + BROWSE_DASHBOARDS_PAGE: 'browse_dashboards_page_create_new_button', +} as const; + export const SOURCE_ENTRY_POINTS = { DATASOURCE_PAGE: 'datasource_page', + ...TemplateDashboardSourceEntryPoint, // possible future flows: CREATE_DASHBOARD, EMPTY_STATE } as const; @@ -28,6 +37,7 @@ export const DISCOVERY_METHODS = { export const CREATION_ORIGINS = { DASHBOARD_LIBRARY_DATASOURCE_DASHBOARD: 'dashboard_library_datasource_dashboard', DASHBOARD_LIBRARY_COMMUNITY_DASHBOARD: 'dashboard_library_community_dashboard', + DASHBOARD_LIBRARY_TEMPLATE_DASHBOARD: 'dashboard_library_template_dashboard', } as const; // Derive types from constant maps for single source of truth @@ -91,6 +101,9 @@ export const DashboardLibraryInteractions = { }) => { reportDashboardLibraryInteraction('mapping_form_completed', properties); }, + entryPointClicked: (properties: { entryPoint: SourceEntryPoint; contentKind: ContentKind }) => { + reportDashboardLibraryInteraction('entry_point_clicked', properties); + }, }; const reportDashboardLibraryInteraction = (name: string, properties?: Record) => { diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/types.ts b/public/app/features/dashboard/dashgrid/DashboardLibrary/types.ts index 38267a4870f..784e4f2d924 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/types.ts +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/types.ts @@ -22,7 +22,6 @@ export interface Logo { export interface GnetDashboard { id: number; - uid: string; name: string; description: string; downloads: number; @@ -44,5 +43,5 @@ export interface GnetDashboard { export interface GnetDashboardsResponse { page: number; pages: number; - dashboards: GnetDashboard[]; + items: GnetDashboard[]; } diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/communityDashboardHelpers.ts b/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/communityDashboardHelpers.ts index fed08c7ae73..44c579d27b5 100644 --- a/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/communityDashboardHelpers.ts +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/communityDashboardHelpers.ts @@ -9,34 +9,6 @@ import { GnetDashboard, Link } from '../types'; import { InputMapping, tryAutoMapDatasources, parseConstantInputs, isDataSourceInput } from './autoMapDatasources'; -/** - * Extract datasource types from URL parameters for tracking purposes. - * Supports two formats: - * - datasourceTypes: JSON array of datasource types (for community dashboards) - * - pluginId: Single datasource type (legacy format for provisioned dashboards) - * - * @returns Array of datasource type strings, or undefined if not available - */ -export function extractDatasourceTypesFromUrl(): string[] | undefined { - const params = locationService.getSearchObject(); - const datasourceTypesParam = params.datasourceTypes; - const pluginIdParam = params.pluginId; - - if (datasourceTypesParam && typeof datasourceTypesParam === 'string') { - try { - return JSON.parse(datasourceTypesParam); - } catch { - // If parsing fails, return undefined - return undefined; - } - } else if (pluginIdParam && typeof pluginIdParam === 'string') { - // Fallback to legacy pluginId for provisioned dashboards - return [pluginIdParam]; - } - - return undefined; -} - /** * Extract thumbnail URL from dashboard screenshots */ diff --git a/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/dashboardLibraryHelpers.ts b/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/dashboardLibraryHelpers.ts new file mode 100644 index 00000000000..c94cf4ee5b2 --- /dev/null +++ b/public/app/features/dashboard/dashgrid/DashboardLibrary/utils/dashboardLibraryHelpers.ts @@ -0,0 +1,71 @@ +import { locationService } from '@grafana/runtime'; +import { VizPanel } from '@grafana/scenes'; +import { DashboardScene } from 'app/features/dashboard-scene/scene/DashboardScene'; +import { getQueryRunnerFor } from 'app/features/dashboard-scene/utils/utils'; + +import { CONTENT_KINDS } from '../interactions'; + +function getPanelDatasourceTypes(scene: DashboardScene): string[] { + const types = new Set(); + + const panels = scene.state.body.getVizPanels(); + + for (const child of panels) { + const ts = panelDatasourceTypes(child); + for (const t of ts) { + types.add(t); + } + } + + return Array.from(types).sort(); +} + +function panelDatasourceTypes(vizPanel: VizPanel) { + const types = new Set(); + + const queryRunner = getQueryRunnerFor(vizPanel); + if (queryRunner) { + for (const q of queryRunner.state.queries) { + types.add(q.datasource?.type ?? ''); + } + } + + return Array.from(types); +} + +/** + * Extract datasource types from URL parameters or dashboard panels based on the content kind. + * Supports two formats: + * - datasourceTypes: JSON array of datasource types (for community dashboards) + * - pluginId: Single datasource type (legacy format for provisioned dashboards) + * + * @returns Array of datasource type strings, or undefined if not available + */ +export function getDatasourceTypes(dashboard: DashboardScene): string[] | undefined { + const params = locationService.getSearchObject(); + const datasourceTypesParam = params.datasourceTypes; + const pluginIdParam = params.pluginId; + const contentKind = params.contentKind; + + switch (contentKind) { + case CONTENT_KINDS.COMMUNITY_DASHBOARD: { + if (datasourceTypesParam && typeof datasourceTypesParam === 'string') { + try { + return JSON.parse(datasourceTypesParam); + } catch { + // If parsing fails, return undefined + return undefined; + } + } + return undefined; + } + case CONTENT_KINDS.DATASOURCE_DASHBOARD: + return pluginIdParam && typeof pluginIdParam === 'string' ? [pluginIdParam] : undefined; + case CONTENT_KINDS.TEMPLATE_DASHBOARD: { + const datasourceTypes = getPanelDatasourceTypes(dashboard); + return datasourceTypes.length > 0 ? datasourceTypes : undefined; + } + default: + return undefined; + } +} diff --git a/public/app/features/search/tempI18nPhrases.ts b/public/app/features/search/tempI18nPhrases.ts index 0c3206d0a50..73766e4bff6 100644 --- a/public/app/features/search/tempI18nPhrases.ts +++ b/public/app/features/search/tempI18nPhrases.ts @@ -2,6 +2,7 @@ // TODO: remove this when new Browse Dashboards UI is no longer feature flagged import { t } from '@grafana/i18n'; +import { config } from '@grafana/runtime'; export function getSearchPlaceholder(includePanels = false) { return includePanels @@ -10,7 +11,13 @@ export function getSearchPlaceholder(includePanels = false) { } export function getNewDashboardPhrase() { - return t('search.dashboard-actions.new-dashboard', 'New dashboard'); + return config.featureToggles.dashboardTemplates + ? t('search.dashboard-actions.empty-dashboard', 'Empty dashboard') + : t('search.dashboard-actions.new-dashboard', 'New dashboard'); +} + +export function getNewTemplateDashboardPhrase() { + return t('search.dashboard-actions.new-template-dashboard', 'Dashboard from template'); } export function getNewFolderPhrase() { diff --git a/public/locales/en-US/grafana.json b/public/locales/en-US/grafana.json index 27e47141aad..6db79433e88 100644 --- a/public/locales/en-US/grafana.json +++ b/public/locales/en-US/grafana.json @@ -4132,6 +4132,7 @@ "action": { "change-theme": "Change theme", "dark-theme": "Dark", + "dashboard-from-template": "Dashboard from template", "light-theme": "Light", "scopes": "Scopes" }, @@ -5718,6 +5719,10 @@ "suggested-dashboards-subtitle": "Browse and select from data-source provided or community dashboards", "suggested-dashboards-title": "Build a dashboard using suggested options for your selected data source", "suggested-dashboards-title-with-datasource": "Build a dashboard using suggested options for your {{datasourceType}} data source", + "template-dashboard-modal": { + "description": "Get started with Grafana templates using sample data. Connect your data to power them with real metrics.", + "title": "Start a dashboard from a template" + }, "view-all": "View all" }, "dashboard-links": { @@ -10528,6 +10533,7 @@ "title": "New" }, "new-dashboard": { + "empty-title": "Empty dashboard", "title": "New dashboard" }, "new-folder": { @@ -10693,7 +10699,8 @@ "aria-label": "Profile" }, "quick-add": { - "aria-label": "New" + "aria-label": "New", + "new-template-dashboard-button": "Dashboard from template" }, "rss-button": "Latest from the blog" }, @@ -12427,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "Empty dashboard", "import": "Import", "new": "New", "new-dashboard": "New dashboard", - "new-folder": "New folder" + "new-folder": "New folder", + "new-template-dashboard": "Dashboard from template" }, "generate-columns": { "score": "Score" From af7f11066430a8731004281b21f2cf9763491396 Mon Sep 17 00:00:00 2001 From: Ezequiel Victorero Date: Fri, 14 Nov 2025 15:29:50 -0300 Subject: [PATCH 07/26] ShortURL: Support memoize when creating shorturl using k8s api (#113952) --- public/app/core/utils/shortLinks.test.ts | 13 ++++++++++--- public/app/core/utils/shortLinks.ts | 12 ++++++------ 2 files changed, 16 insertions(+), 9 deletions(-) diff --git a/public/app/core/utils/shortLinks.test.ts b/public/app/core/utils/shortLinks.test.ts index c6732d6f4f1..39a43af6629 100644 --- a/public/app/core/utils/shortLinks.test.ts +++ b/public/app/core/utils/shortLinks.test.ts @@ -13,7 +13,7 @@ jest.mock('@grafana/runtime', () => ({ getBackendSrv: () => { return { post: () => { - return Promise.resolve({ url: 'www.test.grafana.com/goto/bewyw48durgu8d?orgId=1' }); + return Promise.resolve({ url: 'https://www.test.grafana.com/goto/bewyw48durgu8d?orgId=1' }); }, }; }, @@ -44,6 +44,11 @@ beforeEach(() => { document.execCommand = jest.fn(); config.featureToggles.useKubernetesShortURLsAPI = false; + // clear memoizeOne function + if ('clear' in createShortLink) { + (createShortLink as { clear: () => void }).clear(); + } + // Clear any caches between tests jest.clearAllMocks(); }); @@ -51,7 +56,7 @@ beforeEach(() => { describe('createShortLink', () => { it('creates short link', async () => { const shortUrl = await createShortLink('d/edhmipji89b0gb/welcome?orgId=1&from=now-6h&to=now&timezone=browser'); - expect(shortUrl).toBe('www.test.grafana.com/goto/bewyw48durgu8d?orgId=1'); + expect(shortUrl).toBe('https://www.test.grafana.com/goto/bewyw48durgu8d?orgId=1'); }); }); @@ -88,7 +93,9 @@ describe('createAndCopyShortLink', () => { it('copies short link to clipboard via navigator.clipboard.writeText when ClipboardItem is undefined', async () => { window.isSecureContext = true; await createAndCopyShortLink('d/edhmipji89b0gb/welcome?orgId=1&from=now-6h&to=now&timezone=browser'); - expect(navigator.clipboard.writeText).toHaveBeenCalledWith('www.test.grafana.com/goto/bewyw48durgu8d?orgId=1'); + expect(navigator.clipboard.writeText).toHaveBeenCalledWith( + 'https://www.test.grafana.com/goto/bewyw48durgu8d?orgId=1' + ); }); it('copies short link to clipboard via navigator.clipboard.write and ClipboardItem when it is defined', async () => { diff --git a/public/app/core/utils/shortLinks.ts b/public/app/core/utils/shortLinks.ts index 536911f9942..706857c122c 100644 --- a/public/app/core/utils/shortLinks.ts +++ b/public/app/core/utils/shortLinks.ts @@ -33,15 +33,16 @@ function getRelativeURLPath(url: string) { return path.startsWith('/') ? path.substring(1, path.length) : path; } -// Memoized legacy API call - preserves original behavior -const createShortLinkLegacy = memoizeOne(async (path: string): Promise => { +const createShortLinkLegacy = async (path: string): Promise => { const shortLink = await getBackendSrv().post(`/api/short-urls`, { path: getRelativeURLPath(path), }); return shortLink.url; -}); +}; -export const createShortLink = async function (path: string) { +// Memoized API call, to not re-execute the same request multiple times +// this function creates a shortURL using the legacy or the new k8s api depending on the feature toggle +export const createShortLink = memoizeOne(async (path: string): Promise => { try { if (config.featureToggles.useKubernetesShortURLsAPI) { // Use RTK API - it handles caching/failures/retries automatically @@ -69,7 +70,6 @@ export const createShortLink = async function (path: string) { throw new Error('Failed to create short URL'); } else { - // Old API - use memoized function (preserves original behavior) return await createShortLinkLegacy(path); } } catch (err) { @@ -77,7 +77,7 @@ export const createShortLink = async function (path: string) { dispatch(notifyApp(createErrorNotification('Error generating shortened link'))); throw err; // Re-throw so callers know it failed } -}; +}); /** * Creates a ClipboardItem for the shortened link. This is used due to clipboard issues in Safari after making async calls. From 1f1c75f81708ac669deac09d7715a56d27467fbc Mon Sep 17 00:00:00 2001 From: Dave Henderson Date: Fri, 14 Nov 2025 16:54:48 -0500 Subject: [PATCH 08/26] Revert "OFREP: add ST builder for the authorizer, APIEnabled=false needs it" (#113983) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Revert "OFREP: add ST builder for the authorizer, APIEnabled=false needs it (…" This reverts commit 9ca6ad3b493dc6f64aedf69e7740736cc4e25c31. --- pkg/registry/apis/ofrep/register.go | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pkg/registry/apis/ofrep/register.go b/pkg/registry/apis/ofrep/register.go index d6a443cfee7..cd6f8f0eb29 100644 --- a/pkg/registry/apis/ofrep/register.go +++ b/pkg/registry/apis/ofrep/register.go @@ -64,6 +64,10 @@ func NewAPIBuilder(providerType string, url *url.URL, insecure bool, caFile stri } func RegisterAPIService(apiregistration builder.APIRegistrar, cfg *setting.Cfg) (*APIBuilder, error) { + if !cfg.OpenFeature.APIEnabled { + return nil, nil + } + var staticEvaluator featuremgmt.StaticFlagEvaluator // No static evaluator needed for non-static provider var err error if cfg.OpenFeature.ProviderType == setting.StaticProviderType { From f5df0b05efbefc75832149d43719d44b4e8e2f08 Mon Sep 17 00:00:00 2001 From: "grafana-pr-automation[bot]" <140550294+grafana-pr-automation[bot]@users.noreply.github.com> Date: Sun, 16 Nov 2025 00:32:25 +0000 Subject: [PATCH 09/26] I18n: Download translations from Crowdin (#113987) New Crowdin translations by GitHub Action Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- public/locales/cs-CZ/grafana.json | 86 +++++++++++++++++++---------- public/locales/de-DE/grafana.json | 84 +++++++++++++++++++--------- public/locales/es-ES/grafana.json | 84 +++++++++++++++++++--------- public/locales/fr-FR/grafana.json | 84 +++++++++++++++++++--------- public/locales/hu-HU/grafana.json | 84 +++++++++++++++++++--------- public/locales/id-ID/grafana.json | 83 +++++++++++++++++++--------- public/locales/it-IT/grafana.json | 84 +++++++++++++++++++--------- public/locales/ja-JP/grafana.json | 83 +++++++++++++++++++--------- public/locales/ko-KR/grafana.json | 83 +++++++++++++++++++--------- public/locales/nl-NL/grafana.json | 84 +++++++++++++++++++--------- public/locales/pl-PL/grafana.json | 86 +++++++++++++++++++---------- public/locales/pt-BR/grafana.json | 84 +++++++++++++++++++--------- public/locales/pt-PT/grafana.json | 84 +++++++++++++++++++--------- public/locales/ru-RU/grafana.json | 86 +++++++++++++++++++---------- public/locales/sv-SE/grafana.json | 84 +++++++++++++++++++--------- public/locales/tr-TR/grafana.json | 84 +++++++++++++++++++--------- public/locales/zh-Hans/grafana.json | 83 +++++++++++++++++++--------- public/locales/zh-Hant/grafana.json | 83 +++++++++++++++++++--------- 18 files changed, 1044 insertions(+), 469 deletions(-) diff --git a/public/locales/cs-CZ/grafana.json b/public/locales/cs-CZ/grafana.json index c7f7acca5b9..8f293ecbfbf 100644 --- a/public/locales/cs-CZ/grafana.json +++ b/public/locales/cs-CZ/grafana.json @@ -1994,9 +1994,11 @@ }, "notification-preview": { "alertmanager": "Správce výstrah:", + "disabled-tooltip": "", "error": "Nelze načíst náhled směrování pro {{alertmanager}}", "initialized": "Na základě přidaného štítku jsou instance výstrahy přesměrovány do následujících zásad oznamování. Další podrobnosti zobrazíte rozbalením jednotlivých zásad oznamování níže.", "preview-routing": "Zobrazit náhled směrování", + "select-folder-tooltip": "", "text-loading-preview": "Načítání náhledu…", "title": "Náhled výstrahy instance směrování", "uninitialized": "Po výběru složky a konfiguraci dotazu a štítků klikněte na „Náhled směrování“ pro zobrazení výsledků." @@ -2969,6 +2971,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2978,6 +2981,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2985,7 +2989,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Přidat výraz" @@ -4166,6 +4172,7 @@ "action": { "change-theme": "Změnit motiv", "dark-theme": "Tmavý", + "dashboard-from-template": "", "light-theme": "Světlý", "scopes": "Rozsahy" }, @@ -5756,6 +5763,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7089,7 +7100,6 @@ "new-panel": "Nový panel" } }, - "clear": "Vymazat", "confirm-navigation-modal": { "cancel": "Zrušit", "new-tab": "Chcete pokračovat v aktuální záložce nebo otevřít novou záložku?", @@ -7313,7 +7323,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Nejsou dostupné žádné informace o objemu pro aktuální dotazy a časový rozsah." }, - "next": "Další", "next-prev-result": { "aria-label-next": "Tlačítko Další výsledek", "aria-label-prev": "Tlačítko Předchozí výsledek", @@ -7334,7 +7343,6 @@ "pane": { "loading-placeholder": "Načítání…" }, - "prev": "Předch.", "queryless-apps-extensions": { "aria-label-go-queryless": "Vyhnout se dotazům" }, @@ -7487,8 +7495,7 @@ "query-inspector-button": "Inspektor dotazů", "query-inspector-button-aria-label": "Inspektor dotazů" }, - "show-critical-path-only": "Zobrazit pouze kritickou cestu", - "show-matches-only": "Zobrazit pouze shody", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Segment na <1>kritické cestě celkové stopy / požadavku / pracovního postupu." }, @@ -7608,10 +7615,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Otevřít nabídku možností sdílení trasování", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Doba trvání", + "errors": "", + "errors-tooltip": "", "export-started": "Export zahájen", + "filters": "", "give-feedback": "Zpětná vazba", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Odkaz byl zkopírován do schránky", + "overview": "", "path": "Cesta", "route": "Trasa", "services": "Služby", @@ -7626,11 +7641,6 @@ "trace-id": "ID trasování", "url": "Adresa URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Tlačítko Vymazat filtry", - "label-show-matches": "Zobrazit přepínač Pouze shody", - "label-show-paths": "Zobrazit přepínač Pouze kritické cesty" - }, "trace-view": { "aria-label-copy": "Kopírovat do schránky", "no-data": "Žádná data", @@ -10611,6 +10621,7 @@ "title": "Nové" }, "new-dashboard": { + "empty-title": "", "title": "Nová nástěnka" }, "new-folder": { @@ -10776,7 +10787,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Nové" + "aria-label": "Nové", + "new-template-dashboard-button": "" }, "rss-button": "Novinky z blogu" }, @@ -11577,6 +11589,9 @@ "label-display-name": "Zobrazované jméno", "placeholder-my-repository-connection": "Moje připojení k úložišti", "text-loading-resource-information": "Načítání informací o zdroji…", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} nástěnka", "dashboards-count_few": "{{count}} nástěnka", @@ -11631,11 +11646,8 @@ }, "connect-repository-button": { "configure": "Konfigurovat", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_few": "", - "repository-limit-reached-tooltip_many": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Odstranit", @@ -11732,6 +11744,13 @@ "unmanaged-resources_many": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Úložiště" @@ -11870,10 +11889,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Po nastavení bude vytvořena nová složka Grafany a synchronizována s externím úložištěm. Pokud jsou v externím úložišti přítomny nějaké zdroje, budou zajištěny v této nové složce. Všechny nové zdroje vytvořené v této složce budou uloženy a upraveny v externím úložišti.", "label": "Synchronizovat externí úložiště s novou složkou Grafany", - "subtitle": "Tuto možnost použijte k synchronizaci externích zdrojů do nové složky, aniž by to ovlivnilo zbytek vaší instance. Tento proces můžete opakovat až pro 10 složek." + "subtitle": "" }, "instance": { "description": "Zdroje budou synchronizovány s externím úložištěm a zajištěny v této instanci. Stávající zdroje Grafany budou v případě potřeby migrovány a sloučeny. Po nastavení budou všechny nové zdroje a změny uloženy do externího úložiště a automaticky zajištěny zpět do instance.", @@ -12519,10 +12544,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importovat", "new": "Nové", "new-dashboard": "Nová nástěnka", - "new-folder": "Nová složka" + "new-folder": "Nová složka", + "new-template-dashboard": "" }, "generate-columns": { "score": "Skóre" @@ -13502,17 +13529,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtry rozsahu", - "name-critical-path-only": "Zobrazit pouze kritickou cestu", - "name-find-in-trace": "Najít ve stopě", - "name-max-duration": "Max. doba trvání", - "name-min-duration": "Min. doba trvání", - "name-service-name": "Název služby", - "name-service-name-operator": "Operátor názvu služby", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Zobrazit pouze shody", - "name-span-name": "Název rozsahu", - "name-span-name-operator": "Operátor názvu rozsahu", - "name-tags": "Štítky", "traces-panel": { "no-data-found-in-response": "V odpovědi nebyla nalezena žádná data" } diff --git a/public/locales/de-DE/grafana.json b/public/locales/de-DE/grafana.json index e608334f479..b076dd2ea2a 100644 --- a/public/locales/de-DE/grafana.json +++ b/public/locales/de-DE/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "Die Weiterleitungsvorschau für {{alertmanager}} konnte nicht geladen werden", "initialized": "Basierend auf den hinzugefügten Labels werden Warninstanzen an die folgenden Benachrichtigungsrichtlinien weitergeleitet. Erweitern Sie unten die einzelnen Benachrichtigungsrichtlinien, um weitere Details anzuzeigen.", "preview-routing": "Weiterleitungsvorschau", + "select-folder-tooltip": "", "text-loading-preview": "Vorschau wird geladen ...", "title": "Weiterleitungsvorschau der Warninstanzen", "uninitialized": "Wenn Sie Ihren Ordner ausgewählt und Ihre Abfrage und Labels konfiguriert haben, klicken Sie bitte auf „Weiterleitungsvorschau“, um hier die Ergebnisse anzuzeigen." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Ausdruck hinzufügen" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Thema ändern", "dark-theme": "Dunkel", + "dashboard-from-template": "", "light-theme": "Hell", "scopes": "Bereiche" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Neues Panel" } }, - "clear": "Löschen", "confirm-navigation-modal": { "cancel": "Abbrechen", "new-tab": "Möchten Sie im aktuellen Tab fortfahren oder einen neuen Tab öffnen?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Für die aktuellen Abfragen und den aktuellen Zeitbereich sind keine Volumeninformationen verfügbar." }, - "next": "Weiter", "next-prev-result": { "aria-label-next": "Schaltfläche fürs nächste Ergebnis", "aria-label-prev": "Schaltfläche fürs vorherige Ergebnis", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Wird geladen …" }, - "prev": "Zurück", "queryless-apps-extensions": { "aria-label-go-queryless": "Ohne Abfrage fortfahren" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Abfrage-Inspektor", "query-inspector-button-aria-label": "Abfrage-Inspektor" }, - "show-critical-path-only": "Nur kritischen Pfad anzeigen", - "show-matches-only": "Nur Übereinstimmungen anzeigen", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Ein Segment auf dem <1>kritischen Pfad des gesamten Trace/Request/Workflow." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Menü „Trace-Optionen teilen“ öffnen", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Dauer", + "errors": "", + "errors-tooltip": "", "export-started": "Export gestartet", + "filters": "", "give-feedback": "Feedback", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Link in die Zwischenablage kopiert", + "overview": "", "path": "Pfad", "route": "Route", "services": "Dienstleistungen", @@ -7574,11 +7589,6 @@ "trace-id": "Trace-ID", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Schaltfläche „Filter löschen“", - "label-show-matches": "Schalter „Nur Übereinstimmungen anzeigen“", - "label-show-paths": "Schalter „Nur kritischen Pfad anzeigen“" - }, "trace-view": { "aria-label-copy": "In die Zwischenablage kopieren", "no-data": "Keine Daten", @@ -10523,6 +10533,7 @@ "title": "Neu" }, "new-dashboard": { + "empty-title": "", "title": "Neues Dashboard" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Neu" + "aria-label": "Neu", + "new-template-dashboard-button": "" }, "rss-button": "Das Neueste aus dem Blog" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Anzeigename", "placeholder-my-repository-connection": "Meine Repository-Verbindung", "text-loading-resource-information": "Ressourceninformationen werden geladen ...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} Dashboard", "dashboards-count_other": "{{count}} Dashboard", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Konfigurieren", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Löschen", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repository" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Nach der Einrichtung wird ein neuer Grafana-Ordner erstellt und mit dem externen Speicher synchronisiert. Wenn im externen Speicher Ressourcen vorhanden sind, werden sie in diesem neuen Ordner bereitgestellt. Alle in diesem Ordner erstellten neuen Ressourcen werden im externen Speicher gespeichert und versioniert.", "label": "Synchronisieren Sie externen Speicher mit einem neuen Grafana-Ordner", - "subtitle": "Nutzen Sie diese Option, um externe Ressourcen in einem neuen Ordner zu synchronisieren, ohne den Rest Ihrer Instanz zu beeinträchtigen. Sie können diesen Vorgang für bis zu 10 Ordner wiederholen." + "subtitle": "" }, "instance": { "description": "Ressourcen werden mit dem externen Speicher synchronisiert und in dieser Instanz bereitgestellt. Bestehende Grafana-Ressourcen werden migriert und bei Bedarf zusammengeführt. Nach der Einrichtung werden alle neuen Ressourcen und Änderungen im externen Speicher gespeichert und automatisch wieder in der Instanz bereitgestellt.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importieren", "new": "Neu", "new-dashboard": "Neues Dashboard", - "new-folder": "Neuer Ordner" + "new-folder": "Neuer Ordner", + "new-template-dashboard": "" }, "generate-columns": { "score": "Wertung" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Spannenfilter", - "name-critical-path-only": "Nur kritischen Pfad anzeigen", - "name-find-in-trace": "In Trace suchen", - "name-max-duration": "Höchstdauer", - "name-min-duration": "Mindestdauer", - "name-service-name": "Dienstname", - "name-service-name-operator": "Dienstnamen-Operator", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Nur Übereinstimmungen anzeigen", - "name-span-name": "Spannen-Name", - "name-span-name-operator": "Spannen-Namen-Operator", - "name-tags": "Tags", "traces-panel": { "no-data-found-in-response": "Keine Daten in der Antwort gefunden" } diff --git a/public/locales/es-ES/grafana.json b/public/locales/es-ES/grafana.json index 12cd9f0947e..6b46b15d4fc 100644 --- a/public/locales/es-ES/grafana.json +++ b/public/locales/es-ES/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "No se ha podido cargar la vista previa del enrutamiento para {{alertmanager}}", "initialized": "Según las etiquetas añadidas, las instancias de alerta se enrutan a las siguientes políticas de notificación. Amplía cada política de notificación a continuación para ver más detalles.", "preview-routing": "Vista previa del enrutamiento", + "select-folder-tooltip": "", "text-loading-preview": "Cargando vista previa...", "title": "Vista previa del enrutamiento de la instancia de alerta", "uninitialized": "Cuando hayas seleccionado la carpeta y configurado la consulta y las etiquetas, haz clic en «Vista previa del enrutamiento» para ver los resultados aquí." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Añadir expresión" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Cambiar tema", "dark-theme": "Oscuro", + "dashboard-from-template": "", "light-theme": "Claro", "scopes": "Alcances" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Nuevo panel" } }, - "clear": "Borrar", "confirm-navigation-modal": { "cancel": "Cancelar", "new-tab": "¿Quieres continuar en la pestaña actual o abrir una nueva?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "No hay información de volumen disponible para las consultas y el intervalo de tiempo actuales." }, - "next": "Siguiente", "next-prev-result": { "aria-label-next": "Botón de siguiente resultado", "aria-label-prev": "Botón de resultado anterior", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Cargando..." }, - "prev": "Ant.", "queryless-apps-extensions": { "aria-label-go-queryless": "Seguir sin consulta" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Inspector de consultas", "query-inspector-button-aria-label": "Inspector de consultas" }, - "show-critical-path-only": "Mostrar solo la ruta crítica", - "show-matches-only": "Mostrar solo las coincidencias", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Un segmento en la <1>ruta crítica de la traza/solicitud/flujo de trabajo general." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Abrir menú de opciones de compartir traza", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Duración", + "errors": "", + "errors-tooltip": "", "export-started": "Exportación iniciada", + "filters": "", "give-feedback": "Comentarios", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Enlace copiado al portapapeles", + "overview": "", "path": "Ruta", "route": "Ruta", "services": "Servicios", @@ -7574,11 +7589,6 @@ "trace-id": "ID de traza", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Botón para borrar filtros", - "label-show-matches": "Interruptor para mostrar solo las coincidencias", - "label-show-paths": "Interruptor para mostrar solo la ruta crítica" - }, "trace-view": { "aria-label-copy": "Copiar al portapapeles", "no-data": "Sin datos", @@ -10523,6 +10533,7 @@ "title": "Nuevo" }, "new-dashboard": { + "empty-title": "", "title": "Nuevo panel de control" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Perfil" }, "quick-add": { - "aria-label": "Nuevo" + "aria-label": "Nuevo", + "new-template-dashboard-button": "" }, "rss-button": "Últimas entradas del blog" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Nombre que mostrar", "placeholder-my-repository-connection": "Mi conexión de repositorio", "text-loading-resource-information": "Cargando información de recursos...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} dashboard", "dashboards-count_other": "{{count}} dashboards", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Configurar", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Eliminar", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repositorio" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Después de la configuración, se creará una nueva carpeta de Grafana y se sincronizará con el almacenamiento externo. Si hay recursos presentes en el almacenamiento externo, se aprovisionarán en esta nueva carpeta. Todos los recursos nuevos creados en esta carpeta se almacenarán y versionarán en un almacenamiento externo.", "label": "Sincronizar el almacenamiento externo con una nueva carpeta de Grafana", - "subtitle": "Utiliza esta opción para sincronizar recursos externos en una nueva carpeta sin afectar el resto de tu instancia. Puedes repetir este proceso para un máximo de 10 carpetas." + "subtitle": "" }, "instance": { "description": "Los recursos se sincronizarán con el almacenamiento externo y se aprovisionarán en esta instancia. Los recursos de Grafana existentes se migrarán y fusionarán si es necesario. Después de la configuración, todos los nuevos recursos y cambios se guardarán en el almacenamiento externo y se aprovisionarán automáticamente de nuevo en la instancia.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importar", "new": "Nuevo", "new-dashboard": "Nuevo panel de control", - "new-folder": "Nueva carpeta" + "new-folder": "Nueva carpeta", + "new-template-dashboard": "" }, "generate-columns": { "score": "Puntuación" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtros de intervalo", - "name-critical-path-only": "Mostrar solo la ruta crítica", - "name-find-in-trace": "Buscar en el rastro", - "name-max-duration": "Duración máx.", - "name-min-duration": "Duración mín.", - "name-service-name": "Nombre de servicio", - "name-service-name-operator": "Operador de nombre de servicio", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Mostrar solo las coincidencias", - "name-span-name": "Nombre del intervalo", - "name-span-name-operator": "Operador de nombre de intervalo", - "name-tags": "Etiquetas", "traces-panel": { "no-data-found-in-response": "No se han encontrado datos en la respuesta" } diff --git a/public/locales/fr-FR/grafana.json b/public/locales/fr-FR/grafana.json index f38a264425f..310846c1aed 100644 --- a/public/locales/fr-FR/grafana.json +++ b/public/locales/fr-FR/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager :", + "disabled-tooltip": "", "error": "Impossible de charger l'aperçu de l'acheminement pour {{alertmanager}}", "initialized": "En fonction des étiquettes ajoutées, les instances d'alerte sont acheminées vers les politiques de notification suivantes. Développez chaque politique de notification ci-dessous pour afficher plus de détails.", "preview-routing": "Aperçu de l'acheminement", + "select-folder-tooltip": "", "text-loading-preview": "Chargement de l’aperçu...", "title": "Aperçu de l'acheminement des instances d'alerte", "uninitialized": "Une fois que vous avez sélectionné votre dossier et que votre requête et vos étiquettes sont configurées, cliquez sur « Aperçu de l'acheminement » pour voir les résultats ici." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Ajouter une expression" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Modifier le thème", "dark-theme": "Sombre", + "dashboard-from-template": "", "light-theme": "Clair", "scopes": "Portées" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Nouveau panneau" } }, - "clear": "Effacer", "confirm-navigation-modal": { "cancel": "Annuler", "new-tab": "Voulez-vous continuer dans l’onglet actuel ou ouvrir un nouvel onglet ?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Aucune information de volume disponible pour les requêtes actuelles et la plage temporelle." }, - "next": "Suivant", "next-prev-result": { "aria-label-next": "Bouton Résultat suivant", "aria-label-prev": "Bouton Résultat précédent", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Chargement en cours…" }, - "prev": "Précédent", "queryless-apps-extensions": { "aria-label-go-queryless": "Passer en mode sans requête" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Inspecteur de requête", "query-inspector-button-aria-label": "Inspecteur de requête" }, - "show-critical-path-only": "Afficher uniquement le chemin critique", - "show-matches-only": "Afficher uniquement les correspondances", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Un segment sur le <1>chemin critique de la trace/demande/flux de travail global." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Ouvrir le menu des options de partage de traces", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Durée", + "errors": "", + "errors-tooltip": "", "export-started": "Exportation lancée", + "filters": "", "give-feedback": "Commentaires", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Lien copié dans le presse-papiers", + "overview": "", "path": "Trajet", "route": "Itinéraire", "services": "Services", @@ -7574,11 +7589,6 @@ "trace-id": "Identifiant de trace", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Bouton Supprimer les filtres", - "label-show-matches": "Bouton Afficher uniquement les correspondances", - "label-show-paths": "Bouton Afficher uniquement le chemin critique" - }, "trace-view": { "aria-label-copy": "Copier dans le presse-papiers", "no-data": "Aucune donnée", @@ -10523,6 +10533,7 @@ "title": "Nouveau" }, "new-dashboard": { + "empty-title": "", "title": "Nouveau tableau de bord" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Nouveau" + "aria-label": "Nouveau", + "new-template-dashboard-button": "" }, "rss-button": "Dernières nouvelles sur le blog" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Pseudo", "placeholder-my-repository-connection": "Ma connexion au référentiel", "text-loading-resource-information": "Chargement des informations sur les ressources...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} tableau de bord", "dashboards-count_other": "{{count}} tableau de bord", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Configurer", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Supprimer", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Référentiel" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Après la configuration, un nouveau dossier Grafana sera créé et synchronisé avec un stockage externe. Si des ressources sont présentes dans le stockage externe, elles seront mises en service dans ce nouveau dossier. Toutes les nouvelles ressources créées dans ce dossier seront stockées et versionnées dans un stockage externe.", "label": "Synchroniser le stockage externe avec un nouveau dossier Grafana", - "subtitle": "Utilisez cette option pour synchroniser des ressources externes dans un nouveau dossier sans affecter le reste de votre instance. Vous pouvez répéter ce processus pour un maximum de 10 dossiers." + "subtitle": "" }, "instance": { "description": "Les ressources seront synchronisées avec un stockage externe et mises en service dans cette instance. Les ressources Grafana existantes seront migrées et fusionnées si nécessaire. Après la configuration, toutes les nouvelles ressources et modifications seront enregistrées dans le stockage externe et automatiquement mises en service dans l’instance.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importer", "new": "Nouveau", "new-dashboard": "Nouveau tableau de bord", - "new-folder": "Nouveau dossier" + "new-folder": "Nouveau dossier", + "new-template-dashboard": "" }, "generate-columns": { "score": "Note" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtres de durée", - "name-critical-path-only": "Afficher uniquement le chemin critique", - "name-find-in-trace": "Rechercher dans la trace", - "name-max-duration": "Durée maximale", - "name-min-duration": "Durée minimale", - "name-service-name": "Nom du service", - "name-service-name-operator": "Opérateur du nom du service", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Afficher uniquement les correspondances", - "name-span-name": "Nom de la durée", - "name-span-name-operator": "Opérateur du nom de la durée", - "name-tags": "Balises", "traces-panel": { "no-data-found-in-response": "Aucune donnée trouvée dans la réponse" } diff --git a/public/locales/hu-HU/grafana.json b/public/locales/hu-HU/grafana.json index 6589ebb6e54..54d8e7b5a77 100644 --- a/public/locales/hu-HU/grafana.json +++ b/public/locales/hu-HU/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Riasztáskezelő:", + "disabled-tooltip": "", "error": "Nem sikerült betölteni az irányítási előnézetet ehhez: {{alertmanager}}", "initialized": "A hozzáadott címkék alapján a riasztáspéldányok a következő értesítési házirendekhez vannak irányítva. További részletek megtekintéséhez bontsa ki az alábbi értesítési házirendeket.", "preview-routing": "Irányítás előnézete", + "select-folder-tooltip": "", "text-loading-preview": "Előnézet betöltése…", "title": "Riasztáspéldány irányítási előnézete", "uninitialized": "Miután kijelölte a mappát, és konfigurálta a lekérdezést és a címkéket, kattintson az „Irányítás előnézete” lehetőségre az eredmények megtekintéséhez itt." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Kifejezés hozzáadása" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Téma módosítása", "dark-theme": "Sötét", + "dashboard-from-template": "", "light-theme": "Világos", "scopes": "Hatókörök" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Új panel" } }, - "clear": "Törlés", "confirm-navigation-modal": { "cancel": "Mégse", "new-tab": "Kívánja folytatni az aktuális lapon, vagy új lapot nyit?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Nem áll rendelkezésre mennyiséginformáció az aktuális lekérdezésekhez és időtartományhoz." }, - "next": "Következő", "next-prev-result": { "aria-label-next": "Következő eredmény gombja", "aria-label-prev": "Előző eredmény gombja", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Betöltés…" }, - "prev": "Előző", "queryless-apps-extensions": { "aria-label-go-queryless": "Lekérdezés nélkül" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Lekérdezés-ellenőrző", "query-inspector-button-aria-label": "Lekérdezés-ellenőrző" }, - "show-critical-path-only": "Csak a kritikus útvonal megjelenítése", - "show-matches-only": "Csak egyezések megjelenítése", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "A teljes nyomkövetés/kérés/munkafolyamat <1>kritikus útvonalának egy szegmense." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Nyomvonalmegosztási opciók menüjének megnyitása", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Időtartam", + "errors": "", + "errors-tooltip": "", "export-started": "Exportálás elindítva", + "filters": "", "give-feedback": "Visszajelzés", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Hivatkozás a vágólapra másolva", + "overview": "", "path": "Útvonal", "route": "Útvonal", "services": "Szolgáltatások", @@ -7574,11 +7589,6 @@ "trace-id": "Nyomkövetési azonosító", "url": "URL-cím" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Szűrők törlése gomb", - "label-show-matches": "Csak egyezések megjelenítése kapcsoló", - "label-show-paths": "Csak a kritikus útvonal megjelenítése kapcsoló" - }, "trace-view": { "aria-label-copy": "Másolás vágólapra", "no-data": "Nincs adat", @@ -10523,6 +10533,7 @@ "title": "Új" }, "new-dashboard": { + "empty-title": "", "title": "Új irányítópult" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Új" + "aria-label": "Új", + "new-template-dashboard-button": "" }, "rss-button": "Újdonságok a blogról" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Megjelenített név", "placeholder-my-repository-connection": "Saját adattári kapcsolat", "text-loading-resource-information": "Erőforrás-információk betöltése…", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} irányítópult", "dashboards-count_other": "{{count}} irányítópult", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Konfigurálás", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Törlés", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Adattár" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "A beállítás után egy új Grafana-mappa jön létre, és szinkronizálódik a külső tárolóval. Ha vannak erőforrások a külső tárolóban, azok ebbe az új mappába kerülnek. A mappában létrehozott összes új erőforrás külső tárolóban lesz tárolva és verziószámozva.", "label": "Külső tároló szinkronizálása új Grafana-mappába", - "subtitle": "Ezzel a beállítással külső erőforrásokat szinkronizálhat egy új mappába anélkül, hogy ez befolyásolná a példány többi részét. Ezt a folyamatot akár 10 mappán is megismételheti." + "subtitle": "" }, "instance": { "description": "Az erőforrások szinkronizálódnak a külső tárolóval, és ebbe a példányba kerülnek. Szükség esetén megtörténik a meglévő Grafana-erőforrások áttelepítése és egyesítése. A beállítás után az összes új erőforrást és módosítást menti a rendszer a külső tárolóba, és automatikusan visszaépíti a példányba.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importálás", "new": "Új", "new-dashboard": "Új irányítópult", - "new-folder": "Új mappa" + "new-folder": "Új mappa", + "new-template-dashboard": "" }, "generate-columns": { "score": "Pontszám" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Terjedelemszűrők", - "name-critical-path-only": "Csak a kritikus útvonal megjelenítése", - "name-find-in-trace": "Keresés a nyomvonalon", - "name-max-duration": "Max. időtartam", - "name-min-duration": "Min. időtartam", - "name-service-name": "Szolgáltatásnév", - "name-service-name-operator": "Szolgáltatásnév operátora", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Csak egyezések megjelenítése", - "name-span-name": "Terjedelemnév", - "name-span-name-operator": "Terjedelemnév operátora", - "name-tags": "Címkék", "traces-panel": { "no-data-found-in-response": "Nem található adat a válaszban" } diff --git a/public/locales/id-ID/grafana.json b/public/locales/id-ID/grafana.json index aee46c7221f..ac2bcbfa3d7 100644 --- a/public/locales/id-ID/grafana.json +++ b/public/locales/id-ID/grafana.json @@ -1976,9 +1976,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "Tidak dapat memuat pratinjau perutean untuk {{alertmanager}}", "initialized": "Berdasarkan label yang ditambahkan, instans peringatan dirutekan ke kebijakan pemberitahuan berikut. Perluas setiap kebijakan pemberitahuan di bawah ini untuk melihat detail selengkapnya.", "preview-routing": "Pratinjau perutean", + "select-folder-tooltip": "", "text-loading-preview": "Memuat pratinjau...", "title": "Pratinjau perutean instans peringatan", "uninitialized": "Ketika folder Anda dipilih dan kueri serta label Anda dikonfigurasi, klik \"Pratinjau perutean\" untuk melihat hasilnya di sini." @@ -2933,6 +2935,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2942,6 +2945,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2949,7 +2953,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Tambah pola" @@ -4106,6 +4112,7 @@ "action": { "change-theme": "Ubah tema", "dark-theme": "Gelap", + "dashboard-from-template": "", "light-theme": "Terang", "scopes": "Lingkup" }, @@ -5690,6 +5697,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7017,7 +7028,6 @@ "new-panel": "Panel Baru" } }, - "clear": "Hapus", "confirm-navigation-modal": { "cancel": "Batalkan", "new-tab": "Apakah Anda ingin melanjutkan di tab saat ini atau membuka tab baru?", @@ -7241,7 +7251,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Tidak ada informasi volume yang tersedia untuk kueri dan rentang waktu saat ini." }, - "next": "Berikutnya", "next-prev-result": { "aria-label-next": "Tombol hasil berikutnya", "aria-label-prev": "Tombol hasil sebelumnya", @@ -7262,7 +7271,6 @@ "pane": { "loading-placeholder": "Memuat..." }, - "prev": "Sebelumnya", "queryless-apps-extensions": { "aria-label-go-queryless": "Buka tanpa kueri" }, @@ -7409,8 +7417,7 @@ "query-inspector-button": "Pemeriksa kueri", "query-inspector-button-aria-label": "Pemeriksa kueri" }, - "show-critical-path-only": "Hanya tampilkan jalur kritis", - "show-matches-only": "Hanya tampilkan kecocokan", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Segmen di <1>jalur kritis dari keseluruhan pelacakan/permintaan/alur kerja." }, @@ -7530,10 +7537,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Buka menu opsi jejak berbagi", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Durasi", + "errors": "", + "errors-tooltip": "", "export-started": "Ekspor dimulai", + "filters": "", "give-feedback": "Umpan balik", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Tautan disalin ke papan klip", + "overview": "", "path": "Jalur", "route": "Rute", "services": "Jasa", @@ -7548,11 +7563,6 @@ "trace-id": "ID Pelacakan", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Tombol hapus filter", - "label-show-matches": "Tombol Hanya tampilkan kecocokan", - "label-show-paths": "tTombol Hanya tampilkan jalur kritis" - }, "trace-view": { "aria-label-copy": "Salin ke papan klip", "no-data": "Tidak ada data", @@ -10479,6 +10489,7 @@ "title": "Baru" }, "new-dashboard": { + "empty-title": "", "title": "Dasbor baru" }, "new-folder": { @@ -10644,7 +10655,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Baru" + "aria-label": "Baru", + "new-template-dashboard-button": "" }, "rss-button": "Terbaru dari blog" }, @@ -11436,6 +11448,9 @@ "label-display-name": "Nama tampilan", "placeholder-my-repository-connection": "Koneksi repositori saya", "text-loading-resource-information": "Memuat informasi sumber daya...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_other": "{{count}} dasbor", "files-count_other": "{{count}} file", @@ -11481,8 +11496,8 @@ }, "connect-repository-button": { "configure": "Konfigurasikan", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Hapus", @@ -11573,6 +11588,13 @@ "all-resources-managed_other": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repositori" @@ -11711,10 +11733,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Setelah penyiapan, folder Grafana baru akan dibuat dan disinkronkan dengan penyimpanan eksternal. Jika ada sumber daya yang ada di penyimpanan eksternal, sumber daya akan disediakan ke folder baru ini. Semua sumber daya baru yang dibuat dalam folder ini akan disimpan dan diberi versi dalam penyimpanan eksternal.", "label": "Sinkronkan penyimpanan eksternal ke folder Grafana baru", - "subtitle": "Gunakan opsi ini untuk menyinkronkan sumber daya eksternal ke folder baru tanpa memengaruhi bagian lain dari instans Anda. Anda dapat mengulangi proses ini untuk hingga 10 folder." + "subtitle": "" }, "instance": { "description": "Sumber daya akan disinkronkan dengan penyimpanan eksternal dan disediakan ke instans ini. Sumber daya Grafana yang sudah ada akan dimigrasikan dan digabungkan jika dibutuhkan. Setelah penyiapan, semua sumber daya dan perubahan baru akan disimpan ke penyimpanan eksternal dan disediakan kembali secara otomatis ke instans.", @@ -12351,10 +12379,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Impor", "new": "Baru", "new-dashboard": "Dasbor baru", - "new-folder": "Folder baru" + "new-folder": "Folder baru", + "new-template-dashboard": "" }, "generate-columns": { "score": "Skor" @@ -13328,17 +13358,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filter rentang", - "name-critical-path-only": "Hanya tampilkan jalur kritis", - "name-find-in-trace": "Temukan dalam jejak", - "name-max-duration": "Durasi maks", - "name-min-duration": "Durasi min", - "name-service-name": "Nama layanan", - "name-service-name-operator": "Operator nama layanan", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Hanya tampilkan kecocokan", - "name-span-name": "Nama span", - "name-span-name-operator": "Operator nama span", - "name-tags": "Tag", "traces-panel": { "no-data-found-in-response": "Tidak ada data yang ditemukan dalam respons" } diff --git a/public/locales/it-IT/grafana.json b/public/locales/it-IT/grafana.json index d8bde4ffe55..13aac5e963c 100644 --- a/public/locales/it-IT/grafana.json +++ b/public/locales/it-IT/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "Impossibile caricare l'anteprima del routing per {{alertmanager}}", "initialized": "In base alle etichette aggiunte, le istanze di avviso vengono instradate alle seguenti politiche di notifica. Espandi ciascuna politica di notifica qui sotto per visualizzare ulteriori dettagli.", "preview-routing": "Anteprima routing", + "select-folder-tooltip": "", "text-loading-preview": "Caricamento anteprima in corso...", "title": "Anteprima del routing dell'istanza di avviso", "uninitialized": "Dopo aver selezionato la cartella e configurato la query e le etichette, fai clic su \"Anteprima routing\" per visualizzare i risultati qui." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Aggiungi espressione" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Modifica tema ", "dark-theme": "Scuro", + "dashboard-from-template": "", "light-theme": "Chiaro", "scopes": "Ambiti di applicazione" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Nuovo pannello" } }, - "clear": "Cancella", "confirm-navigation-modal": { "cancel": "Annulla", "new-tab": "Desideri procedere nella scheda corrente o aprirne una nuova?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Nessuna informazione sul volume disponibile per le query e l'intervallo di tempo correnti." }, - "next": "Avanti", "next-prev-result": { "aria-label-next": "Tasto Risultato successivo", "aria-label-prev": "Tasto Risultato precedente", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Caricamento in corso..." }, - "prev": "Prec.", "queryless-apps-extensions": { "aria-label-go-queryless": "Passa a senza query" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Ispettore query", "query-inspector-button-aria-label": "Ispettore query" }, - "show-critical-path-only": "Mostra solo il percorso critico", - "show-matches-only": "Mostra solo corrispondenze", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Un segmento sul <1>percorso critico della traccia/richiesta/flusso di lavoro complessivo." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Apri il menu delle opzioni di condivisione della traccia", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Durata", + "errors": "", + "errors-tooltip": "", "export-started": "Esportazione iniziata", + "filters": "", "give-feedback": "Feedback", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Il link è stato copiato negli appunti", + "overview": "", "path": "Percorso", "route": "Tratta", "services": "Servizi", @@ -7574,11 +7589,6 @@ "trace-id": "ID traccia", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Tasto Cancella filtri", - "label-show-matches": "Pulsante Mostra solo corrispondenze", - "label-show-paths": "Pulsante Mostra solo percorso critico" - }, "trace-view": { "aria-label-copy": "Copia negli appunti", "no-data": "Nessun dato", @@ -10523,6 +10533,7 @@ "title": "Nuovo" }, "new-dashboard": { + "empty-title": "", "title": "Nuovo dashboard" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profilo" }, "quick-add": { - "aria-label": "Nuovo" + "aria-label": "Nuovo", + "new-template-dashboard-button": "" }, "rss-button": "Ultime dal blog" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Nome visualizzato", "placeholder-my-repository-connection": "La mia connessione al repository", "text-loading-resource-information": "Caricamento delle informazioni sulle risorse in corso...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} dashboard", "dashboards-count_other": "{{count}} dashboard", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Configura", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Elimina", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repository" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Dopo la configurazione, verrà creata una nuova cartella Grafana, che sarà sincronizzata con la memoria esterna. Se sono presenti risorse nella memoria esterna, verranno fornite a questa nuova cartella. Tutte le nuove risorse create in questa cartella saranno salvate e riceveranno un numero di versione in una memoria esterna.", "label": "Sincronizza la memoria esterna con una nuova cartella Grafana", - "subtitle": "Utilizza questa opzione per sincronizzare le risorse esterne in una nuova cartella senza influire sul resto dell'istanza. È possibile ripetere questo processo per un massimo di 10 cartelle." + "subtitle": "" }, "instance": { "description": "Le risorse verranno sincronizzate con la memoria esterna e fornite in questa istanza. Le risorse Grafana esistenti verranno migrate e unite, se necessario. Dopo la configurazione, tutte le nuove risorse e le modifiche verranno salvate nella memoria esterna e fornite automaticamente nell'istanza.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importa", "new": "Nuovo", "new-dashboard": "Nuovo dashboard", - "new-folder": "Nuova cartella" + "new-folder": "Nuova cartella", + "new-template-dashboard": "" }, "generate-columns": { "score": "Punteggio" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtri intervallo", - "name-critical-path-only": "Mostra solo il percorso critico", - "name-find-in-trace": "Trova nella traccia", - "name-max-duration": "Durata massima", - "name-min-duration": "Durata minima", - "name-service-name": "Nome del servizio", - "name-service-name-operator": "Operatore del nome del servizio", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Mostra solo corrispondenze", - "name-span-name": "Nome intervallo", - "name-span-name-operator": "Operatore del nome dell'intervallo", - "name-tags": "Tag", "traces-panel": { "no-data-found-in-response": "Nessun dato trovato in risposta" } diff --git a/public/locales/ja-JP/grafana.json b/public/locales/ja-JP/grafana.json index 7a922622896..c4195f35493 100644 --- a/public/locales/ja-JP/grafana.json +++ b/public/locales/ja-JP/grafana.json @@ -1976,9 +1976,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "{{alertmanager}}のルーティングプレビューを読み込めませんでした", "initialized": "追加されたラベルに基づいて、アラートインスタンスは次の通知ポリシーにルーティングされます。詳細を表示するには、以下の各通知ポリシーを展開します。", "preview-routing": "ルーティングのプレビュー", + "select-folder-tooltip": "", "text-loading-preview": "プレビュー読み込み中...", "title": "アラートインスタンスのルーティングプレビュー", "uninitialized": "フォルダを選択し、クエリとラベルを構成したら、[ルーティングのプレビュー]をクリックして、ここに結果を表示します。" @@ -2933,6 +2935,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2942,6 +2945,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2949,7 +2953,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "式を追加" @@ -4106,6 +4112,7 @@ "action": { "change-theme": "テーマを変更", "dark-theme": "ダーク", + "dashboard-from-template": "", "light-theme": "ライト", "scopes": "スコープ" }, @@ -5690,6 +5697,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7017,7 +7028,6 @@ "new-panel": "新しいパネル" } }, - "clear": "消去", "confirm-navigation-modal": { "cancel": "キャンセル", "new-tab": "現在のタブで続行しますか、それとも新しいタブを開きますか?", @@ -7241,7 +7251,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "現在のクエリと時間範囲で利用可能なログ量情報はありません。" }, - "next": "次へ", "next-prev-result": { "aria-label-next": "次の結果ボタン", "aria-label-prev": "前の結果ボタン", @@ -7262,7 +7271,6 @@ "pane": { "loading-placeholder": "読み込み中..." }, - "prev": "前へ", "queryless-apps-extensions": { "aria-label-go-queryless": "クエリなしにする" }, @@ -7409,8 +7417,7 @@ "query-inspector-button": "クエリ検査", "query-inspector-button-aria-label": "クエリ検査" }, - "show-critical-path-only": "重要なパスのみ表示", - "show-matches-only": "一致するもののみを表示", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "全体的なトレース/リクエスト/ワークフローの<1>重要パス上のセグメント。" }, @@ -7530,10 +7537,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "共有トレースオプションメニューを開きます", + "critical-path": "", + "critical-path-tooltip": "", "duration": "期間", + "errors": "", + "errors-tooltip": "", "export-started": "エクスポートが開始されました", + "filters": "", "give-feedback": "フィードバック", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "リンクをクリップボードにコピーしました", + "overview": "", "path": "パス", "route": "経路", "services": "サービス", @@ -7548,11 +7563,6 @@ "trace-id": "トレースID", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "フィルターのクリアボタン", - "label-show-matches": "「一致のみ表示」の切り替え", - "label-show-paths": "「重要パスのみ表示」の切り替え" - }, "trace-view": { "aria-label-copy": "クリップボードにコピー", "no-data": "データなし", @@ -10479,6 +10489,7 @@ "title": "新規" }, "new-dashboard": { + "empty-title": "", "title": "新しいダッシュボード" }, "new-folder": { @@ -10644,7 +10655,8 @@ "aria-label": "プロフィール" }, "quick-add": { - "aria-label": "新規" + "aria-label": "新規", + "new-template-dashboard-button": "" }, "rss-button": "最新ブログから" }, @@ -11436,6 +11448,9 @@ "label-display-name": "表示名", "placeholder-my-repository-connection": "自分のリポジトリ接続", "text-loading-resource-information": "リソース情報読み込み中...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_other": "{{count}}個のダッシュボード", "files-count_other": "{{count}}個のファイル", @@ -11481,8 +11496,8 @@ }, "connect-repository-button": { "configure": "構成", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "削除", @@ -11573,6 +11588,13 @@ "all-resources-managed_other": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "レポジトリ" @@ -11711,10 +11733,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "セットアップ後、新しいGrafanaフォルダが作成され、外部ストレージと同期されます。外部ストレージにリソースがある場合、それらはこの新しいフォルダにプロビジョニングされます。このフォルダで作成された新しいリソースはすべて、外部ストレージに保存されバージョン管理されます。", "label": "外部ストレージを新しいGrafanaフォルダに同期", - "subtitle": "このオプションを使用すると、インスタンスの他の部分に影響を与えずに外部リソースを新しいフォルダに同期できます。このプロセスは最大10個のフォルダに対して繰り返し実行できます。" + "subtitle": "" }, "instance": { "description": "リソースは外部ストレージと同期され、このインスタンスにプロビジョニングされます。必要に応じて既存のGrafanaリソースは移行・統合されます。セットアップ後、すべての新規リソースと変更は外部ストレージに保存され、自動的にインスタンスにプロビジョニングされます。", @@ -12351,10 +12379,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "インポート", "new": "新規", "new-dashboard": "新しいダッシュボード", - "new-folder": "新規フォルダ" + "new-folder": "新規フォルダ", + "new-template-dashboard": "" }, "generate-columns": { "score": "スコア" @@ -13328,17 +13358,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "スパンフィルター", - "name-critical-path-only": "クリティカルパスのみ表示", - "name-find-in-trace": "トレースで検索", - "name-max-duration": "最大継続時間", - "name-min-duration": "最小継続時間", - "name-service-name": "サービス名", - "name-service-name-operator": "サービス名の演算子", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "一致するもののみを表示", - "name-span-name": "スパン名", - "name-span-name-operator": "スパン名の演算子", - "name-tags": "タグ", "traces-panel": { "no-data-found-in-response": "応答にデータが見つかりません" } diff --git a/public/locales/ko-KR/grafana.json b/public/locales/ko-KR/grafana.json index c9434c4af28..47321b06d08 100644 --- a/public/locales/ko-KR/grafana.json +++ b/public/locales/ko-KR/grafana.json @@ -1976,9 +1976,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "{{alertmanager}}의 라우팅 미리보기를 로딩하지 못했습니다.", "initialized": "추가된 라벨을 토대로 경고 인스턴스가 다음 알림 정책으로 라우팅됩니다. 자세한 내용을 보려면 아래의 각 알림 정책을 펼치세요.", "preview-routing": "라우팅 미리보기", + "select-folder-tooltip": "", "text-loading-preview": "미리 보기 로딩 중...", "title": "경고 인스턴스 라우팅 미리보기", "uninitialized": "폴더를 선택하고 쿼리 및 라벨을 구성한 후 '라우팅 미리보기'를 클릭하여 여기에서 결과를 확인하세요." @@ -2933,6 +2935,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2942,6 +2945,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2949,7 +2953,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "표현식 추가" @@ -4106,6 +4112,7 @@ "action": { "change-theme": "테마 변경", "dark-theme": "다크", + "dashboard-from-template": "", "light-theme": "라이트", "scopes": "범위" }, @@ -5690,6 +5697,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7017,7 +7028,6 @@ "new-panel": "새 패널" } }, - "clear": "초기화", "confirm-navigation-modal": { "cancel": "취소", "new-tab": "현재 탭에서 계속 진행하시겠어요? 아니면 새 탭을 열까요?", @@ -7241,7 +7251,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "현재 쿼리 및 시간 범위에 대해 사용할 수 있는 볼륨 정보가 없습니다." }, - "next": "다음", "next-prev-result": { "aria-label-next": "다음 결과 버튼", "aria-label-prev": "이전 결과 버튼", @@ -7262,7 +7271,6 @@ "pane": { "loading-placeholder": "로딩 중..." }, - "prev": "이전", "queryless-apps-extensions": { "aria-label-go-queryless": "쿼리 없이 진행" }, @@ -7409,8 +7417,7 @@ "query-inspector-button": "쿼리 검사기", "query-inspector-button-aria-label": "쿼리 검사기" }, - "show-critical-path-only": "중요 경로만 표시", - "show-matches-only": "일치 항목만 표시", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "전체 트레이스 / 요청 / 워크플로의 <1>중요 경로에 있는 세그먼트입니다." }, @@ -7530,10 +7537,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "공유 추적 옵션 메뉴 열기", + "critical-path": "", + "critical-path-tooltip": "", "duration": "지속 시간", + "errors": "", + "errors-tooltip": "", "export-started": "내보내기가 시작되었습니다", + "filters": "", "give-feedback": "피드백", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "클립보드에 링크 복사되었습니다", + "overview": "", "path": "경로", "route": "라우트", "services": "서비스", @@ -7548,11 +7563,6 @@ "trace-id": "트레이스 ID", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "필터 지우기 버튼", - "label-show-matches": "일치 항목만 표시하는 스위치", - "label-show-paths": "중요 경로만 표시하는 스위치" - }, "trace-view": { "aria-label-copy": "클립보드로 복사", "no-data": "데이터 없음", @@ -10479,6 +10489,7 @@ "title": "신규" }, "new-dashboard": { + "empty-title": "", "title": "새 대시보드" }, "new-folder": { @@ -10644,7 +10655,8 @@ "aria-label": "프로필" }, "quick-add": { - "aria-label": "신규" + "aria-label": "신규", + "new-template-dashboard-button": "" }, "rss-button": "블로그 최근 글" }, @@ -11436,6 +11448,9 @@ "label-display-name": "표시 이름", "placeholder-my-repository-connection": "내 리포지토리 연결", "text-loading-resource-information": "리소스 정보 로딩 중...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_other": "대시보드 {{count}}개", "files-count_other": "파일 {{count}}개", @@ -11481,8 +11496,8 @@ }, "connect-repository-button": { "configure": "구성", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "삭제", @@ -11573,6 +11588,13 @@ "all-resources-managed_other": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "리포지토리" @@ -11711,10 +11733,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "설정 후 새 Grafana 폴더가 생성되고 외부 스토리지와 동기화됩니다. 외부 스토리지에 리소스가 있는 경우 해당 리소스가 이 새 폴더에 프로비저닝됩니다. 이 폴더에 생성된 모든 새 리소스는 외부 스토리지에 저장되고 버전이 관리됩니다.", "label": "외부 스토리지를 새 Grafana 폴더에 동기화", - "subtitle": "이 옵션을 사용하여 나머지 인스턴스에 영향을 주는 일 없이 외부 리소스를 새 폴더로 동기화하세요. 이 프로세스를 최대 10개의 폴더에 대해 반복할 수 있습니다." + "subtitle": "" }, "instance": { "description": "리소스가 외부 스토리지와 동기화되고 이 인스턴스에 프로비저닝됩니다. 기존 Grafana 리소스는 필요한 경우 마이그레이션 및 병합됩니다. 설정 후 모든 새 리소스 및 변경 사항이 외부 스토리지에 저장되고 자동으로 인스턴스에 다시 프로비저닝됩니다.", @@ -12351,10 +12379,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "가져오기", "new": "신규", "new-dashboard": "새 대시보드", - "new-folder": "새 폴더" + "new-folder": "새 폴더", + "new-template-dashboard": "" }, "generate-columns": { "score": "점수" @@ -13328,17 +13358,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "범위 필터", - "name-critical-path-only": "중요 경로만 표시", - "name-find-in-trace": "추적에서 찾기", - "name-max-duration": "최대 지속 시간", - "name-min-duration": "최소 지속 시간", - "name-service-name": "서비스 이름", - "name-service-name-operator": "서비스 이름 연산자", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "일치 항목만 표시", - "name-span-name": "스팬 이름", - "name-span-name-operator": "스팬 이름 연산자", - "name-tags": "태그", "traces-panel": { "no-data-found-in-response": "응답에서 데이터를 찾을 수 없습니다." } diff --git a/public/locales/nl-NL/grafana.json b/public/locales/nl-NL/grafana.json index 346e773251d..265bfd8a8d0 100644 --- a/public/locales/nl-NL/grafana.json +++ b/public/locales/nl-NL/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Waarschuwingsmanager:", + "disabled-tooltip": "", "error": "Kon routeringsvoorbeeld niet laden voor {{alertmanager}}", "initialized": "Op basis van de toegevoegde labels worden waarschuwingsinstanties gerouteerd naar het volgende meldingsbeleid. Vouw elk meldingsbeleid hieronder uit voor meer informatie.", "preview-routing": "Voorbeeld routering", + "select-folder-tooltip": "", "text-loading-preview": "Voorbeeldweergave laden...", "title": "Waarschuwingsinstantie routeringsvoorbeeld", "uninitialized": "Wanneer je je map hebt geselecteerd en je query en labels zijn geconfigureerd, klik je op 'Voorbeeld routering' om de resultaten hier te zien." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Expressie toevoegen" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Thema wijzigen", "dark-theme": "Donker", + "dashboard-from-template": "", "light-theme": "Licht", "scopes": "Bereik" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Nieuw paneel" } }, - "clear": "Wissen", "confirm-navigation-modal": { "cancel": "Annuleren", "new-tab": "Wil je doorgaan op het huidige tabblad of een nieuw tabblad openen?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Geen volume-informatie beschikbaar voor de huidige query's en het huidige tijdbereik." }, - "next": "Volgende", "next-prev-result": { "aria-label-next": "Knop Volgende resultaat", "aria-label-prev": "Knop Vorige resultaat", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Laden..." }, - "prev": "Vorige", "queryless-apps-extensions": { "aria-label-go-queryless": "Zonder query's" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Querycontrole", "query-inspector-button-aria-label": "Querycontrole" }, - "show-critical-path-only": "Alleen kritieke pad weergeven", - "show-matches-only": "Alleen overeenkomende resultaten weergeven", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Een segment op het <1>kritieke pad van de algehele tracering/aanvraag/workflow." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Menu Opties voor traceren delen openen", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Duur", + "errors": "", + "errors-tooltip": "", "export-started": "Exporteren gestart", + "filters": "", "give-feedback": "Feedback", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Link gekopieerd naar het klembord", + "overview": "", "path": "Path", "route": "Route", "services": "Diensten", @@ -7574,11 +7589,6 @@ "trace-id": "Tracering-id", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Knop Filters wissen", - "label-show-matches": "Schakelaar Alleen overeenkomende resultaten weergeven", - "label-show-paths": "Schakelaar voor Alleen kritiek pad weergeven" - }, "trace-view": { "aria-label-copy": "Kopiëren naar klembord", "no-data": "Geen gegevens", @@ -10523,6 +10533,7 @@ "title": "Nieuw" }, "new-dashboard": { + "empty-title": "", "title": "Nieuw dashboard" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profiel" }, "quick-add": { - "aria-label": "Nieuw" + "aria-label": "Nieuw", + "new-template-dashboard-button": "" }, "rss-button": "Laatste blogberichten" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Weergavenaam", "placeholder-my-repository-connection": "Mijn repository-verbinding", "text-loading-resource-information": "Broninformatie laden...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} dashboard", "dashboards-count_other": "{{count}} dashboard", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Configureren", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Verwijderen", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repository" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Na het instellen wordt een nieuwe Grafana-map gemaakt en gesynchroniseerd met externe opslag. Als er bronnen aanwezig zijn in externe opslag, worden deze in deze nieuwe map ingericht. Alle nieuwe bronnen die in deze map worden gemaakt, worden opgeslagen en in versies beheerd in externe opslag.", "label": "Externe opslag synchroniseren naar een nieuwe Grafana-map", - "subtitle": "Gebruik deze optie om externe bronnen naar een nieuwe map te synchroniseren zonder de rest van je instantie te beïnvloeden. Je kunt dit proces herhalen voor maximaal 10 mappen." + "subtitle": "" }, "instance": { "description": "Bronnen worden gesynchroniseerd met externe opslag en ingericht in deze instantie. Bestaande Grafana-bronnen worden indien nodig gemigreerd en samengevoegd. Na het instellen worden alle nieuwe bronnen en wijzigingen opgeslagen in externe opslag en automatisch opnieuw ingericht in de instantie.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importeren", "new": "Nieuw", "new-dashboard": "Nieuw dashboard", - "new-folder": "Nieuwe map" + "new-folder": "Nieuwe map", + "new-template-dashboard": "" }, "generate-columns": { "score": "Score" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Spanfilters", - "name-critical-path-only": "Alleen kritieke pad weergeven", - "name-find-in-trace": "In spoor zoeken", - "name-max-duration": "Maximale duur", - "name-min-duration": "Minimale duur", - "name-service-name": "Servicenaam", - "name-service-name-operator": "Servicenaam operator", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Alleen overeenkomende resultaten weergeven", - "name-span-name": "Spannaam", - "name-span-name-operator": "Spannaam operator", - "name-tags": "Labels", "traces-panel": { "no-data-found-in-response": "Geen gegevens gevonden in reactie" } diff --git a/public/locales/pl-PL/grafana.json b/public/locales/pl-PL/grafana.json index b23f2b5bb01..785acbb9475 100644 --- a/public/locales/pl-PL/grafana.json +++ b/public/locales/pl-PL/grafana.json @@ -1994,9 +1994,11 @@ }, "notification-preview": { "alertmanager": "Menedżer alertów:", + "disabled-tooltip": "", "error": "Nie udało się załadować podglądu przekierowania dla {{alertmanager}}", "initialized": "Instancje alertów są kierowane do następujących zasad powiadomień na podstawie dodanych etykiet. Rozwiń poniższe zasady powiadomień, aby wyświetlić więcej informacji.", "preview-routing": "Podgląd przekierowania", + "select-folder-tooltip": "", "text-loading-preview": "Wczytywanie podglądu…", "title": "Podgląd przekierowania instancji alertu", "uninitialized": "Po wybraniu folderu i skonfigurowaniu zapytania oraz etykiet kliknij „Podgląd przekierowania”, aby zobaczyć wyniki tutaj." @@ -2969,6 +2971,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2978,6 +2981,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2985,7 +2989,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Dodaj wyrażenie" @@ -4166,6 +4172,7 @@ "action": { "change-theme": "Zmień motyw", "dark-theme": "Ciemny", + "dashboard-from-template": "", "light-theme": "Jasny", "scopes": "Zakresy" }, @@ -5756,6 +5763,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7089,7 +7100,6 @@ "new-panel": "Nowy panel" } }, - "clear": "Wyczyść", "confirm-navigation-modal": { "cancel": "Anuluj", "new-tab": "Czy chcesz kontynuować na bieżącej karcie, czy otworzyć nową kartę?", @@ -7313,7 +7323,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Brak dostępnych informacji o wolumenie dla bieżących zapytań i zakresu czasu." }, - "next": "Dalej", "next-prev-result": { "aria-label-next": "Przycisk Następny wynik", "aria-label-prev": "Przycisk Poprzedni wynik", @@ -7334,7 +7343,6 @@ "pane": { "loading-placeholder": "Ładowanie…" }, - "prev": "Wstecz", "queryless-apps-extensions": { "aria-label-go-queryless": "Bez zapytań" }, @@ -7487,8 +7495,7 @@ "query-inspector-button": "Inspektor zapytań", "query-inspector-button-aria-label": "Inspektor zapytań" }, - "show-critical-path-only": "Pokaż tylko ścieżkę krytyczną", - "show-matches-only": "Pokaż tylko dopasowania", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Segment na <1>ścieżce krytycznej ogólnego śladu / żądania / przepływu pracy." }, @@ -7608,10 +7615,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Otwórz menu opcji udostępniania śladu", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Czas trwania", + "errors": "", + "errors-tooltip": "", "export-started": "Rozpoczęto eksportowanie", + "filters": "", "give-feedback": "Opinie", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Skopiowano link do schowka", + "overview": "", "path": "Ścieżka", "route": "Trasa", "services": "Usługi", @@ -7626,11 +7641,6 @@ "trace-id": "Identyfikator śledzenia", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Przycisk Wyczyść filtry", - "label-show-matches": "Przełącznik Pokaż tylko dopasowania", - "label-show-paths": "Przełącznik Pokaż tylko ścieżkę krytyczną" - }, "trace-view": { "aria-label-copy": "Kopiuj do schowka", "no-data": "Brak danych", @@ -10611,6 +10621,7 @@ "title": "Nowy" }, "new-dashboard": { + "empty-title": "", "title": "Nowy pulpit" }, "new-folder": { @@ -10776,7 +10787,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Nowy" + "aria-label": "Nowy", + "new-template-dashboard-button": "" }, "rss-button": "Najnowsze na blogu" }, @@ -11577,6 +11589,9 @@ "label-display-name": "Nazwa wyświetlana", "placeholder-my-repository-connection": "Połączenie z moim repozytorium", "text-loading-resource-information": "Wczytywanie informacji o zasobach…", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} pulpit", "dashboards-count_few": "{{count}} pulpitu", @@ -11631,11 +11646,8 @@ }, "connect-repository-button": { "configure": "Konfiguruj", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_few": "", - "repository-limit-reached-tooltip_many": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Usuń", @@ -11732,6 +11744,13 @@ "unmanaged-resources_many": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repozytorium" @@ -11870,10 +11889,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Po konfiguracji utworzony zostanie nowy folder Grafany, który zostanie zsynchronizowany z zewnętrzną pamięcią masową. Jeśli w zewnętrznej pamięci masowej są dostępne zasoby, zostaną one przydzielone do tego nowego folderu. Wszystkie nowe zasoby utworzone w tym folderze będą przechowywane i wersjonowane w zewnętrznej pamięci masowej.", "label": "Synchronizuj zewnętrzną pamięć masową z nowym folderem Grafany", - "subtitle": "Użyj tej opcji, aby zsynchronizować zasoby zewnętrzne w nowym folderze bez wpływu na pozostałą część instancji. Proces ten można powtórzyć dla maksymalnie 10 folderów." + "subtitle": "" }, "instance": { "description": "Zasoby zostaną zsynchronizowane z zewnętrzną pamięcią masową i aprowizowane w tej instancji. Istniejące zasoby Grafany zostaną w razie potrzeby przeniesione i scalone. Po konfiguracji wszystkie nowe zasoby i zmiany zostaną zapisane w zewnętrznej pamięci masowej i automatycznie udostępnione ponownie w instancji.", @@ -12519,10 +12544,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importuj", "new": "Nowy", "new-dashboard": "Nowy pulpit", - "new-folder": "Nowy folder" + "new-folder": "Nowy folder", + "new-template-dashboard": "" }, "generate-columns": { "score": "Wynik" @@ -13502,17 +13529,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtry zakresu", - "name-critical-path-only": "Pokaż tylko ścieżkę krytyczną", - "name-find-in-trace": "Znajdź w śladzie", - "name-max-duration": "Maks. czas trwania", - "name-min-duration": "Min. czas trwania", - "name-service-name": "Nazwa usługi", - "name-service-name-operator": "Operator nazwy usługi", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Pokaż tylko dopasowania", - "name-span-name": "Nazwa zakresu", - "name-span-name-operator": "Operator nazwy zakresu", - "name-tags": "Tagi", "traces-panel": { "no-data-found-in-response": "Nie znaleziono danych w odpowiedzi" } diff --git a/public/locales/pt-BR/grafana.json b/public/locales/pt-BR/grafana.json index 2b2a40710ff..4b5dade9af0 100644 --- a/public/locales/pt-BR/grafana.json +++ b/public/locales/pt-BR/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "Não foi possível carregar a visualização de encaminhamento para {{alertmanager}}", "initialized": "Com base nas etiquetas adicionadas, as instâncias de alerta são encaminhadas para as seguintes políticas de notificação. Expanda cada política de notificação abaixo para ver mais detalhes.", "preview-routing": "Visualização do encaminhamento", + "select-folder-tooltip": "", "text-loading-preview": "Carregando pré-visualização…", "title": "Visualização do encaminhamento de instância de alerta", "uninitialized": "Depois de selecionar a pasta e configurar a consulta e as etiquetas, clique em \"Visualizar encaminhamento\" para ver os resultados aqui." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Adicionar expressão" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Alterar tema", "dark-theme": "Escuro", + "dashboard-from-template": "", "light-theme": "Claro", "scopes": "Escopos" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Novo painel" } }, - "clear": "Limpar", "confirm-navigation-modal": { "cancel": "Cancelar", "new-tab": "Deseja continuar na aba atual ou abrir uma nova aba?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Nenhuma informação de volume disponível para as consultas atuais e intervalo de tempo." }, - "next": "Avançar", "next-prev-result": { "aria-label-next": "Botão de próximo resultado", "aria-label-prev": "Botão de resultado anterior", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Carregando…" }, - "prev": "Anterior", "queryless-apps-extensions": { "aria-label-go-queryless": "Continuar sem consulta" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Inspetor da consulta", "query-inspector-button-aria-label": "Inspetor da consulta" }, - "show-critical-path-only": "Exibir apenas o caminho crítico", - "show-matches-only": "Exibir apenas correspondências", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Um segmento no <1>caminho crítico do rastro/solicitação/fluxo de trabalho geral." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Abrir menu de opções de compartilhamento de traços", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Duração", + "errors": "", + "errors-tooltip": "", "export-started": "Exportação iniciada", + "filters": "", "give-feedback": "Feedback", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Link copiado para a área de transferência", + "overview": "", "path": "Caminho", "route": "Rota", "services": "Serviços", @@ -7574,11 +7589,6 @@ "trace-id": "ID do traço", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Botão para limpar filtros", - "label-show-matches": "Botão para exibir apenas correspondências", - "label-show-paths": "Botão para exibir apenas o caminho crítico" - }, "trace-view": { "aria-label-copy": "Copiar para a área de transferência", "no-data": "Sem dados", @@ -10523,6 +10533,7 @@ "title": "Novo" }, "new-dashboard": { + "empty-title": "", "title": "Novo painel de controle" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Perfil" }, "quick-add": { - "aria-label": "Novo" + "aria-label": "Novo", + "new-template-dashboard-button": "" }, "rss-button": "Mais recentes do blog" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Nome de exibição", "placeholder-my-repository-connection": "Minha conexão de repositório", "text-loading-resource-information": "Carregando informações de recursos…", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} painel de controle", "dashboards-count_other": "{{count}} painel de controle", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Configuração", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Excluir", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repositório" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Após a configuração, uma nova pasta Grafana será criada e sincronizada com o armazenamento externo. Se algum recurso estiver presente no armazenamento externo, ele será provisionado para esta nova pasta. Todos os novos recursos criados nesta pasta serão armazenados e versionados no armazenamento externo.", "label": "Sincronizar armazenamento externo com uma nova pasta Grafana", - "subtitle": "Use esta opção para sincronizar recursos externos em uma nova pasta sem afetar o resto da sua instância. Você pode repetir esse processo para até 10 pastas." + "subtitle": "" }, "instance": { "description": "Os recursos serão sincronizados com o armazenamento externo e provisionados nesta instância. Os recursos existentes da Grafana serão migrados e mesclados, se necessário. Após a configuração, todos os novos recursos e alterações serão salvos no armazenamento externo e provisionados automaticamente de volta para a instância.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importar", "new": "Novo", "new-dashboard": "Novo painel de controle", - "new-folder": "Nova pasta" + "new-folder": "Nova pasta", + "new-template-dashboard": "" }, "generate-columns": { "score": "Pontuação" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtros de intervalo", - "name-critical-path-only": "Exibir apenas o caminho crítico", - "name-find-in-trace": "Localizar no traço", - "name-max-duration": "Duração máxima", - "name-min-duration": "Duração mínima", - "name-service-name": "Nome do serviço", - "name-service-name-operator": "Operador do nome do serviço", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Exibir apenas correspondências", - "name-span-name": "Nome do intervalo", - "name-span-name-operator": "Operador de nome de intervalo", - "name-tags": "Tags", "traces-panel": { "no-data-found-in-response": "Nenhum dado encontrado na resposta" } diff --git a/public/locales/pt-PT/grafana.json b/public/locales/pt-PT/grafana.json index 7132ccd72e7..8c23caa1df6 100644 --- a/public/locales/pt-PT/grafana.json +++ b/public/locales/pt-PT/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "Não foi possível carregar a pré-visualização de encaminhamento para {{alertmanager}}", "initialized": "Com base nas etiquetas adicionadas, as instâncias de alerta são encaminhadas para as seguintes políticas de notificação. Expanda cada política de notificação abaixo para ver mais detalhes.", "preview-routing": "Pré-visualizar encaminhamento", + "select-folder-tooltip": "", "text-loading-preview": "A carregar a pré-visualização...", "title": "Pré-visualização de encaminhamento de instância de alerta", "uninitialized": "Quando tiver a sua pasta selecionada e a sua consulta e etiquetas configuradas, clique em \"Pré-visualizar encaminhamento\" para ver os resultados aqui." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Adicionar expressão" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Alterar tema", "dark-theme": "Escuro", + "dashboard-from-template": "", "light-theme": "Claro", "scopes": "Âmbitos" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Novo painel" } }, - "clear": "Limpar", "confirm-navigation-modal": { "cancel": "Cancelar", "new-tab": "Pretende continuar no separador atual ou abrir um novo separador?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Não há informações de volume disponíveis para as consultas atuais e intervalo de tempo." }, - "next": "Seguinte", "next-prev-result": { "aria-label-next": "Botão de resultado seguinte", "aria-label-prev": "Botão de resultado anterior", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "A carregar..." }, - "prev": "Anterior", "queryless-apps-extensions": { "aria-label-go-queryless": "Sem consulta" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Inspetor de consultas", "query-inspector-button-aria-label": "Inspetor de consultas" }, - "show-critical-path-only": "Mostrar apenas o caminho crítico", - "show-matches-only": "Mostrar apenas as correspondências", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Um segmento no <1>caminho crítico do trace/pedido/fluxo de trabalho geral." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Abrir menu de opções de partilha de rastreio", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Duração", + "errors": "", + "errors-tooltip": "", "export-started": "Exportação iniciada", + "filters": "", "give-feedback": "Feedback", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Link copiado para a área de transferência", + "overview": "", "path": "Caminho", "route": "Via", "services": "Serviços", @@ -7574,11 +7589,6 @@ "trace-id": "ID de rastreio", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Botão para limpar filtros", - "label-show-matches": "Interruptor para mostrar apenas as correspondências", - "label-show-paths": "Interruptor para mostrar apenas o caminho crítico" - }, "trace-view": { "aria-label-copy": "Copiar para a área de transferência", "no-data": "Sem dados", @@ -10523,6 +10533,7 @@ "title": "Novo" }, "new-dashboard": { + "empty-title": "", "title": "Novo painel de controlo" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Perfil" }, "quick-add": { - "aria-label": "Novo" + "aria-label": "Novo", + "new-template-dashboard-button": "" }, "rss-button": "Novidades do blog" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Nome do visor", "placeholder-my-repository-connection": "A minha ligação de repositório", "text-loading-resource-information": "A carregar informações de recursos...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} painéis de controlo", "dashboards-count_other": "{{count}} painéis de controlo", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Configurar", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Eliminar", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Repositório" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Após a configuração, uma nova pasta Grafana será criada e sincronizada com o armazenamento externo. Se houver recursos presentes no armazenamento externo, estes serão aprovisionados para esta nova pasta. Todos os novos recursos criados nesta pasta serão armazenados e versionados no armazenamento externo.", "label": "Sincronizar o armazenamento externo com uma nova pasta Grafana", - "subtitle": "Utilize esta opção para sincronizar recursos externos para uma nova pasta sem afetar o resto da sua instância. Pode repetir este processo para até 10 pastas." + "subtitle": "" }, "instance": { "description": "Os recursos serão sincronizados com o armazenamento externo e provisionados nesta instância. Os recursos Grafana existentes serão migrados e fundidos, se necessário. Após a configuração, todos os novos recursos e alterações serão guardados no armazenamento externo e automaticamente provisionados de volta para a instância.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importar", "new": "Novo", "new-dashboard": "Novo painel de controlo", - "new-folder": "Nova pasta" + "new-folder": "Nova pasta", + "new-template-dashboard": "" }, "generate-columns": { "score": "Pontuação " @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Filtros de intervalo", - "name-critical-path-only": "Mostrar apenas o caminho crítico", - "name-find-in-trace": "Localizar no Trace", - "name-max-duration": "Duração máx.", - "name-min-duration": "Duração mín.", - "name-service-name": "Nome do serviço", - "name-service-name-operator": "Operador do nome do serviço", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Mostrar apenas as correspondências", - "name-span-name": "Nome do intervalo", - "name-span-name-operator": "Operador do nome do intervalo", - "name-tags": "Etiquetas", "traces-panel": { "no-data-found-in-response": "Nenhum dado encontrado na resposta" } diff --git a/public/locales/ru-RU/grafana.json b/public/locales/ru-RU/grafana.json index 64142cde3ab..18f2a4076e1 100644 --- a/public/locales/ru-RU/grafana.json +++ b/public/locales/ru-RU/grafana.json @@ -1994,9 +1994,11 @@ }, "notification-preview": { "alertmanager": "Обработчик оповещений Alertmanager:", + "disabled-tooltip": "", "error": "Не удалось загрузить предварительный просмотр маршрутизации для {{alertmanager}}", "initialized": "На основе добавленных меток экземпляры оповещений направляются к следующим политикам уведомления. Для просмотра более подробной информации разверните каждую политику уведомления, приведенную ниже.", "preview-routing": "Предварительный просмотр маршрутизации", + "select-folder-tooltip": "", "text-loading-preview": "Загрузка просмотра...", "title": "Предварительный просмотр маршрутизации экземпляра оповещения", "uninitialized": "После выбора папки и настройки запроса и меток нажмите «Предварительный просмотр маршрутизации», чтобы увидеть результаты." @@ -2969,6 +2971,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2978,6 +2981,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2985,7 +2989,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Добавить выражение" @@ -4166,6 +4172,7 @@ "action": { "change-theme": "Изменить тему", "dark-theme": "Темная", + "dashboard-from-template": "", "light-theme": "Светлая", "scopes": "Области" }, @@ -5756,6 +5763,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7089,7 +7100,6 @@ "new-panel": "Новая панель" } }, - "clear": "Очистить", "confirm-navigation-modal": { "cancel": "Отмена", "new-tab": "Продолжить на текущей вкладке или открыть новую?", @@ -7313,7 +7323,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Информация об объеме недоступна для текущих запросов и временного диапазона." }, - "next": "Далее", "next-prev-result": { "aria-label-next": "Кнопка «Следующий результат»", "aria-label-prev": "Кнопка «Предыдущий результат»", @@ -7334,7 +7343,6 @@ "pane": { "loading-placeholder": "Загрузка…" }, - "prev": "Назад", "queryless-apps-extensions": { "aria-label-go-queryless": "Не выполнять запрос" }, @@ -7487,8 +7495,7 @@ "query-inspector-button": "Инспектор запросов", "query-inspector-button-aria-label": "Инспектор запросов" }, - "show-critical-path-only": "Показать только критический путь", - "show-matches-only": "Показать только совпадения", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Сегмент <1>критического пути общей трассировки / запроса / рабочего процесса." }, @@ -7608,10 +7615,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Открыть меню параметров трассировки общего доступа", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Длительность", + "errors": "", + "errors-tooltip": "", "export-started": "Экспорт запущен", + "filters": "", "give-feedback": "Обратная связь", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Ссылка скопирована в буфер обмена", + "overview": "", "path": "Путь", "route": "Маршрут", "services": "Службы", @@ -7626,11 +7641,6 @@ "trace-id": "Идентификатор трассировки", "url": "URL-адрес" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Кнопка очистки фильтров", - "label-show-matches": "Переключатель «Показать только совпадения»", - "label-show-paths": "Переключатель «Показать только критический путь»" - }, "trace-view": { "aria-label-copy": "Копировать в буфер обмена", "no-data": "Нет данных", @@ -10611,6 +10621,7 @@ "title": "Новые элементы" }, "new-dashboard": { + "empty-title": "", "title": "Новый дашборд" }, "new-folder": { @@ -10776,7 +10787,8 @@ "aria-label": "Профиль" }, "quick-add": { - "aria-label": "Новое" + "aria-label": "Новое", + "new-template-dashboard-button": "" }, "rss-button": "Последние записи в блоге" }, @@ -11577,6 +11589,9 @@ "label-display-name": "Отображаемое имя", "placeholder-my-repository-connection": "Мое подключение к репозиторию", "text-loading-resource-information": "Загрузка информации о ресурсе...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} дашборд", "dashboards-count_few": "{{count}} дашборда", @@ -11631,11 +11646,8 @@ }, "connect-repository-button": { "configure": "Настроить", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_few": "", - "repository-limit-reached-tooltip_many": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Удалить", @@ -11732,6 +11744,13 @@ "unmanaged-resources_many": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Репозиторий" @@ -11870,10 +11889,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "После настройки будет создана новая папка Grafana, которая синхронизируется с внешним хранилищем. Если во внешнем хранилище есть ресурсы, они будут перемещены в эту новую папку. Все новые ресурсы, созданные в этой папке, будут храниться с присвоением версии во внешнем хранилище.", "label": "Синхронизировать внешнее хранилище с новой папкой Grafana", - "subtitle": "Используйте этот параметр для синхронизации внешних ресурсов в новой папке, не затрагивая остальную часть вашего экземпляра. Процесс можно повторить для 10 папок" + "subtitle": "" }, "instance": { "description": "Ресурсы будут синхронизироваться с внешним хранилищем и готовиться для этого экземпляра. При необходимости будут перенесены и объединены существующие ресурсы Grafana. После настройки все новые ресурсы и изменения будут храниться во внешнем хранилище и автоматически загружаться обратно в экземпляр.", @@ -12519,10 +12544,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Импорт", "new": "Новые элементы", "new-dashboard": "Новый дашборд", - "new-folder": "Новая папка" + "new-folder": "Новая папка", + "new-template-dashboard": "" }, "generate-columns": { "score": "Оценка" @@ -13502,17 +13529,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Фильтры диапазонов", - "name-critical-path-only": "Показать только критический путь", - "name-find-in-trace": "Найти в трассировке", - "name-max-duration": "Макс. продолжительность", - "name-min-duration": "Мин. продолжительность", - "name-service-name": "Имя службы", - "name-service-name-operator": "Оператор имени службы", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Показать только совпадения", - "name-span-name": "Имя диапазона", - "name-span-name-operator": "Оператор имени диапазона", - "name-tags": "Теги", "traces-panel": { "no-data-found-in-response": "Данные в ответе не найдены" } diff --git a/public/locales/sv-SE/grafana.json b/public/locales/sv-SE/grafana.json index ca5a9958cb2..b812e020369 100644 --- a/public/locales/sv-SE/grafana.json +++ b/public/locales/sv-SE/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Varningshanterare:", + "disabled-tooltip": "", "error": "Kunde inte ladda förhandsgranskning av routing för {{alertmanager}}", "initialized": "Baserat på de etiketter som lagts till dirigeras varningsinstanser till följande aviseringspolicyer. Utöka varje aviseringspolicy nedan för att se mer information.", "preview-routing": "Förhandsgranska dirigering", + "select-folder-tooltip": "", "text-loading-preview": "Laddar förhandsgranskning …", "title": "Förhandsgranskning av dirigering av varningsinstans", "uninitialized": "När du har valt din mapp och din fråga och etiketter har konfigurerats klickar du på ”Förhandsgranska dirigering” för att se resultaten här." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "Lägg till uttryck" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Ändra tema", "dark-theme": "Mörk", + "dashboard-from-template": "", "light-theme": "Ljus", "scopes": "Omfattningar" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Ny panel" } }, - "clear": "Rensa", "confirm-navigation-modal": { "cancel": "Avbryt", "new-tab": "Vill du fortsätta i den aktuella fliken eller öppna en ny flik?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Ingen volyminformation tillgänglig för de aktuella frågorna och tidsintervallet." }, - "next": "Nästa", "next-prev-result": { "aria-label-next": "Knapp för nästa resultat", "aria-label-prev": "Knapp för föregående resultat", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Laddar …" }, - "prev": "Tidigare", "queryless-apps-extensions": { "aria-label-go-queryless": "Kör utan frågor" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Frågeinspektör", "query-inspector-button-aria-label": "Frågeinspektör" }, - "show-critical-path-only": "Visa endast kritisk linje", - "show-matches-only": "Visa endast matchningar", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Ett segment på den <1>kritiska sökvägen för övergripande spårning/begäran/arbetsflöde." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "Öppna menyn för delning av spårningsalternativ", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Varaktighet", + "errors": "", + "errors-tooltip": "", "export-started": "Exporten startad", + "filters": "", "give-feedback": "Feedback", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Länk kopierad till urklipp", + "overview": "", "path": "Sökväg", "route": "Rutt", "services": "Tjänster", @@ -7574,11 +7589,6 @@ "trace-id": "Spårnings-ID", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Knappen Rensa filter", - "label-show-matches": "Växla Visa endast matchningar", - "label-show-paths": "Växla Visa endast kritisk sökväg" - }, "trace-view": { "aria-label-copy": "Kopiera till urklippet", "no-data": "Inga data", @@ -10523,6 +10533,7 @@ "title": "Nyhet" }, "new-dashboard": { + "empty-title": "", "title": "Ny instrumentpanel" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Nyhet" + "aria-label": "Nyhet", + "new-template-dashboard-button": "" }, "rss-button": "Senaste från bloggen" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Visningsnamn", "placeholder-my-repository-connection": "Min lagringsplatsanslutning", "text-loading-resource-information": "Läser in resursinformation …", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} kontrollpanel", "dashboards-count_other": "{{count}} kontrollpanel", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Konfigurera", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Ta bort", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Databas" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Efter installationen kommer en ny Grafana-mapp att skapas och synkroniseras med extern lagring. Om några resurser finns i extern lagring kommer de att provisioneras till den här nya mappen. Alla nya resurser som skapas i den här mappen kommer att sparas och versionshanteras i extern lagring.", "label": "Synkronisera extern lagring till en ny Grafana-mapp", - "subtitle": "Använd det här alternativet för att synkronisera externa resurser till en ny mapp utan att påverka resten av din instans. Du kan upprepa denna process för upp till 10 mappar." + "subtitle": "" }, "instance": { "description": "Resurser kommer att synkroniseras med extern lagring och provisioneras i den här instansen. Befintliga Grafana-resurser kommer att migreras och slås samman vid behov. Efter installationen sparas alla nya resurser och ändringar på extern lagring och provisioneras automatiskt tillbaka på instansen.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "Importera", "new": "Nyhet", "new-dashboard": "Ny instrumentpanel", - "new-folder": "Ny mapp" + "new-folder": "Ny mapp", + "new-template-dashboard": "" }, "generate-columns": { "score": "Betyg" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Intervallfilter", - "name-critical-path-only": "Visa endast kritisk linje", - "name-find-in-trace": "Hitta i spårning", - "name-max-duration": "Maximal varaktighet", - "name-min-duration": "Minimal varaktighet", - "name-service-name": "Namn på tjänst", - "name-service-name-operator": "Operator för tjänstnamn", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Visa endast matchningar", - "name-span-name": "Intervallnamn", - "name-span-name-operator": "Operator för intervallnamn", - "name-tags": "Taggar", "traces-panel": { "no-data-found-in-response": "Inga data hittades i svaret" } diff --git a/public/locales/tr-TR/grafana.json b/public/locales/tr-TR/grafana.json index aa75e2b6452..623fa1b7b26 100644 --- a/public/locales/tr-TR/grafana.json +++ b/public/locales/tr-TR/grafana.json @@ -1982,9 +1982,11 @@ }, "notification-preview": { "alertmanager": "Uyarı yöneticisi:", + "disabled-tooltip": "", "error": "{{alertmanager}} için yönlendirme ön izlemesi yüklenemedi", "initialized": "Eklenen etiketlere bağlı olarak uyarı örnekleri aşağıdaki bildirim politikalarına yönlendirilir. Daha fazla ayrıntı görmek için her bir bildirim politikasını genişletin.", "preview-routing": "Yönlendirmeyi ön izle", + "select-folder-tooltip": "", "text-loading-preview": "Ön izleme yükleniyor...", "title": "Uyarı örneği yönlendirme ön izlemesi", "uninitialized": "Klasörünüzü seçtikten sorgunuzu ve etiketlerinizi yapılandırdıktan sonra sonuçları burada görmek için \"Yönlendirme ön izlemesi\"ne tıklayın." @@ -2945,6 +2947,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2954,6 +2957,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2961,7 +2965,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "İfade ekle" @@ -4126,6 +4132,7 @@ "action": { "change-theme": "Temayı değiştir", "dark-theme": "Koyu", + "dashboard-from-template": "", "light-theme": "Açık", "scopes": "Kapsamlar" }, @@ -5712,6 +5719,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7041,7 +7052,6 @@ "new-panel": "Yeni Panel" } }, - "clear": "Temizle", "confirm-navigation-modal": { "cancel": "İptal et", "new-tab": "Mevcut sekmede devam etmek mi yoksa yeni sekme açmak mı istiyorsunuz?", @@ -7265,7 +7275,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "Mevcut sorgular ve zaman aralığı için birim bilgisi mevcut değil." }, - "next": "İleri", "next-prev-result": { "aria-label-next": "Sonraki sonuç düğmesi", "aria-label-prev": "Önceki sonuç düğmesi", @@ -7286,7 +7295,6 @@ "pane": { "loading-placeholder": "Yükleniyor..." }, - "prev": "Önceki", "queryless-apps-extensions": { "aria-label-go-queryless": "Sorgu olmadan devam et" }, @@ -7435,8 +7443,7 @@ "query-inspector-button": "Sorgu denetçisi", "query-inspector-button-aria-label": "Sorgu denetçisi" }, - "show-critical-path-only": "Sadece kritik yolu göster", - "show-matches-only": "Sadece eşleşenleri göster", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "Genel izleme/istek/iş akışındaki <1>kritik yol üzerinde bir segment." }, @@ -7556,10 +7563,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "", + "critical-path": "", + "critical-path-tooltip": "", "duration": "Süre", + "errors": "", + "errors-tooltip": "", "export-started": "Dışa aktarma işlemi başlatıldı", + "filters": "", "give-feedback": "Geri Bildirim", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "Bağlantı panoya kopyalandı", + "overview": "", "path": "Yol", "route": "Yol", "services": "Hizmetler", @@ -7574,11 +7589,6 @@ "trace-id": "İzleme kimliği", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "Filtreleri temizle düğmesi", - "label-show-matches": "Yalnızca eşleşmeleri göster anahtarı", - "label-show-paths": "Yalnızca kritik yolu göster anahtarı" - }, "trace-view": { "aria-label-copy": "", "no-data": "Veri yok", @@ -10523,6 +10533,7 @@ "title": "Yeni" }, "new-dashboard": { + "empty-title": "", "title": "Yeni pano" }, "new-folder": { @@ -10688,7 +10699,8 @@ "aria-label": "Profil" }, "quick-add": { - "aria-label": "Yeni" + "aria-label": "Yeni", + "new-template-dashboard-button": "" }, "rss-button": "Blog'tan son gönderiler" }, @@ -11483,6 +11495,9 @@ "label-display-name": "Görünen ad", "placeholder-my-repository-connection": "Depo bağlantım", "text-loading-resource-information": "Kaynak bilgileri yükleniyor...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_one": "{{count}} pano", "dashboards-count_other": "{{count}} pano", @@ -11531,9 +11546,8 @@ }, "connect-repository-button": { "configure": "Yapılandır", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_one": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "Sil", @@ -11626,6 +11640,13 @@ "unmanaged-resources_one": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "Depo" @@ -11764,10 +11785,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "Kurulumdan sonra yeni bir Grafana klasörü oluşturulacak ve harici depolama ile senkronize edilecek. Harici depolamada bulunan kaynaklar bu yeni klasöre sağlanacak. Bu klasörde oluşturulan tüm yeni kaynaklar haricî depolamada saklanacak ve sürümlendirilecektir.", "label": "Harici depolamayı yeni bir Grafana klasörüyle senkronize et", - "subtitle": "Bu seçeneği kullanarak örneğin geri kalan kısmını etkilemeden harici kaynakları yeni bir klasör ile senkronize edebilirsiniz. Bu işlemi en fazla 10 klasör için tekrarlayabilirsiniz." + "subtitle": "" }, "instance": { "description": "Kaynaklar harici depolama ile senkronize edilecek ve bu örneğe sağlanacaktır. Mevcut Grafana kaynakları gerekirse taşınacak ve birleştirilecektir. Kurulumdan sonra tüm yeni kaynaklar ve değişiklikler haricî depolamaya kaydedilecek ve otomatik olarak örneğe yansıtılacaktır.", @@ -12407,10 +12434,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "İçe aktar", "new": "Yeni", "new-dashboard": "Yeni pano", - "new-folder": "Yeni klasör" + "new-folder": "Yeni klasör", + "new-template-dashboard": "" }, "generate-columns": { "score": "Puan" @@ -13386,17 +13415,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "Zaman aralığı filtreleri", - "name-critical-path-only": "Sadece kritik yolu göster", - "name-find-in-trace": "İzlemede bul", - "name-max-duration": "Maks. süre", - "name-min-duration": "Min. süre", - "name-service-name": "Hizmet adı", - "name-service-name-operator": "Hizmet adı işleci", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "Sadece eşleşenleri göster", - "name-span-name": "Zaman aralığı adı", - "name-span-name-operator": "Zaman aralığı adı işleci", - "name-tags": "Etiketler", "traces-panel": { "no-data-found-in-response": "Yanıtta veri bulunamadı" } diff --git a/public/locales/zh-Hans/grafana.json b/public/locales/zh-Hans/grafana.json index 1335c1c2b33..d98a7024adf 100644 --- a/public/locales/zh-Hans/grafana.json +++ b/public/locales/zh-Hans/grafana.json @@ -1976,9 +1976,11 @@ }, "notification-preview": { "alertmanager": "Alertmanager:", + "disabled-tooltip": "", "error": "无法加载 {{alertmanager}} 的路由预览", "initialized": "根据添加的标签,提醒实例会被路由到以下通知策略。展开下面的每个通知策略以查看更多详细信息。", "preview-routing": "预览路由", + "select-folder-tooltip": "", "text-loading-preview": "正在加载预览...", "title": "提醒实例路由预览", "uninitialized": "选择文件夹并对查询和标签进行配置后,点击“预览路由”以在此处查看结果。" @@ -2933,6 +2935,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2942,6 +2945,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2949,7 +2953,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "添加表达式" @@ -4106,6 +4112,7 @@ "action": { "change-theme": "更改主题", "dark-theme": "深色", + "dashboard-from-template": "", "light-theme": "浅色", "scopes": "范围" }, @@ -5690,6 +5697,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7017,7 +7028,6 @@ "new-panel": "新面板" } }, - "clear": "清除", "confirm-navigation-modal": { "cancel": "取消", "new-tab": "您想在当前选项卡中继续,还是打开新的选项卡?", @@ -7241,7 +7251,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "没有可用于当前查询和时间范围的卷信息。" }, - "next": "下一步", "next-prev-result": { "aria-label-next": "下一个结果按钮", "aria-label-prev": "上一个结果按钮", @@ -7262,7 +7271,6 @@ "pane": { "loading-placeholder": "正在加载…" }, - "prev": "上一步", "queryless-apps-extensions": { "aria-label-go-queryless": "转为无查询" }, @@ -7409,8 +7417,7 @@ "query-inspector-button": "查询检查器", "query-inspector-button-aria-label": "查询检查器" }, - "show-critical-path-only": "仅显示关键路径", - "show-matches-only": "仅显示匹配项", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "整个跟踪/请求/工作流的<1>关键路径上的一个区段。" }, @@ -7530,10 +7537,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "打开共享跟踪选项菜单", + "critical-path": "", + "critical-path-tooltip": "", "duration": "时长", + "errors": "", + "errors-tooltip": "", "export-started": "导出已开始", + "filters": "", "give-feedback": "反馈", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "链接已复制到剪贴板", + "overview": "", "path": "路径", "route": "路由", "services": "服务", @@ -7548,11 +7563,6 @@ "trace-id": "跟踪 ID", "url": "URL" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "清除筛选按钮", - "label-show-matches": "“仅显示匹配项”开关", - "label-show-paths": "“仅显示关键路径”开关" - }, "trace-view": { "aria-label-copy": "复制到剪贴板", "no-data": "没有数据", @@ -10479,6 +10489,7 @@ "title": "新建" }, "new-dashboard": { + "empty-title": "", "title": "新建仪表板" }, "new-folder": { @@ -10644,7 +10655,8 @@ "aria-label": "个人资料" }, "quick-add": { - "aria-label": "新建" + "aria-label": "新建", + "new-template-dashboard-button": "" }, "rss-button": "最新博客" }, @@ -11436,6 +11448,9 @@ "label-display-name": "显示名称", "placeholder-my-repository-connection": "我的存储库连接", "text-loading-resource-information": "正在加载资源信息...", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_other": "{{count}} 个数据面板", "files-count_other": "{{count}} 个文件", @@ -11481,8 +11496,8 @@ }, "connect-repository-button": { "configure": "配置", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "删除", @@ -11573,6 +11588,13 @@ "all-resources-managed_other": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "存储库" @@ -11711,10 +11733,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "设置后,将创建一个新的 Grafana 文件夹,并与外部存储同步。如果外部存储中存在任何资源,它们将被预配到此新文件夹中。在此文件夹中创建的所有新资源都将存储在外部存储中并进行版本控制。", "label": "将外部存储同步到新的 Grafana 文件夹", - "subtitle": "使用此选项可将外部资源同步到新文件夹中,而不会影响实例的其余部分。您最多可以对 10 个文件夹重复此过程。" + "subtitle": "" }, "instance": { "description": "资源将与外部存储同步,并预配到此实例中。现有的 Grafana 资源将被迁移并在需要时合并。设置完成后,所有新资源和更改都将保存到外部存储中,并自动预配回实例。", @@ -12351,10 +12379,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "导入", "new": "新建", "new-dashboard": "新建仪表板", - "new-folder": "新建文件夹" + "new-folder": "新建文件夹", + "new-template-dashboard": "" }, "generate-columns": { "score": "分数" @@ -13328,17 +13358,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "跨度筛选条件", - "name-critical-path-only": "仅显示关键路径", - "name-find-in-trace": "在追踪中查找", - "name-max-duration": "最大持续时间", - "name-min-duration": "最小持续时间", - "name-service-name": "服务名称", - "name-service-name-operator": "服务名称操作符", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "仅显示匹配项", - "name-span-name": "跨度名称", - "name-span-name-operator": "跨度名称操作符", - "name-tags": "标记", "traces-panel": { "no-data-found-in-response": "回复中未找到数据" } diff --git a/public/locales/zh-Hant/grafana.json b/public/locales/zh-Hant/grafana.json index 9735fab1d4a..94d629e196d 100644 --- a/public/locales/zh-Hant/grafana.json +++ b/public/locales/zh-Hant/grafana.json @@ -1976,9 +1976,11 @@ }, "notification-preview": { "alertmanager": "警報管理:", + "disabled-tooltip": "", "error": "無法載入路由預覽:{{alertmanager}}", "initialized": "根據新增的標籤,警報執行個體被路由到以下通知策略。展開下方的每個通知政策以檢視更多詳細資訊。", "preview-routing": "預覽路由", + "select-folder-tooltip": "", "text-loading-preview": "正在載入預覽…", "title": "警報執行個體路由預覽", "uninitialized": "當您選擇了資料夾並且設定了查詢和標籤後,按一下「預覽路由」,即可在此處查看結果。" @@ -2933,6 +2935,7 @@ "triage": { "alert-instances": "", "error-loading-rule": "", + "firing-instances-count": "", "instance-details-drawer": { "instance-details": "" }, @@ -2942,6 +2945,7 @@ "no-matching-instances-with-filters": "", "open-in-sidebar": "", "open-rule-details": "", + "pending-instances-count": "", "rule-details": { "subtitle": "", "title": "" @@ -2949,7 +2953,9 @@ "rule-not-found": { "description": "", "title": "" - } + }, + "rules-with-firing-instances": "", + "rules-with-pending-instances": "" }, "type-selector-button": { "add-expression": "新增表達式" @@ -4106,6 +4112,7 @@ "action": { "change-theme": "變更主題", "dark-theme": "深色", + "dashboard-from-template": "", "light-theme": "淺色", "scopes": "範圍" }, @@ -5690,6 +5697,10 @@ "suggested-dashboards-subtitle": "", "suggested-dashboards-title": "", "suggested-dashboards-title-with-datasource": "", + "template-dashboard-modal": { + "description": "", + "title": "" + }, "view-all": "" }, "dashboard-links": { @@ -7017,7 +7028,6 @@ "new-panel": "新的面板" } }, - "clear": "清除", "confirm-navigation-modal": { "cancel": "取消", "new-tab": "您想在目前的分頁中繼續,還是打開新的分頁?", @@ -7241,7 +7251,6 @@ "logs-volumne-panel-list": { "body-no-logs-volume-available": "目前的查詢和時間範圍沒有可用的容量資訊。" }, - "next": "繼續", "next-prev-result": { "aria-label-next": "下一個結果按鈕", "aria-label-prev": "上一個結果按鈕", @@ -7262,7 +7271,6 @@ "pane": { "loading-placeholder": "正在載入…" }, - "prev": "上一頁", "queryless-apps-extensions": { "aria-label-go-queryless": "停用查詢" }, @@ -7409,8 +7417,7 @@ "query-inspector-button": "查詢檢查器", "query-inspector-button-aria-label": "查詢檢查器" }, - "show-critical-path-only": "僅顯示關鍵路徑", - "show-matches-only": "僅顯示符合項目", + "show-all-spans": "", "span-bar": { "tooltip-critical-path": "整體追蹤/請求/工作流程的<1>關鍵路徑上的區段。" }, @@ -7530,10 +7537,18 @@ }, "trace-page-header": { "aria-label-share-dropdown": "開啟分享追蹤選項選單", + "critical-path": "", + "critical-path-tooltip": "", "duration": "持續時間", + "errors": "", + "errors-tooltip": "", "export-started": "匯出已開始", + "filters": "", "give-feedback": "意見回饋", + "high-latency": "", + "high-latency-tooltip": "", "link-copied": "連結已復製到剪貼簿", + "overview": "", "path": "路徑", "route": "路徑", "services": "服務", @@ -7548,11 +7563,6 @@ "trace-id": "追蹤 ID", "url": "網址" }, - "trace-page-search-bar": { - "aria-label-clear-filters": "清除篩選條件按鈕", - "label-show-matches": "「僅顯示符合項目」切換", - "label-show-paths": "僅顯示關鍵路徑切換" - }, "trace-view": { "aria-label-copy": "複製至剪貼簿", "no-data": "沒有資料", @@ -10479,6 +10489,7 @@ "title": "新" }, "new-dashboard": { + "empty-title": "", "title": "新儀表板" }, "new-folder": { @@ -10644,7 +10655,8 @@ "aria-label": "個人資料" }, "quick-add": { - "aria-label": "新" + "aria-label": "新", + "new-template-dashboard-button": "" }, "rss-button": "部落格的最新消息" }, @@ -11436,6 +11448,9 @@ "label-display-name": "顯示名稱", "placeholder-my-repository-connection": "我的儲存庫連線", "text-loading-resource-information": "正在載入資源資訊…", + "unavailable-options": { + "title": "" + }, "unmanaged-resources-label": "", "dashboards-count_other": "{{count}} 個儀表板", "files-count_other": "{{count}} 個檔案", @@ -11481,8 +11496,8 @@ }, "connect-repository-button": { "configure": "設定", - "instance-fully-managed-tooltip": "", - "repository-limit-reached-tooltip_other": "" + "free-tier-limit-tooltip": "", + "instance-fully-managed-tooltip": "" }, "delete-repository-button": { "button-delete": "刪除", @@ -11573,6 +11588,13 @@ "all-resources-managed_other": "", "unmanaged-resources_other": "" }, + "free-tier-limit": { + "message": "", + "message-connection": "", + "message-resource": "", + "note": "", + "upgrade-link": "" + }, "get-default-values": { "title": { "repository": "存放庫" @@ -11711,10 +11733,16 @@ "truncated": "" }, "mode-options": { + "disabled": { + "folder-connected": "", + "legacy-storage": "", + "not-allowed": "", + "not-supported": "" + }, "folder": { "description": "設定後,將建立新的 Grafana 資料夾,並與外部儲存空間同步。如果外部儲存空間中存在任何資源,則會將其佈建到此新資料夾。在此資料夾中建立的所有新資源都將儲存在外部儲存空間中,並進行版本控制。", "label": "將外部儲存空間同步到新的 Grafana 資料夾", - "subtitle": "使用此選項將外部資源同步到新資料夾中,而不會影響您的其他執行個體。您最多可以對 10 個資料夾重複此流程。" + "subtitle": "" }, "instance": { "description": "資源將與外部儲存空間同步,並佈建到此執行個體中。現有的 Grafana 資源將在需要時移轉並合併。設定後,所有新資源和變更將儲存到外部儲存空間,並自動佈建回執行個體。", @@ -12351,10 +12379,12 @@ } }, "dashboard-actions": { + "empty-dashboard": "", "import": "匯入", "new": "新", "new-dashboard": "新儀表板", - "new-folder": "新資料夾" + "new-folder": "新資料夾", + "new-template-dashboard": "" }, "generate-columns": { "score": "分數" @@ -13328,17 +13358,20 @@ } }, "traces": { + "adhocFilters": { + "customValue": "", + "duration1h": "", + "duration1m": "", + "duration1ms": "", + "duration1s": "", + "durationLabel": "", + "textSearchDescription": "", + "textSearchLabel": "" + }, "category-span-filters": "範圍篩選器", - "name-critical-path-only": "僅顯示關鍵路徑", - "name-find-in-trace": "在追蹤中尋找", - "name-max-duration": "最大持續時間", - "name-min-duration": "最小持續時間", - "name-service-name": "服務名稱", - "name-service-name-operator": "服務名稱運算子", + "name-critical-path-only": "", + "name-filters": "", "name-show-matches-only": "僅顯示符合項目", - "name-span-name": "範圍名稱", - "name-span-name-operator": "範圍名稱運算子", - "name-tags": "標籤", "traces-panel": { "no-data-found-in-response": "回應中找不到資料" } From 8288ce6dd6da046af2d3156015f3f460fb125b51 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Mon, 17 Nov 2025 05:58:35 +0100 Subject: [PATCH 10/26] chore: reduce barrel files (#113842) chore: reduce barrelfiles --- .github/CODEOWNERS | 1 - eslint-suppressions.json | 5 ----- public/app/api/clients/folder/v1beta1/utils.ts | 2 +- public/app/app.ts | 2 +- public/app/core/app_events.ts | 2 -- .../app/core/components/AppChrome/AppChromeService.tsx | 2 +- public/app/core/components/AppChrome/MegaMenu/utils.ts | 2 +- .../AppChrome/TopBar/InviteUserButton.test.tsx | 4 ++-- .../AppChrome/TopBar/InviteUserButtonUtils.test.tsx | 4 ++-- .../AppChrome/TopBar/InviteUserButtonUtils.tsx | 2 +- .../core/components/AppChrome/TopBar/ProfileButton.tsx | 2 +- .../core/components/AppChrome/TopBar/SingleTopBar.tsx | 2 +- .../AppNotifications/AppNotificationList.test.tsx | 2 +- .../components/AppNotifications/AppNotificationList.tsx | 2 +- .../core/components/RolePicker/BuiltinRoleSelector.tsx | 2 +- public/app/core/components/RolePicker/TeamRolePicker.tsx | 2 +- public/app/core/components/RolePicker/UserRolePicker.tsx | 2 +- public/app/core/components/RolePicker/hooks.ts | 2 +- .../core/components/TimePicker/TimePickerWithHistory.tsx | 2 +- public/app/core/context/ModalsContextProvider.tsx | 2 +- public/app/core/core.ts | 8 -------- public/app/core/history/richHistoryStorageProvider.ts | 2 +- public/app/core/services/backend_srv.ts | 2 +- public/app/core/services/keybindingSrv.ts | 4 ++-- public/app/core/services/theme.ts | 4 ++-- public/app/core/utils/ConfigProvider.tsx | 2 +- public/app/features/actions/utils.ts | 2 +- public/app/features/admin/AdminEditOrgPage.tsx | 2 +- public/app/features/admin/AdminOrgsTable.tsx | 2 +- public/app/features/admin/EnterpriseAuthFeaturesCard.tsx | 2 +- public/app/features/admin/UserAdminPage.tsx | 2 +- public/app/features/admin/UserLdapSyncInfo.tsx | 2 +- public/app/features/admin/UserListAdminPage.tsx | 2 +- public/app/features/admin/UserOrgs.tsx | 2 +- public/app/features/admin/UserPermissions.tsx | 2 +- public/app/features/admin/UserProfile.tsx | 2 +- public/app/features/admin/UserSessions.tsx | 2 +- public/app/features/admin/Users/OrgUsersTable.test.tsx | 2 +- public/app/features/admin/Users/OrgUsersTable.tsx | 2 +- public/app/features/admin/api.ts | 2 +- public/app/features/admin/ldap/LdapGroupMapping.tsx | 2 +- public/app/features/admin/ldap/LdapPage.tsx | 2 +- public/app/features/admin/ldap/LdapTestDrawer.tsx | 2 +- public/app/features/admin/state/actions.ts | 2 +- public/app/features/alerting/unified/Analytics.ts | 2 +- public/app/features/alerting/unified/RuleList.test.tsx | 2 +- .../features/alerting/unified/api/alertSilencesApi.ts | 2 +- public/app/features/alerting/unified/api/alertingApi.ts | 2 +- .../unified/components/contact-points/ContactPoints.tsx | 2 +- .../unified/components/create-folder/CreateNewFolder.tsx | 2 +- .../components/notification-policies/Policy.test.tsx | 2 +- .../unified/components/rule-editor/VizWrapper.tsx | 2 +- .../rule-editor/alert-rule-form/AlertRuleForm.tsx | 2 +- .../rule-editor/query-and-alert-condition/utils.ts | 2 +- .../unified/components/rule-viewer/AlertRuleMenu.tsx | 2 +- .../unified/components/rules/Filter/RulesFilter.v1.tsx | 2 +- .../alerting/unified/rule-list/filter/RulesFilter.v2.tsx | 2 +- public/app/features/alerting/unified/utils/redux.ts | 2 +- public/app/features/apiserver/client.test.ts | 2 +- public/app/features/apiserver/client.ts | 2 +- .../app/features/auth-config/ProviderConfigForm.test.tsx | 2 +- public/app/features/auth-config/fields.tsx | 2 +- public/app/features/auth-config/index.ts | 2 +- public/app/features/auth-config/state/actions.ts | 2 +- .../browse-dashboards/BrowseDashboardsPage.test.tsx | 2 +- .../browse-dashboards/BrowseFolderAlertingPage.test.tsx | 2 +- .../BrowseFolderLibraryPanelsPage.test.tsx | 2 +- .../browse-dashboards/api/browseDashboardsAPI.ts | 4 ++-- public/app/features/browse-dashboards/api/services.ts | 2 +- .../components/BrowseActions/BrowseActions.tsx | 2 +- .../features/browse-dashboards/components/BrowseView.tsx | 2 +- .../components/FolderActionsButton.test.tsx | 2 +- .../browse-dashboards/components/FolderActionsButton.tsx | 2 +- .../components/RecentlyDeletedActions.tsx | 2 +- .../app/features/browse-dashboards/components/utils.ts | 2 +- public/app/features/browse-dashboards/permissions.ts | 2 +- public/app/features/canvas/runtime/scene.tsx | 2 +- .../AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx | 2 +- .../AdvisorRedirectNotice/AdvisorRedirectNotice.tsx | 2 +- .../ConnectionsRedirectNotice.tsx | 2 +- .../connections/tabs/ConnectData/ConnectData.test.tsx | 2 +- .../connections/tabs/ConnectData/ConnectData.tsx | 2 +- .../app/features/correlations/CorrelationsPage.test.tsx | 2 +- public/app/features/correlations/CorrelationsPage.tsx | 2 +- .../addToDashboard/AddToDashboardForm.tsx | 2 +- .../edit-pane/MultiSelectedObjectsEditableElement.tsx | 2 +- .../edit-pane/MultiSelectedVizPanelsEditableElement.tsx | 2 +- .../edit-pane/VizPanelEditableElement.tsx | 2 +- .../panel-edit/PanelDataPane/PanelDataAlertingTab.tsx | 2 +- .../panel-edit/PanelDataPane/PanelDataPane.tsx | 2 +- .../features/dashboard-scene/saving/useSaveDashboard.ts | 2 +- .../dashboard-scene/scene/AlertStatesDataLayer.ts | 2 +- .../dashboard-scene/scene/DashboardScene.test.tsx | 2 +- .../features/dashboard-scene/scene/DashboardScene.tsx | 2 +- .../dashboard-scene/scene/DashboardSceneUrlSync.ts | 2 +- .../scene/GoToSnapshotOriginButton.test.tsx | 2 +- .../dashboard-scene/scene/GoToSnapshotOriginButton.tsx | 2 +- .../features/dashboard-scene/scene/NavToolbarActions.tsx | 2 +- .../features/dashboard-scene/scene/PanelMenuBehavior.tsx | 2 +- .../dashboard-scene/scene/keyboardShortcuts.test.ts | 8 +++++--- .../features/dashboard-scene/scene/keyboardShortcuts.ts | 2 +- .../scene/layout-default/row-actions/RowActions.tsx | 2 +- .../dashboard-scene/scene/layout-rows/RowItem.tsx | 2 +- .../dashboard-scene/scene/layout-tabs/TabItem.tsx | 2 +- .../scene/layouts-shared/ungroupConfirmation.tsx | 2 +- .../dashboard-scene/scene/layouts-shared/utils.ts | 2 +- .../new-toolbar/actions/ShareExportDashboardButton.tsx | 2 +- .../serialization/transformSaveModelToScene.test.ts | 2 +- .../dashboard-scene/settings/PermissionsEditView.tsx | 2 +- public/app/features/dashboard-scene/settings/utils.ts | 2 +- .../dashboard-scene/sharing/ShareButton/ShareMenu.tsx | 2 +- .../EmailShare/ConfigEmailSharing/ConfigEmailSharing.tsx | 2 +- .../share-externally/EmailShare/CreateEmailSharing.tsx | 2 +- .../share-externally/PublicShare/CreatePublicSharing.tsx | 2 +- .../ShareButton/share-externally/ShareAlerts.test.tsx | 2 +- .../sharing/ShareButton/share-externally/ShareAlerts.tsx | 2 +- .../ShareButton/share-externally/ShareConfiguration.tsx | 2 +- .../ShareButton/share-externally/ShareExternally.tsx | 2 +- .../ShareButton/share-externally/ShareTypeSelect.tsx | 2 +- public/app/features/dashboard-scene/utils/urlBuilders.ts | 2 +- public/app/features/dashboard/api/legacy.ts | 2 +- .../features/dashboard/components/DashNav/DashNav.tsx | 2 +- .../dashboard/components/DashNav/DashNavTimeControls.tsx | 2 +- .../AccessControlDashboardPermissions.tsx | 2 +- .../dashboard/components/DashboardRow/DashboardRow.tsx | 2 +- .../dashboard/components/PanelEditor/PanelEditor.tsx | 2 +- .../components/SaveDashboard/useDashboardSave.tsx | 2 +- .../dashboard/components/ShareModal/ShareExport.tsx | 2 +- .../dashboard/components/ShareModal/ShareModal.tsx | 2 +- .../features/dashboard/containers/DashboardPage.test.tsx | 5 +---- .../features/dashboard/dashgrid/DashboardGrid.test.tsx | 2 +- public/app/features/dashboard/dashgrid/DashboardGrid.tsx | 2 +- .../features/dashboard/dashgrid/PanelStateWrapper.tsx | 2 +- .../features/dashboard/services/DashboardLoaderSrv.ts | 2 +- public/app/features/dashboard/services/SnapshotSrv.ts | 2 +- public/app/features/dashboard/services/TimeSrv.test.ts | 2 +- public/app/features/dashboard/services/TimeSrv.ts | 2 +- .../dashboard/state/DashboardModel.refresh.test.ts | 2 +- public/app/features/dashboard/state/DashboardModel.ts | 2 +- .../app/features/dashboard/state/initDashboard.test.ts | 9 ++++++++- public/app/features/dashboard/state/initDashboard.ts | 2 +- public/app/features/dashboard/utils/panel.ts | 2 +- .../datasources/components/DataSourceAddButton.tsx | 2 +- .../components/DataSourceTestingStatus.test.tsx | 2 +- .../datasources/components/DataSourceTestingStatus.tsx | 2 +- .../features/datasources/components/DataSourcesList.tsx | 2 +- .../features/datasources/components/EditDataSource.tsx | 2 +- .../datasources/components/EditDataSourceActions.tsx | 2 +- .../components/picker/AddNewDataSourceButton.tsx | 2 +- public/app/features/datasources/state/actions.test.ts | 6 +++--- public/app/features/datasources/state/actions.ts | 3 ++- public/app/features/datasources/state/hooks.ts | 4 ++-- public/app/features/datasources/state/navModel.ts | 2 +- public/app/features/explore/Explore.test.tsx | 4 ++-- public/app/features/explore/ExploreToolbar.tsx | 2 +- public/app/features/explore/NoDataSourceCallToAction.tsx | 2 +- .../explore/RichHistory/RichHistoryAddToLibrary.test.tsx | 2 +- .../explore/RichHistory/RichHistoryCard.test.tsx | 5 ----- .../explore/extensions/getExploreExtensionConfigs.tsx | 2 +- .../app/features/explore/spec/datasourceState.test.tsx | 4 ++-- public/app/features/explore/spec/interpolation.test.tsx | 4 ++-- public/app/features/explore/spec/queryHistory.test.tsx | 2 +- public/app/features/explore/spec/split.test.tsx | 4 ++-- public/app/features/explore/state/time.ts | 2 +- public/app/features/inspector/InspectJSONTab.tsx | 2 +- public/app/features/inspector/utils/utils.ts | 2 +- public/app/features/invites/SignupInvited.test.tsx | 2 +- public/app/features/invites/state/actions.ts | 2 +- public/app/features/live/dashboard/dashboardWatcher.ts | 3 ++- .../features/manage-dashboards/DashboardImportPage.tsx | 2 +- public/app/features/org/OrgDetailsPage.test.tsx | 5 ++--- public/app/features/org/OrgDetailsPage.tsx | 3 ++- public/app/features/org/OrgProfile.test.tsx | 2 +- public/app/features/org/OrgProfile.tsx | 2 +- public/app/features/org/UserInvitePage.tsx | 2 +- public/app/features/panel/components/PanelRenderer.tsx | 2 +- .../app/features/panel/panellinks/specs/link_srv.test.ts | 2 +- .../GetStartedWithPlugin/GetStartedWithApp.test.tsx | 4 ++-- .../GetStartedWithPlugin/GetStartedWithApp.tsx | 2 +- .../components/InstallControls/InstallControlsButton.tsx | 2 +- .../InstallControls/InstallControlsWarning.tsx | 2 +- .../plugins/admin/components/PluginDashboards.tsx | 2 +- .../plugins/admin/components/PluginSubtitle.test.tsx | 2 +- public/app/features/plugins/admin/helpers.ts | 2 +- .../plugins/admin/hooks/usePluginDetailsTabs.test.tsx | 2 +- .../plugins/admin/hooks/usePluginDetailsTabs.tsx | 2 +- .../features/plugins/admin/pages/PluginDetails.test.tsx | 4 ++-- public/app/features/plugins/admin/routes.tsx | 2 +- public/app/features/plugins/components/AppRootPage.tsx | 3 ++- public/app/features/plugins/datasource_srv.ts | 2 +- public/app/features/plugins/extensions/utils.test.tsx | 2 +- public/app/features/plugins/extensions/utils.tsx | 2 +- public/app/features/plugins/loader/sharedDependencies.ts | 3 ++- .../plugins/sandbox/sandboxPluginLoaderRegistry.ts | 2 +- public/app/features/profile/state/reducers.ts | 2 +- .../provisioning/hooks/useGetResourceRepositoryView.ts | 2 +- .../provisioning/hooks/useIsProvisionedInstance.ts | 2 +- public/app/features/search/page/components/columns.tsx | 2 +- public/app/features/search/service/unified.ts | 2 +- .../serviceaccounts/ServiceAccountCreatePage.test.tsx | 2 +- .../serviceaccounts/ServiceAccountCreatePage.tsx | 2 +- .../features/serviceaccounts/ServiceAccountPage.test.tsx | 4 ++-- .../app/features/serviceaccounts/ServiceAccountPage.tsx | 2 +- .../app/features/serviceaccounts/ServiceAccountTable.tsx | 2 +- .../serviceaccounts/ServiceAccountsListPage.test.tsx | 4 ++-- .../features/serviceaccounts/ServiceAccountsListPage.tsx | 2 +- .../serviceaccounts/components/ServiceAccountProfile.tsx | 2 +- .../serviceaccounts/components/ServiceAccountRoleRow.tsx | 2 +- .../components/ServiceAccountsListItem.tsx | 2 +- public/app/features/stars/hooks.ts | 2 +- public/app/features/support-bundles/SupportBundles.tsx | 2 +- public/app/features/teams/CreateTeam.tsx | 2 +- public/app/features/teams/TeamSettings.test.tsx | 2 +- public/app/features/teams/state/actions.ts | 2 +- public/app/features/users/UsersActionBar.test.tsx | 2 +- public/app/features/users/UsersActionBar.tsx | 2 +- public/app/features/users/UsersListPage.test.tsx | 2 +- public/app/features/users/UsersListPage.tsx | 2 +- public/app/features/users/state/actions.ts | 2 +- public/app/features/variables/state/actions.ts | 2 +- .../features/variables/state/onTimeRangeUpdated.test.ts | 2 +- public/app/plugins/datasource/grafana/utils.ts | 2 +- public/app/plugins/panel/annolist/AnnoListPanel.tsx | 2 +- public/app/plugins/panel/canvas/editor/element/utils.ts | 2 +- public/app/plugins/panel/canvas/utils.ts | 2 +- public/app/plugins/panel/dashlist/utils.ts | 2 +- .../app/plugins/panel/gettingstarted/GettingStarted.tsx | 2 +- public/test/jest-setup.ts | 4 ++-- 228 files changed, 257 insertions(+), 268 deletions(-) delete mode 100644 public/app/core/core.ts diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6adf2386d10..3cb63cf9969 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -836,7 +836,6 @@ playwright.storybook.config.ts @grafana/grafana-frontend-platform /public/app/core/constants.ts @grafana/grafana-frontend-platform /public/app/core/context/ @grafana/grafana-frontend-platform /public/app/core/copy/appNotification.ts @grafana/grafana-search-navigate-organise -/public/app/core/core.ts @grafana/grafana-frontend-platform /public/app/core/crash/ @grafana/observability-traces-and-profiling /public/app/core/history/ @grafana/observability-traces-and-profiling /public/app/core/hooks/useBusEvent.ts @grafana/grafana-frontend-platform diff --git a/eslint-suppressions.json b/eslint-suppressions.json index 3164290da20..87e831494aa 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -1276,11 +1276,6 @@ "count": 2 } }, - "public/app/core/core.ts": { - "no-barrel-files/no-barrel-files": { - "count": 7 - } - }, "public/app/core/navigation/types.ts": { "@typescript-eslint/no-explicit-any": { "count": 1 diff --git a/public/app/api/clients/folder/v1beta1/utils.ts b/public/app/api/clients/folder/v1beta1/utils.ts index 0944bd12e7e..e01cb67e809 100644 --- a/public/app/api/clients/folder/v1beta1/utils.ts +++ b/public/app/api/clients/folder/v1beta1/utils.ts @@ -3,7 +3,7 @@ import { AppEvents } from '@grafana/data'; import { t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; -import appEvents from '../../../../core/app_events'; +import { appEvents } from '../../../../core/app_events'; import { isProvisionedFolder } from '../../../../features/browse-dashboards/api/isProvisioned'; import { useDispatch } from '../../../../types/store'; diff --git a/public/app/app.ts b/public/app/app.ts index b95b60fac40..8c9c5167e42 100644 --- a/public/app/app.ts +++ b/public/app/app.ts @@ -57,7 +57,7 @@ import { getStandardTransformers } from 'app/features/transformers/standardTrans import getDefaultMonacoLanguages from '../lib/monaco-languages'; import { AppWrapper } from './AppWrapper'; -import appEvents from './core/app_events'; +import { appEvents } from './core/app_events'; import { AppChromeService } from './core/components/AppChrome/AppChromeService'; import { useChromeHeaderHeight } from './core/components/AppChrome/TopBar/useChromeHeaderHeight'; import { useHelpNode } from './core/components/AppChrome/TopBar/useHelpNode'; diff --git a/public/app/core/app_events.ts b/public/app/core/app_events.ts index 2c3552ec35b..63c51e78982 100644 --- a/public/app/core/app_events.ts +++ b/public/app/core/app_events.ts @@ -1,5 +1,3 @@ import { EventBusSrv, EventBusExtended } from '@grafana/data'; export const appEvents: EventBusExtended = new EventBusSrv(); - -export default appEvents; diff --git a/public/app/core/components/AppChrome/AppChromeService.tsx b/public/app/core/components/AppChrome/AppChromeService.tsx index cead7f68090..f3ab1b63c1b 100644 --- a/public/app/core/components/AppChrome/AppChromeService.tsx +++ b/public/app/core/components/AppChrome/AppChromeService.tsx @@ -4,7 +4,7 @@ import { BehaviorSubject } from 'rxjs'; import { AppEvents, NavModel, NavModelItem, PageLayoutType, UrlQueryValue } from '@grafana/data'; import { t } from '@grafana/i18n'; import { config, locationService, reportInteraction } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import store from 'app/core/store'; import { isShallowEqual } from 'app/core/utils/isShallowEqual'; import { KioskMode } from 'app/types/dashboard'; diff --git a/public/app/core/components/AppChrome/MegaMenu/utils.ts b/public/app/core/components/AppChrome/MegaMenu/utils.ts index 473e76ec834..b34aa2c8a08 100644 --- a/public/app/core/components/AppChrome/MegaMenu/utils.ts +++ b/public/app/core/components/AppChrome/MegaMenu/utils.ts @@ -7,7 +7,7 @@ import { MEGA_MENU_TOGGLE_ID } from 'app/core/constants'; import { HOME_NAV_ID } from 'app/core/reducers/navModel'; import { ShowModalReactEvent } from '../../../../types/events'; -import appEvents from '../../../app_events'; +import { appEvents } from '../../../app_events'; import { getFooterLinks } from '../../Footer/Footer'; import { HelpModal } from '../../help/HelpModal'; diff --git a/public/app/core/components/AppChrome/TopBar/InviteUserButton.test.tsx b/public/app/core/components/AppChrome/TopBar/InviteUserButton.test.tsx index d867c17488b..f5e66653ddb 100644 --- a/public/app/core/components/AppChrome/TopBar/InviteUserButton.test.tsx +++ b/public/app/core/components/AppChrome/TopBar/InviteUserButton.test.tsx @@ -2,7 +2,7 @@ import { render, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { config, reportInteraction } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getExternalUserMngLinkUrl } from 'app/features/users/utils'; import { InviteUserButton } from './InviteUserButton'; @@ -16,7 +16,7 @@ jest.mock('@grafana/runtime', () => ({ reportInteraction: jest.fn(), })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermission: jest.fn(), }, diff --git a/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.test.tsx b/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.test.tsx index cb4e3dddaff..9c7090102f9 100644 --- a/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.test.tsx +++ b/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.test.tsx @@ -1,6 +1,6 @@ import type { FeatureToggles } from '@grafana/data'; import { reportInteraction, config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getExternalUserMngLinkUrl } from 'app/features/users/utils'; import { AccessControlAction } from 'app/types/accessControl'; @@ -16,7 +16,7 @@ jest.mock('@grafana/runtime', () => ({ }, })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermission: jest.fn(), }, diff --git a/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.tsx b/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.tsx index 55cbb9157de..6e7d90bd879 100644 --- a/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.tsx +++ b/public/app/core/components/AppChrome/TopBar/InviteUserButtonUtils.tsx @@ -1,5 +1,5 @@ import { reportInteraction, config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getExternalUserMngLinkUrl } from 'app/features/users/utils'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/core/components/AppChrome/TopBar/ProfileButton.tsx b/public/app/core/components/AppChrome/TopBar/ProfileButton.tsx index 3bb3f81e561..7d003e8f0b3 100644 --- a/public/app/core/components/AppChrome/TopBar/ProfileButton.tsx +++ b/public/app/core/components/AppChrome/TopBar/ProfileButton.tsx @@ -6,7 +6,7 @@ import { GrafanaTheme2, NavModelItem } from '@grafana/data'; import { t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { Dropdown, Menu, MenuItem, ToolbarButton, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ThemeSelectorDrawer } from '../../ThemeSelector/ThemeSelectorDrawer'; import { enrichWithInteractionTracking } from '../MegaMenu/utils'; diff --git a/public/app/core/components/AppChrome/TopBar/SingleTopBar.tsx b/public/app/core/components/AppChrome/TopBar/SingleTopBar.tsx index f04222533f9..bf3681d9361 100644 --- a/public/app/core/components/AppChrome/TopBar/SingleTopBar.tsx +++ b/public/app/core/components/AppChrome/TopBar/SingleTopBar.tsx @@ -9,9 +9,9 @@ import { Icon, Stack, ToolbarButton, useStyles2 } from '@grafana/ui'; import { config } from 'app/core/config'; import { MEGA_MENU_TOGGLE_ID } from 'app/core/constants'; import { useGrafana } from 'app/core/context/GrafanaContext'; -import { contextSrv } from 'app/core/core'; import { useMediaQueryMinWidth } from 'app/core/hooks/useMediaQueryMinWidth'; import { HOME_NAV_ID } from 'app/core/reducers/navModel'; +import { contextSrv } from 'app/core/services/context_srv'; import { useSelector } from 'app/types/store'; import { Branding } from '../../Branding/Branding'; diff --git a/public/app/core/components/AppNotifications/AppNotificationList.test.tsx b/public/app/core/components/AppNotifications/AppNotificationList.test.tsx index c310a6c7f8d..61500e0cd4c 100644 --- a/public/app/core/components/AppNotifications/AppNotificationList.test.tsx +++ b/public/app/core/components/AppNotifications/AppNotificationList.test.tsx @@ -1,7 +1,7 @@ import { act, getWrapper, render, screen } from 'test/test-utils'; import { AppEvents } from '@grafana/data'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { KioskMode } from 'app/types/dashboard'; import { AppChromeService } from '../AppChrome/AppChromeService'; diff --git a/public/app/core/components/AppNotifications/AppNotificationList.tsx b/public/app/core/components/AppNotifications/AppNotificationList.tsx index 737e1f7cbf7..29cc9a4b0e3 100644 --- a/public/app/core/components/AppNotifications/AppNotificationList.tsx +++ b/public/app/core/components/AppNotifications/AppNotificationList.tsx @@ -5,7 +5,7 @@ import { useLocation } from 'react-router-dom'; import { AlertErrorPayload, AppEvents, GrafanaTheme2 } from '@grafana/data'; import { useStyles2, Stack } from '@grafana/ui'; import { notifyApp, hideAppNotification } from 'app/core/actions'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { useGrafana } from 'app/core/context/GrafanaContext'; import { selectVisible } from 'app/core/reducers/appNotification'; import { useSelector, useDispatch } from 'app/types/store'; diff --git a/public/app/core/components/RolePicker/BuiltinRoleSelector.tsx b/public/app/core/components/RolePicker/BuiltinRoleSelector.tsx index 70e18b2a9c8..1099ea2a475 100644 --- a/public/app/core/components/RolePicker/BuiltinRoleSelector.tsx +++ b/public/app/core/components/RolePicker/BuiltinRoleSelector.tsx @@ -1,7 +1,7 @@ import { OrgRole, SelectableValue } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { Icon, RadioButtonList, Tooltip, useStyles2, useTheme2, PopoverContent } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getStyles } from './styles'; diff --git a/public/app/core/components/RolePicker/TeamRolePicker.tsx b/public/app/core/components/RolePicker/TeamRolePicker.tsx index d7b35e4ee51..726868df237 100644 --- a/public/app/core/components/RolePicker/TeamRolePicker.tsx +++ b/public/app/core/components/RolePicker/TeamRolePicker.tsx @@ -1,7 +1,7 @@ import { useEffect } from 'react'; import { useAsyncFn } from 'react-use'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { RolePicker } from './RolePicker'; diff --git a/public/app/core/components/RolePicker/UserRolePicker.tsx b/public/app/core/components/RolePicker/UserRolePicker.tsx index 1855e3e53ba..0c19517d248 100644 --- a/public/app/core/components/RolePicker/UserRolePicker.tsx +++ b/public/app/core/components/RolePicker/UserRolePicker.tsx @@ -2,7 +2,7 @@ import { useEffect } from 'react'; import { useAsyncFn } from 'react-use'; import { OrgRole } from '@grafana/data'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { RolePicker } from './RolePicker'; diff --git a/public/app/core/components/RolePicker/hooks.ts b/public/app/core/components/RolePicker/hooks.ts index 0b66a36c94f..a7f8dc37329 100644 --- a/public/app/core/components/RolePicker/hooks.ts +++ b/public/app/core/components/RolePicker/hooks.ts @@ -3,7 +3,7 @@ import { useState } from 'react'; import { useDeepCompareEffect } from 'react-use'; import useAsync from 'react-use/lib/useAsync'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { fetchRoleOptions } from './api'; diff --git a/public/app/core/components/TimePicker/TimePickerWithHistory.tsx b/public/app/core/components/TimePicker/TimePickerWithHistory.tsx index 54b9cedf608..1c8ce90cbbf 100644 --- a/public/app/core/components/TimePicker/TimePickerWithHistory.tsx +++ b/public/app/core/components/TimePicker/TimePickerWithHistory.tsx @@ -3,7 +3,7 @@ import { uniqBy } from 'lodash'; import { AppEvents, DateTime, LocalStorageValueProvider, TimeRange, isDateTime, rangeUtil } from '@grafana/data'; import { t } from '@grafana/i18n'; import { TimeRangePickerProps, TimeRangePicker } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; const LOCAL_STORAGE_KEY = 'grafana.dashboard.timepicker.history'; const MAX_HISTORY_ITEMS = 4; diff --git a/public/app/core/context/ModalsContextProvider.tsx b/public/app/core/context/ModalsContextProvider.tsx index 69aea1874be..84d060637f2 100644 --- a/public/app/core/context/ModalsContextProvider.tsx +++ b/public/app/core/context/ModalsContextProvider.tsx @@ -7,7 +7,7 @@ import { ConfirmModal, ConfirmModalProps, ModalsContext } from '@grafana/ui'; import { ModalsContextState } from '@grafana/ui/internal'; import { ShowConfirmModalEvent, ShowModalReactEvent } from 'app/types/events'; -import appEvents from '../app_events'; +import { appEvents } from '../app_events'; export interface Props { children: React.ReactNode; diff --git a/public/app/core/core.ts b/public/app/core/core.ts deleted file mode 100644 index 7adfd4242b7..00000000000 --- a/public/app/core/core.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { colors, JsonExplorer } from '@grafana/ui'; - -import appEvents from './app_events'; -import { profiler } from './profiler'; -import { contextSrv } from './services/context_srv'; -import TimeSeries, { updateLegendValues } from './time_series2'; - -export { profiler, appEvents, colors, contextSrv, JsonExplorer, TimeSeries, updateLegendValues }; diff --git a/public/app/core/history/richHistoryStorageProvider.ts b/public/app/core/history/richHistoryStorageProvider.ts index 84defd0f001..41e598f4248 100644 --- a/public/app/core/history/richHistoryStorageProvider.ts +++ b/public/app/core/history/richHistoryStorageProvider.ts @@ -1,5 +1,5 @@ import { config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { SortOrder } from '../utils/richHistoryTypes'; diff --git a/public/app/core/services/backend_srv.ts b/public/app/core/services/backend_srv.ts index 2918263b6e4..4bef4433088 100644 --- a/public/app/core/services/backend_srv.ts +++ b/public/app/core/services/backend_srv.ts @@ -28,7 +28,7 @@ import { v4 as uuidv4 } from 'uuid'; import { AppEvents, DataQueryErrorType, deprecationWarning } from '@grafana/data'; import { BackendSrv as BackendService, BackendSrvRequest, config, FetchError, FetchResponse } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { getConfig } from 'app/core/config'; import { getSessionExpiry, hasSessionExpiry } from 'app/core/utils/auth'; import { loadUrlToken } from 'app/core/utils/urlToken'; diff --git a/public/app/core/services/keybindingSrv.ts b/public/app/core/services/keybindingSrv.ts index 9b4202b74dc..865f461ce84 100644 --- a/public/app/core/services/keybindingSrv.ts +++ b/public/app/core/services/keybindingSrv.ts @@ -1,7 +1,7 @@ import { toggleAssistant, isAssistantAvailable } from '@grafana/assistant'; import { LegacyGraphHoverClearEvent, SetPanelAttentionEvent, locationUtil } from '@grafana/data'; import { LocationService } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { getExploreUrl } from 'app/core/utils/explore'; import { toggleMockApiAndReload, togglePseudoLocale } from 'app/dev-utils'; import { SaveDashboardDrawer } from 'app/features/dashboard/components/SaveDashboard/SaveDashboardDrawer'; @@ -21,8 +21,8 @@ import { } from '../../types/events'; import { AppChromeService } from '../components/AppChrome/AppChromeService'; import { HelpModal } from '../components/help/HelpModal'; -import { contextSrv } from '../core'; import { RouteDescriptor } from '../navigation/types'; +import { contextSrv } from '../services/context_srv'; import { mousetrap } from './mousetrap'; import { toggleTheme } from './theme'; diff --git a/public/app/core/services/theme.ts b/public/app/core/services/theme.ts index 9dcbdb552e8..542aa1ab743 100644 --- a/public/app/core/services/theme.ts +++ b/public/app/core/services/theme.ts @@ -1,9 +1,9 @@ import { getThemeById } from '@grafana/data/internal'; import { ThemeChangedEvent } from '@grafana/runtime'; -import appEvents from '../app_events'; +import { appEvents } from '../app_events'; import { config } from '../config'; -import { contextSrv } from '../core'; +import { contextSrv } from '../services/context_srv'; import { PreferencesService } from './PreferencesService'; diff --git a/public/app/core/utils/ConfigProvider.tsx b/public/app/core/utils/ConfigProvider.tsx index 3f8ffd55050..2da6108d9a0 100644 --- a/public/app/core/utils/ConfigProvider.tsx +++ b/public/app/core/utils/ConfigProvider.tsx @@ -5,7 +5,7 @@ import { SkeletonTheme } from 'react-loading-skeleton'; import { GrafanaTheme2, ThemeContext } from '@grafana/data'; import { ThemeChangedEvent, config } from '@grafana/runtime'; -import { appEvents } from '../core'; +import { appEvents } from '../app_events'; import 'react-loading-skeleton/dist/skeleton.css'; diff --git a/public/app/features/actions/utils.ts b/public/app/features/actions/utils.ts index 011185c0244..aeb761cba39 100644 --- a/public/app/features/actions/utils.ts +++ b/public/app/features/actions/utils.ts @@ -17,7 +17,7 @@ import { ValueLinkConfig, } from '@grafana/data'; import { BackendSrvRequest, config as grafanaConfig, getBackendSrv } from '@grafana/runtime'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { HttpRequestMethod } from '../../plugins/panel/canvas/panelcfg.gen'; import { createAbsoluteUrl, RelativeUrl } from '../alerting/unified/utils/url'; diff --git a/public/app/features/admin/AdminEditOrgPage.tsx b/public/app/features/admin/AdminEditOrgPage.tsx index fb6039792dc..deb4bb7309c 100644 --- a/public/app/features/admin/AdminEditOrgPage.tsx +++ b/public/app/features/admin/AdminEditOrgPage.tsx @@ -7,7 +7,7 @@ import { NavModelItem, OrgRole } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Field, Input, Button, Legend, Alert } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { OrgUser } from 'app/types/user'; diff --git a/public/app/features/admin/AdminOrgsTable.tsx b/public/app/features/admin/AdminOrgsTable.tsx index d85dcccfea5..d75ba3c0058 100644 --- a/public/app/features/admin/AdminOrgsTable.tsx +++ b/public/app/features/admin/AdminOrgsTable.tsx @@ -6,7 +6,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Button, ConfirmModal, useStyles2 } from '@grafana/ui'; import { SkeletonComponent, attachSkeleton } from '@grafana/ui/unstable'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { Organization } from 'app/types/organization'; diff --git a/public/app/features/admin/EnterpriseAuthFeaturesCard.tsx b/public/app/features/admin/EnterpriseAuthFeaturesCard.tsx index d3387d46528..97b896fe9a2 100644 --- a/public/app/features/admin/EnterpriseAuthFeaturesCard.tsx +++ b/public/app/features/admin/EnterpriseAuthFeaturesCard.tsx @@ -7,8 +7,8 @@ import { t, Trans } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { Text, Stack, useStyles2, Button, LinkButton } from '@grafana/ui'; import { CloudEnterpriseBadge } from 'app/core/components/Branding/CloudEnterpriseBadge'; -import { contextSrv } from 'app/core/core'; import { backendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; export interface Props { page?: 'teams' | 'users'; diff --git a/public/app/features/admin/UserAdminPage.tsx b/public/app/features/admin/UserAdminPage.tsx index 1642c3259e8..3bd52f72f28 100644 --- a/public/app/features/admin/UserAdminPage.tsx +++ b/public/app/features/admin/UserAdminPage.tsx @@ -7,7 +7,7 @@ import { t } from '@grafana/i18n'; import { featureEnabled } from '@grafana/runtime'; import { Stack } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { SyncInfo } from 'app/types/ldap'; import { StoreState } from 'app/types/store'; diff --git a/public/app/features/admin/UserLdapSyncInfo.tsx b/public/app/features/admin/UserLdapSyncInfo.tsx index 4277fa4c814..9deb148ef43 100644 --- a/public/app/features/admin/UserLdapSyncInfo.tsx +++ b/public/app/features/admin/UserLdapSyncInfo.tsx @@ -3,7 +3,7 @@ import { memo } from 'react'; import { dateTimeFormat } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Button, LinkButton } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { SyncInfo } from 'app/types/ldap'; import { UserDTO } from 'app/types/user'; diff --git a/public/app/features/admin/UserListAdminPage.tsx b/public/app/features/admin/UserListAdminPage.tsx index 215fd281f3e..cd7695b1db8 100644 --- a/public/app/features/admin/UserListAdminPage.tsx +++ b/public/app/features/admin/UserListAdminPage.tsx @@ -7,7 +7,7 @@ import { selectors as e2eSelectors } from '@grafana/e2e-selectors/src'; import { Trans, t } from '@grafana/i18n'; import { LinkButton, RadioButtonGroup, useStyles2, FilterInput, EmptyState } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { StoreState } from 'app/types/store'; import { UserFilter } from 'app/types/user'; diff --git a/public/app/features/admin/UserOrgs.tsx b/public/app/features/admin/UserOrgs.tsx index a0169a1022a..221c7138f99 100644 --- a/public/app/features/admin/UserOrgs.tsx +++ b/public/app/features/admin/UserOrgs.tsx @@ -18,7 +18,7 @@ import { import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; import { fetchRoleOptions, updateUserRoles } from 'app/core/components/RolePicker/api'; import { OrgPicker, OrgSelectItem } from 'app/core/components/Select/OrgPicker'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction, Role } from 'app/types/accessControl'; import { Organization } from 'app/types/organization'; import { UserOrg, UserDTO } from 'app/types/user'; diff --git a/public/app/features/admin/UserPermissions.tsx b/public/app/features/admin/UserPermissions.tsx index 4d36d628768..95c04f871f8 100644 --- a/public/app/features/admin/UserPermissions.tsx +++ b/public/app/features/admin/UserPermissions.tsx @@ -4,7 +4,7 @@ import { useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { ConfirmButton, RadioButtonGroup, Icon, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ExternalUserTooltip } from 'app/features/admin/UserOrgs'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/admin/UserProfile.tsx b/public/app/features/admin/UserProfile.tsx index 1fb9da50d77..c2c4d98b0b9 100644 --- a/public/app/features/admin/UserProfile.tsx +++ b/public/app/features/admin/UserProfile.tsx @@ -4,7 +4,7 @@ import * as React from 'react'; import { Trans, t } from '@grafana/i18n'; import { Button, ConfirmButton, ConfirmModal, Input, LegacyInputStatus, Stack } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { UserDTO } from 'app/types/user'; diff --git a/public/app/features/admin/UserSessions.tsx b/public/app/features/admin/UserSessions.tsx index 16fadaa8313..b58722d8c04 100644 --- a/public/app/features/admin/UserSessions.tsx +++ b/public/app/features/admin/UserSessions.tsx @@ -3,8 +3,8 @@ import { memo, useRef, useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { ConfirmButton, ConfirmModal, Button, Stack } from '@grafana/ui'; import { TagBadge } from 'app/core/components/TagFilter/TagBadge'; -import { contextSrv } from 'app/core/core'; import { formatDate } from 'app/core/internationalization/dates'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { UserSession } from 'app/types/user'; diff --git a/public/app/features/admin/Users/OrgUsersTable.test.tsx b/public/app/features/admin/Users/OrgUsersTable.test.tsx index 8fa183441db..4e7589f613a 100644 --- a/public/app/features/admin/Users/OrgUsersTable.test.tsx +++ b/public/app/features/admin/Users/OrgUsersTable.test.tsx @@ -7,7 +7,7 @@ import { getMockUsers } from '../../users/mocks/userMocks'; import { OrgUsersTable, Props } from './OrgUsersTable'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermission: () => true, hasPermissionInMetadata: () => true, diff --git a/public/app/features/admin/Users/OrgUsersTable.tsx b/public/app/features/admin/Users/OrgUsersTable.tsx index 33d88211766..3debbd886a8 100644 --- a/public/app/features/admin/Users/OrgUsersTable.tsx +++ b/public/app/features/admin/Users/OrgUsersTable.tsx @@ -25,7 +25,7 @@ import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; import { fetchRoleOptions, updateUserRoles } from 'app/core/components/RolePicker/api'; import { RolePickerBadges } from 'app/core/components/RolePickerDrawer/RolePickerBadges'; import { TagBadge } from 'app/core/components/TagFilter/TagBadge'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction, Role } from 'app/types/accessControl'; import { OrgUser } from 'app/types/user'; diff --git a/public/app/features/admin/api.ts b/public/app/features/admin/api.ts index f1e4f5419d4..995b65e8cc0 100644 --- a/public/app/features/admin/api.ts +++ b/public/app/features/admin/api.ts @@ -1,6 +1,6 @@ import { UrlQueryValue } from '@grafana/data'; import { getBackendSrv } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { accessControlQueryParam } from 'app/core/utils/accessControl'; import { AccessControlAction } from 'app/types/accessControl'; import { OrgUser } from 'app/types/user'; diff --git a/public/app/features/admin/ldap/LdapGroupMapping.tsx b/public/app/features/admin/ldap/LdapGroupMapping.tsx index 1a7b8d9450a..572c4d4e391 100644 --- a/public/app/features/admin/ldap/LdapGroupMapping.tsx +++ b/public/app/features/admin/ldap/LdapGroupMapping.tsx @@ -3,7 +3,7 @@ import { useFormContext } from 'react-hook-form'; import { OrgRole, SelectableValue } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Box, Button, Field, Input, RadioButtonGroup, Switch } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { LdapPayload } from 'app/types/ldap'; const roleOptions: Array> = Object.keys(OrgRole).map((key) => { diff --git a/public/app/features/admin/ldap/LdapPage.tsx b/public/app/features/admin/ldap/LdapPage.tsx index 86e6c1f48dd..4718ef4c75e 100644 --- a/public/app/features/admin/ldap/LdapPage.tsx +++ b/public/app/features/admin/ldap/LdapPage.tsx @@ -6,8 +6,8 @@ import { Trans, t } from '@grafana/i18n'; import { featureEnabled } from '@grafana/runtime'; import { Alert, Button, Field, Input, Stack } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; import { GrafanaRouteComponentProps } from 'app/core/navigation/types'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { AppNotificationSeverity } from 'app/types/appNotifications'; import { useDispatch, useSelector } from 'app/types/store'; diff --git a/public/app/features/admin/ldap/LdapTestDrawer.tsx b/public/app/features/admin/ldap/LdapTestDrawer.tsx index 8a791dda530..b1f08c26a14 100644 --- a/public/app/features/admin/ldap/LdapTestDrawer.tsx +++ b/public/app/features/admin/ldap/LdapTestDrawer.tsx @@ -4,7 +4,7 @@ import { useForm } from 'react-hook-form'; import { Trans, t } from '@grafana/i18n'; import { featureEnabled } from '@grafana/runtime'; import { Alert, Button, Drawer, Field, Input, LoadingPlaceholder, Stack, Text } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { AppNotificationSeverity } from 'app/types/appNotifications'; import { useDispatch, useSelector } from 'app/types/store'; diff --git a/public/app/features/admin/state/actions.ts b/public/app/features/admin/state/actions.ts index 7dd57ea1e72..fd69597f059 100644 --- a/public/app/features/admin/state/actions.ts +++ b/public/app/features/admin/state/actions.ts @@ -4,7 +4,7 @@ import { dateTimeFormatTimeAgo } from '@grafana/data'; import { featureEnabled, getBackendSrv, isFetchError, locationService } from '@grafana/runtime'; import { FetchDataArgs } from '@grafana/ui'; import config from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { accessControlQueryParam } from 'app/core/utils/accessControl'; import { AccessControlAction } from 'app/types/accessControl'; import { LdapUser } from 'app/types/ldap'; diff --git a/public/app/features/alerting/unified/Analytics.ts b/public/app/features/alerting/unified/Analytics.ts index ad7708167c6..9ffbab35c42 100644 --- a/public/app/features/alerting/unified/Analytics.ts +++ b/public/app/features/alerting/unified/Analytics.ts @@ -1,7 +1,7 @@ import { pickBy } from 'lodash'; import { config, createMonitoringLogger, reportInteraction } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { RuleNamespace } from '../../../types/unified-alerting'; import { RulerRulesConfigDTO } from '../../../types/unified-alerting-dto'; diff --git a/public/app/features/alerting/unified/RuleList.test.tsx b/public/app/features/alerting/unified/RuleList.test.tsx index 905920cbf1d..f58aadb9afd 100644 --- a/public/app/features/alerting/unified/RuleList.test.tsx +++ b/public/app/features/alerting/unified/RuleList.test.tsx @@ -6,7 +6,7 @@ import { byRole, byTestId, byText } from 'testing-library-selector'; import { PluginExtensionTypes } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { locationService, setAppEvents, usePluginLinks } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { setupMswServer } from 'app/features/alerting/unified/mockApi'; import { setAlertmanagerChoices } from 'app/features/alerting/unified/mocks/server/configure'; import * as actions from 'app/features/alerting/unified/state/actions'; diff --git a/public/app/features/alerting/unified/api/alertSilencesApi.ts b/public/app/features/alerting/unified/api/alertSilencesApi.ts index b46b20a1938..463f142a123 100644 --- a/public/app/features/alerting/unified/api/alertSilencesApi.ts +++ b/public/app/features/alerting/unified/api/alertSilencesApi.ts @@ -1,5 +1,5 @@ import { AppEvents } from '@grafana/data'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { Silence, SilenceCreatePayload } from 'app/plugins/datasource/alertmanager/types'; import { alertingApi } from './alertingApi'; diff --git a/public/app/features/alerting/unified/api/alertingApi.ts b/public/app/features/alerting/unified/api/alertingApi.ts index 8c6852fb07a..321d1ed2525 100644 --- a/public/app/features/alerting/unified/api/alertingApi.ts +++ b/public/app/features/alerting/unified/api/alertingApi.ts @@ -4,7 +4,7 @@ import { lastValueFrom } from 'rxjs'; import { AppEvents } from '@grafana/data'; import { BackendSrvRequest, getBackendSrv } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { logMeasurement } from '../Analytics'; diff --git a/public/app/features/alerting/unified/components/contact-points/ContactPoints.tsx b/public/app/features/alerting/unified/components/contact-points/ContactPoints.tsx index 729644b8209..674521c483b 100644 --- a/public/app/features/alerting/unified/components/contact-points/ContactPoints.tsx +++ b/public/app/features/alerting/unified/components/contact-points/ContactPoints.tsx @@ -14,7 +14,7 @@ import { TabsBar, Text, } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { shouldUseK8sApi } from 'app/features/alerting/unified/utils/k8s/utils'; import { makeAMLink, stringifyErrorLike } from 'app/features/alerting/unified/utils/misc'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/alerting/unified/components/create-folder/CreateNewFolder.tsx b/public/app/features/alerting/unified/components/create-folder/CreateNewFolder.tsx index bd8be9665b2..94a5ecfe849 100644 --- a/public/app/features/alerting/unified/components/create-folder/CreateNewFolder.tsx +++ b/public/app/features/alerting/unified/components/create-folder/CreateNewFolder.tsx @@ -7,7 +7,7 @@ import { Trans, t } from '@grafana/i18n'; import { Button, Field, Input, Label, Modal, Stack, useStyles2 } from '@grafana/ui'; import { useCreateFolder } from 'app/api/clients/folder/v1beta1/hooks'; import { useAppNotification } from 'app/core/copy/appNotification'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { Folder } from '../../types/rule-form'; diff --git a/public/app/features/alerting/unified/components/notification-policies/Policy.test.tsx b/public/app/features/alerting/unified/components/notification-policies/Policy.test.tsx index 4e0c1d4ca4f..f27d5503d12 100644 --- a/public/app/features/alerting/unified/components/notification-policies/Policy.test.tsx +++ b/public/app/features/alerting/unified/components/notification-policies/Policy.test.tsx @@ -4,7 +4,7 @@ import { first, noop } from 'lodash'; import { Route, Routes } from 'react-router-dom-v5-compat'; import { render } from 'test/test-utils'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ReceiversState } from 'app/features/alerting/unified/types/alerting'; import { AlertmanagerGroup, diff --git a/public/app/features/alerting/unified/components/rule-editor/VizWrapper.tsx b/public/app/features/alerting/unified/components/rule-editor/VizWrapper.tsx index ee611ec51ed..aee6c25fef6 100644 --- a/public/app/features/alerting/unified/components/rule-editor/VizWrapper.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/VizWrapper.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2, PanelData, ThresholdsConfig, isTimeSeriesFrames } from ' import { Trans } from '@grafana/i18n'; import { GraphThresholdsStyleMode } from '@grafana/schema'; import { useStyles2 } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { GraphContainer } from 'app/features/explore/Graph/GraphContainer'; import { ExpressionResult } from '../expressions/Expression'; diff --git a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx index 6178509506b..85e72cca2d8 100644 --- a/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx +++ b/public/app/features/alerting/unified/components/rule-editor/alert-rule-form/AlertRuleForm.tsx @@ -8,7 +8,7 @@ import { Trans, t } from '@grafana/i18n'; import { config, locationService } from '@grafana/runtime'; import { Alert, Button, Stack, useStyles2 } from '@grafana/ui'; import { useAppNotification } from 'app/core/copy/appNotification'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import InfoPausedRule from 'app/features/alerting/unified/components/InfoPausedRule'; import { getRuleGroupLocationFromFormValues, diff --git a/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/utils.ts b/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/utils.ts index acfe52dfdb1..2c060edfc65 100644 --- a/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/utils.ts +++ b/public/app/features/alerting/unified/components/rule-editor/query-and-alert-condition/utils.ts @@ -1,4 +1,4 @@ -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ExpressionDatasourceUID } from 'app/features/expressions/types'; import { AccessControlAction } from 'app/types/accessControl'; import { AlertQuery } from 'app/types/unified-alerting-dto'; diff --git a/public/app/features/alerting/unified/components/rule-viewer/AlertRuleMenu.tsx b/public/app/features/alerting/unified/components/rule-viewer/AlertRuleMenu.tsx index a2536e2be23..a36a1fada67 100644 --- a/public/app/features/alerting/unified/components/rule-viewer/AlertRuleMenu.tsx +++ b/public/app/features/alerting/unified/components/rule-viewer/AlertRuleMenu.tsx @@ -4,7 +4,7 @@ import { AppEvents } from '@grafana/data'; import { t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { Button, ComponentSize, Dropdown, Menu } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import MenuItemPauseRule from 'app/features/alerting/unified/components/MenuItemPauseRule'; import MoreButton from 'app/features/alerting/unified/components/MoreButton'; import { useRulePluginLinkExtension } from 'app/features/alerting/unified/plugins/useRulePluginLinkExtensions'; diff --git a/public/app/features/alerting/unified/components/rules/Filter/RulesFilter.v1.tsx b/public/app/features/alerting/unified/components/rules/Filter/RulesFilter.v1.tsx index b36ff959fad..087a8120ff8 100644 --- a/public/app/features/alerting/unified/components/rules/Filter/RulesFilter.v1.tsx +++ b/public/app/features/alerting/unified/components/rules/Filter/RulesFilter.v1.tsx @@ -7,7 +7,7 @@ import { DataSourceInstanceSettings, GrafanaTheme2, SelectableValue } from '@gra import { Trans, t } from '@grafana/i18n'; import { Button, Field, Icon, Input, Label, RadioButtonGroup, Stack, Tooltip, useStyles2 } from '@grafana/ui'; import { DashboardPicker } from 'app/core/components/Select/DashboardPicker'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { PromAlertingRuleState, PromRuleType } from 'app/types/unified-alerting-dto'; diff --git a/public/app/features/alerting/unified/rule-list/filter/RulesFilter.v2.tsx b/public/app/features/alerting/unified/rule-list/filter/RulesFilter.v2.tsx index 70ed636bb7a..dde3e983ad9 100644 --- a/public/app/features/alerting/unified/rule-list/filter/RulesFilter.v2.tsx +++ b/public/app/features/alerting/unified/rule-list/filter/RulesFilter.v2.tsx @@ -20,7 +20,7 @@ import { useStyles2, useTheme2, } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import type { AdvancedFilters } from 'app/features/alerting/unified/rule-list/filter/types'; import { AccessControlAction } from 'app/types/accessControl'; import { PromAlertingRuleState, PromRuleType } from 'app/types/unified-alerting-dto'; diff --git a/public/app/features/alerting/unified/utils/redux.ts b/public/app/features/alerting/unified/utils/redux.ts index fec26b79e20..9e4153c40c8 100644 --- a/public/app/features/alerting/unified/utils/redux.ts +++ b/public/app/features/alerting/unified/utils/redux.ts @@ -2,7 +2,7 @@ import { AsyncThunk, Draft, PayloadAction, SerializedError, createSlice, isAsync import { AppEvents } from '@grafana/data'; import { FetchError, isFetchError } from '@grafana/runtime'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { LogMessages, logInfo } from '../Analytics'; diff --git a/public/app/features/apiserver/client.test.ts b/public/app/features/apiserver/client.test.ts index 2950f9b2b46..01787b4a18d 100644 --- a/public/app/features/apiserver/client.test.ts +++ b/public/app/features/apiserver/client.test.ts @@ -1,5 +1,5 @@ import { getBackendSrv } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { DatasourceAPIVersions, ScopedResourceClient } from './client'; import { GroupVersionResource } from './types'; diff --git a/public/app/features/apiserver/client.ts b/public/app/features/apiserver/client.ts index 9aeda6c53ea..2907fc9e80b 100644 --- a/public/app/features/apiserver/client.ts +++ b/public/app/features/apiserver/client.ts @@ -2,7 +2,7 @@ import { Observable, from, retry, catchError, filter, map, mergeMap } from 'rxjs import { isLiveChannelMessageEvent, LiveChannelScope } from '@grafana/data'; import { config, getBackendSrv, getGrafanaLiveSrv } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getAPINamespace } from '../../api/utils'; diff --git a/public/app/features/auth-config/ProviderConfigForm.test.tsx b/public/app/features/auth-config/ProviderConfigForm.test.tsx index c516b89237e..0f8acae795b 100644 --- a/public/app/features/auth-config/ProviderConfigForm.test.tsx +++ b/public/app/features/auth-config/ProviderConfigForm.test.tsx @@ -62,7 +62,7 @@ const testConfig: SSOProvider = { }, }; -jest.mock('app/core/core', () => { +jest.mock('app/core/services/context_srv', () => { return { contextSrv: { isGrafanaAdmin: true, diff --git a/public/app/features/auth-config/fields.tsx b/public/app/features/auth-config/fields.tsx index 96bb2e3ccea..7990c36168f 100644 --- a/public/app/features/auth-config/fields.tsx +++ b/public/app/features/auth-config/fields.tsx @@ -4,7 +4,7 @@ import { SelectableValue } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { TextLink } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ServerDiscoveryField } from './components/ServerDiscoveryField'; import { FieldData, SSOProvider, SSOSettingsField } from './types'; diff --git a/public/app/features/auth-config/index.ts b/public/app/features/auth-config/index.ts index 50599a8fb49..03a7146a983 100644 --- a/public/app/features/auth-config/index.ts +++ b/public/app/features/auth-config/index.ts @@ -1,6 +1,6 @@ import config from 'app/core/config'; -import { contextSrv } from 'app/core/core'; import { getBackendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { Settings, SettingsSection } from 'app/types/settings'; diff --git a/public/app/features/auth-config/state/actions.ts b/public/app/features/auth-config/state/actions.ts index bafd7f3c39d..ce62f0a6226 100644 --- a/public/app/features/auth-config/state/actions.ts +++ b/public/app/features/auth-config/state/actions.ts @@ -1,7 +1,7 @@ import { lastValueFrom } from 'rxjs'; import { getBackendSrv, isFetchError } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { Settings, UpdateSettingsQuery } from 'app/types/settings'; import { ThunkResult } from 'app/types/store'; diff --git a/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx b/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx index d05b97d6960..6ac3b775d0e 100644 --- a/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx +++ b/public/app/features/browse-dashboards/BrowseDashboardsPage.test.tsx @@ -7,8 +7,8 @@ import { selectors } from '@grafana/e2e-selectors'; import { config, setBackendSrv } from '@grafana/runtime'; import { setupMockServer } from '@grafana/test-utils/server'; import { getFolderFixtures } from '@grafana/test-utils/unstable'; -import { contextSrv } from 'app/core/core'; import { backendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import BrowseDashboardsPage from './BrowseDashboardsPage'; import * as permissions from './permissions'; diff --git a/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx b/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx index 69f2e539cab..a13a4af53b7 100644 --- a/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx +++ b/public/app/features/browse-dashboards/BrowseFolderAlertingPage.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from 'test/test-utils'; import { config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { setupMswServer } from 'app/features/alerting/unified/mockApi'; import { rulerTestDb } from '../alerting/unified/mocks/grafanaRulerApi'; diff --git a/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx b/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx index aeb5e352fc6..c09136e6485 100644 --- a/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx +++ b/public/app/features/browse-dashboards/BrowseFolderLibraryPanelsPage.test.tsx @@ -5,8 +5,8 @@ import { render, screen } from 'test/test-utils'; import { config, setBackendSrv } from '@grafana/runtime'; import server, { setupMockServer } from '@grafana/test-utils/server'; import { getFolderFixtures } from '@grafana/test-utils/unstable'; -import { contextSrv } from 'app/core/core'; import { backendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import BrowseFolderLibraryPanelsPage from './BrowseFolderLibraryPanelsPage'; import { getLibraryElementsResponse } from './fixtures/libraryElements.fixture'; diff --git a/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts b/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts index 313c74d6c33..51ff4423bc8 100644 --- a/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts +++ b/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts @@ -9,9 +9,9 @@ import { config, getBackendSrv, isFetchError, locationService } from '@grafana/r import { Dashboard } from '@grafana/schema'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2'; import { isProvisionedFolderCheck } from 'app/api/clients/folder/v1beta1/utils'; -import appEvents from 'app/core/app_events'; -import { contextSrv } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { setStarred } from 'app/core/reducers/navBarTree'; +import { contextSrv } from 'app/core/services/context_srv'; import { AnnoKeyFolder, Resource, ResourceList } from 'app/features/apiserver/types'; import { getDashboardAPI } from 'app/features/dashboard/api/dashboard_api'; import { isDashboardV2Resource, isV1DashboardCommand, isV2DashboardCommand } from 'app/features/dashboard/api/utils'; diff --git a/public/app/features/browse-dashboards/api/services.ts b/public/app/features/browse-dashboards/api/services.ts index 9bc948b89f5..98be615583b 100644 --- a/public/app/features/browse-dashboards/api/services.ts +++ b/public/app/features/browse-dashboards/api/services.ts @@ -1,4 +1,5 @@ import { getBackendSrv } from '@grafana/runtime'; +import { contextSrv } from 'app/core/services/context_srv'; import { GENERAL_FOLDER_UID } from 'app/features/search/constants'; import { getGrafanaSearcher } from 'app/features/search/service/searcher'; import { NestedFolderDTO } from 'app/features/search/service/types'; @@ -6,7 +7,6 @@ import { queryResultToViewItem } from 'app/features/search/service/utils'; import { DashboardViewItem } from 'app/features/search/types'; import { AccessControlAction } from 'app/types/accessControl'; -import { contextSrv } from '../../../core/core'; import { getFolderURL, isSharedWithMe } from '../components/utils'; export const PAGE_SIZE = 50; diff --git a/public/app/features/browse-dashboards/components/BrowseActions/BrowseActions.tsx b/public/app/features/browse-dashboards/components/BrowseActions/BrowseActions.tsx index 9ab6c750585..1c89c3c6dd4 100644 --- a/public/app/features/browse-dashboards/components/BrowseActions/BrowseActions.tsx +++ b/public/app/features/browse-dashboards/components/BrowseActions/BrowseActions.tsx @@ -3,7 +3,7 @@ import { useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { config, reportInteraction } from '@grafana/runtime'; import { Button, Drawer, Stack, Text } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { ManagerKind } from 'app/features/apiserver/types'; import { BulkDeleteProvisionedResource } from 'app/features/provisioning/components/BulkActions/BulkDeleteProvisionedResource'; import { BulkMoveProvisionedResource } from 'app/features/provisioning/components/BulkActions/BulkMoveProvisionedResource'; diff --git a/public/app/features/browse-dashboards/components/BrowseView.tsx b/public/app/features/browse-dashboards/components/BrowseView.tsx index 19b6ee383fc..b28204f4fe2 100644 --- a/public/app/features/browse-dashboards/components/BrowseView.tsx +++ b/public/app/features/browse-dashboards/components/BrowseView.tsx @@ -6,7 +6,7 @@ import { Trans, t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { CallToActionCard, EmptyState, LinkButton, TextLink } from '@grafana/ui'; import { useGetFrontendSettingsQuery } from 'app/api/clients/provisioning/v0alpha1'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { useIsProvisionedInstance } from 'app/features/provisioning/hooks/useIsProvisionedInstance'; import { useSearchStateManager } from 'app/features/search/state/SearchStateManager'; import { DashboardViewItem } from 'app/features/search/types'; diff --git a/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx b/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx index 15c9470edf0..c253fb0d186 100644 --- a/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx +++ b/public/app/features/browse-dashboards/components/FolderActionsButton.test.tsx @@ -2,7 +2,7 @@ import { render as rtlRender, screen } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; import { TestProvider } from 'test/helpers/TestProvider'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { ManagerKind } from 'app/features/apiserver/types'; import { ShowModalReactEvent } from 'app/types/events'; diff --git a/public/app/features/browse-dashboards/components/FolderActionsButton.tsx b/public/app/features/browse-dashboards/components/FolderActionsButton.tsx index 03e54a24122..664bc53c8c0 100644 --- a/public/app/features/browse-dashboards/components/FolderActionsButton.tsx +++ b/public/app/features/browse-dashboards/components/FolderActionsButton.tsx @@ -4,8 +4,8 @@ import { AppEvents } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { locationService, reportInteraction } from '@grafana/runtime'; import { Button, Drawer, Dropdown, Icon, Menu, MenuItem, Text } from '@grafana/ui'; +import { appEvents } from 'app/core/app_events'; import { Permissions } from 'app/core/components/AccessControl/Permissions'; -import { appEvents } from 'app/core/core'; import { RepoType } from 'app/features/provisioning/Wizard/types'; import { BulkMoveProvisionedResource } from 'app/features/provisioning/components/BulkActions/BulkMoveProvisionedResource'; import { DeleteProvisionedFolderForm } from 'app/features/provisioning/components/Folders/DeleteProvisionedFolderForm'; diff --git a/public/app/features/browse-dashboards/components/RecentlyDeletedActions.tsx b/public/app/features/browse-dashboards/components/RecentlyDeletedActions.tsx index 27db580b1b8..4bf40a06140 100644 --- a/public/app/features/browse-dashboards/components/RecentlyDeletedActions.tsx +++ b/public/app/features/browse-dashboards/components/RecentlyDeletedActions.tsx @@ -4,7 +4,7 @@ import { AppEvents } from '@grafana/data'; import { t, Trans } from '@grafana/i18n'; import { reportInteraction } from '@grafana/runtime'; import { Button, Stack } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { AnnoKeyFolder } from 'app/features/apiserver/types'; import { GENERAL_FOLDER_UID } from 'app/features/search/constants'; import { useDispatch } from 'app/types/store'; diff --git a/public/app/features/browse-dashboards/components/utils.ts b/public/app/features/browse-dashboards/components/utils.ts index 818b96ebba7..a6c97e4788f 100644 --- a/public/app/features/browse-dashboards/components/utils.ts +++ b/public/app/features/browse-dashboards/components/utils.ts @@ -1,5 +1,5 @@ import { config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ResourceRef } from 'app/features/provisioning/components/BulkActions/useBulkActionJob'; import { DashboardTreeSelection, DashboardViewItemWithUIItems, BrowseDashboardsPermissions } from '../types'; diff --git a/public/app/features/browse-dashboards/permissions.ts b/public/app/features/browse-dashboards/permissions.ts index 209080ed9cb..7580eb09c2f 100644 --- a/public/app/features/browse-dashboards/permissions.ts +++ b/public/app/features/browse-dashboards/permissions.ts @@ -1,4 +1,4 @@ -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { FolderDTO } from 'app/types/folders'; diff --git a/public/app/features/canvas/runtime/scene.tsx b/public/app/features/canvas/runtime/scene.tsx index 0ae5a52a7de..ad217e45337 100644 --- a/public/app/features/canvas/runtime/scene.tsx +++ b/public/app/features/canvas/runtime/scene.tsx @@ -34,7 +34,7 @@ import { Connections2 } from 'app/plugins/panel/canvas/components/connections/Co import { Options } from 'app/plugins/panel/canvas/panelcfg.gen'; import { AnchorPoint, CanvasTooltipPayload } from 'app/plugins/panel/canvas/types'; -import appEvents from '../../../core/app_events'; +import { appEvents } from '../../../core/app_events'; import { CanvasPanel } from '../../../plugins/panel/canvas/CanvasPanel'; import { isInfinityActionWithAuth } from '../../actions/utils'; import { getDashboardSrv } from '../../dashboard/services/DashboardSrv'; diff --git a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx index a63f5bcb004..5d0a24797f9 100644 --- a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx +++ b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.test.tsx @@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event'; import { PluginLoadingStrategy } from '@grafana/data'; import { config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AdvisorRedirectNotice } from './AdvisorRedirectNotice'; diff --git a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx index 7a4febad0a2..3257daac941 100644 --- a/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx +++ b/public/app/features/connections/components/AdvisorRedirectNotice/AdvisorRedirectNotice.tsx @@ -6,7 +6,7 @@ import { Trans, t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { UserStorage } from '@grafana/runtime/internal'; import { Alert, LinkButton, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; const getStyles = (theme: GrafanaTheme2) => ({ alertContent: css({ diff --git a/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx b/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx index 438868f7751..fd5d8791ea6 100644 --- a/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx +++ b/public/app/features/connections/components/ConnectionsRedirectNotice/ConnectionsRedirectNotice.tsx @@ -4,9 +4,9 @@ import { useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Alert, LinkButton, useStyles2 } from '@grafana/ui'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; -import { contextSrv } from '../../../../core/core'; import { ROUTES } from '../../constants'; const getStyles = (theme: GrafanaTheme2) => ({ diff --git a/public/app/features/connections/tabs/ConnectData/ConnectData.test.tsx b/public/app/features/connections/tabs/ConnectData/ConnectData.test.tsx index e04f9322794..ace47a44159 100644 --- a/public/app/features/connections/tabs/ConnectData/ConnectData.test.tsx +++ b/public/app/features/connections/tabs/ConnectData/ConnectData.test.tsx @@ -4,7 +4,7 @@ import { TestProvider } from 'test/helpers/TestProvider'; import { PluginType } from '@grafana/data'; import { locationService } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getCatalogPluginMock, getPluginsStateMock } from 'app/features/plugins/admin/mocks/mockHelpers'; import { CatalogPlugin } from 'app/features/plugins/admin/types'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/connections/tabs/ConnectData/ConnectData.tsx b/public/app/features/connections/tabs/ConnectData/ConnectData.tsx index 81e7d454f43..2cc9572f051 100644 --- a/public/app/features/connections/tabs/ConnectData/ConnectData.tsx +++ b/public/app/features/connections/tabs/ConnectData/ConnectData.tsx @@ -6,8 +6,8 @@ import { PluginType, GrafanaTheme2, SelectableValue } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { locationSearchToObject, reportInteraction } from '@grafana/runtime'; import { LoadingPlaceholder, EmptyState, Field, RadioButtonGroup, Tooltip, Combobox, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; +import { contextSrv } from 'app/core/services/context_srv'; import { HorizontalGroup } from 'app/features/plugins/admin/components/HorizontalGroup'; import { SearchField } from 'app/features/plugins/admin/components/SearchField'; import { Sorters } from 'app/features/plugins/admin/helpers'; diff --git a/public/app/features/correlations/CorrelationsPage.test.tsx b/public/app/features/correlations/CorrelationsPage.test.tsx index a57b901a2e4..f8938a14a94 100644 --- a/public/app/features/correlations/CorrelationsPage.test.tsx +++ b/public/app/features/correlations/CorrelationsPage.test.tsx @@ -17,7 +17,7 @@ import { setAppEvents, setDataSourceSrv, } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { contextSrv } from 'app/core/services/context_srv'; import { configureStore } from 'app/store/configureStore'; diff --git a/public/app/features/correlations/CorrelationsPage.tsx b/public/app/features/correlations/CorrelationsPage.tsx index 34859378863..459f3279053 100644 --- a/public/app/features/correlations/CorrelationsPage.tsx +++ b/public/app/features/correlations/CorrelationsPage.tsx @@ -20,8 +20,8 @@ import { TextLink, } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; import { useNavModel } from 'app/core/hooks/useNavModel'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { AddCorrelationForm } from './Forms/AddCorrelationForm'; diff --git a/public/app/features/dashboard-scene/addToDashboard/AddToDashboardForm.tsx b/public/app/features/dashboard-scene/addToDashboard/AddToDashboardForm.tsx index 85f3e47ae03..6086df476b9 100644 --- a/public/app/features/dashboard-scene/addToDashboard/AddToDashboardForm.tsx +++ b/public/app/features/dashboard-scene/addToDashboard/AddToDashboardForm.tsx @@ -8,7 +8,7 @@ import { reportInteraction } from '@grafana/runtime'; import { Panel } from '@grafana/schema'; import { Alert, Button, Field, Modal, RadioButtonGroup } from '@grafana/ui'; import { DashboardPicker } from 'app/core/components/Select/DashboardPicker'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { addToDashboard, SubmissionError } from './addToDashboard'; diff --git a/public/app/features/dashboard-scene/edit-pane/MultiSelectedObjectsEditableElement.tsx b/public/app/features/dashboard-scene/edit-pane/MultiSelectedObjectsEditableElement.tsx index 42166788955..55ff89add42 100644 --- a/public/app/features/dashboard-scene/edit-pane/MultiSelectedObjectsEditableElement.tsx +++ b/public/app/features/dashboard-scene/edit-pane/MultiSelectedObjectsEditableElement.tsx @@ -1,5 +1,5 @@ import { t } from '@grafana/i18n'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { OptionsPaneCategoryDescriptor } from 'app/features/dashboard/components/PanelEditor/OptionsPaneCategoryDescriptor'; import { ShowConfirmModalEvent } from 'app/types/events'; diff --git a/public/app/features/dashboard-scene/edit-pane/MultiSelectedVizPanelsEditableElement.tsx b/public/app/features/dashboard-scene/edit-pane/MultiSelectedVizPanelsEditableElement.tsx index 6586b2d877b..87651bf9e24 100644 --- a/public/app/features/dashboard-scene/edit-pane/MultiSelectedVizPanelsEditableElement.tsx +++ b/public/app/features/dashboard-scene/edit-pane/MultiSelectedVizPanelsEditableElement.tsx @@ -1,7 +1,7 @@ import { v4 as uuidv4 } from 'uuid'; import { t } from '@grafana/i18n'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { OptionsPaneCategoryDescriptor } from 'app/features/dashboard/components/PanelEditor/OptionsPaneCategoryDescriptor'; import { ShowConfirmModalEvent } from 'app/types/events'; diff --git a/public/app/features/dashboard-scene/edit-pane/VizPanelEditableElement.tsx b/public/app/features/dashboard-scene/edit-pane/VizPanelEditableElement.tsx index 1189d3fa2b7..200357fa881 100644 --- a/public/app/features/dashboard-scene/edit-pane/VizPanelEditableElement.tsx +++ b/public/app/features/dashboard-scene/edit-pane/VizPanelEditableElement.tsx @@ -4,7 +4,7 @@ import { Trans, t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { sceneGraph, VizPanel } from '@grafana/scenes'; import { Stack, Button } from '@grafana/ui'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { OptionsPaneCategoryDescriptor } from 'app/features/dashboard/components/PanelEditor/OptionsPaneCategoryDescriptor'; import { OptionsPaneItemDescriptor } from 'app/features/dashboard/components/PanelEditor/OptionsPaneItemDescriptor'; import { ShowConfirmModalEvent } from 'app/types/events'; diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataAlertingTab.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataAlertingTab.tsx index 5092547fc5c..345bb8ef811 100644 --- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataAlertingTab.tsx +++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataAlertingTab.tsx @@ -5,7 +5,7 @@ import { Trans, t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { SceneComponentProps, SceneObjectBase, SceneObjectRef, SceneObjectState, VizPanel } from '@grafana/scenes'; import { Alert, LoadingPlaceholder, Tab, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { RulesTable } from 'app/features/alerting/unified/components/rules/RulesTable'; import { usePanelCombinedRules } from 'app/features/alerting/unified/hooks/usePanelCombinedRules'; import { getRulesPermissions } from 'app/features/alerting/unified/utils/access-control'; diff --git a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx index 4e7d10fa22f..de5d15aca86 100644 --- a/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx +++ b/public/app/features/dashboard-scene/panel-edit/PanelDataPane/PanelDataPane.tsx @@ -13,7 +13,7 @@ import { } from '@grafana/scenes'; import { Container, ScrollContainer, TabContent, TabsBar, useStyles2 } from '@grafana/ui'; import { getConfig } from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getRulesPermissions } from 'app/features/alerting/unified/utils/access-control'; import { GRAFANA_RULES_SOURCE_NAME } from 'app/features/alerting/unified/utils/datasource'; diff --git a/public/app/features/dashboard-scene/saving/useSaveDashboard.ts b/public/app/features/dashboard-scene/saving/useSaveDashboard.ts index e9bb81b026d..1cb3527cd5b 100644 --- a/public/app/features/dashboard-scene/saving/useSaveDashboard.ts +++ b/public/app/features/dashboard-scene/saving/useSaveDashboard.ts @@ -5,7 +5,7 @@ import { t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { Dashboard } from '@grafana/schema'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { useAppNotification } from 'app/core/copy/appNotification'; import { updateDashboardName } from 'app/core/reducers/navBarTree'; import { useSaveDashboardMutation } from 'app/features/browse-dashboards/api/browseDashboardsAPI'; diff --git a/public/app/features/dashboard-scene/scene/AlertStatesDataLayer.ts b/public/app/features/dashboard-scene/scene/AlertStatesDataLayer.ts index f939f4a2a24..fc7039bb075 100644 --- a/public/app/features/dashboard-scene/scene/AlertStatesDataLayer.ts +++ b/public/app/features/dashboard-scene/scene/AlertStatesDataLayer.ts @@ -11,7 +11,7 @@ import { } from '@grafana/scenes'; import { notifyApp } from 'app/core/actions'; import { createErrorNotification } from 'app/core/copy/appNotification'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getMessageFromError } from 'app/core/utils/errors'; import { alertRuleApi } from 'app/features/alerting/unified/api/alertRuleApi'; import { ungroupRulesByFileName } from 'app/features/alerting/unified/api/prometheus'; diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx index 29478ca80a1..ebe63e8e43e 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.test.tsx @@ -23,7 +23,7 @@ import { } from '@grafana/scenes'; import { Dashboard, DashboardCursorSync, LibraryPanel } from '@grafana/schema'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { LS_PANEL_COPY_KEY } from 'app/core/constants'; import { AnnoKeyManagerKind, ManagerKind } from 'app/features/apiserver/types'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; diff --git a/public/app/features/dashboard-scene/scene/DashboardScene.tsx b/public/app/features/dashboard-scene/scene/DashboardScene.tsx index 087cd505fcd..1c75360a7b5 100644 --- a/public/app/features/dashboard-scene/scene/DashboardScene.tsx +++ b/public/app/features/dashboard-scene/scene/DashboardScene.tsx @@ -17,7 +17,7 @@ import { } from '@grafana/scenes'; import { Dashboard, DashboardLink, LibraryPanel } from '@grafana/schema'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { ScrollRefElement } from 'app/core/components/NativeScrollbar'; import { LS_PANEL_COPY_KEY } from 'app/core/constants'; import { getNavModel } from 'app/core/selectors/navModel'; diff --git a/public/app/features/dashboard-scene/scene/DashboardSceneUrlSync.ts b/public/app/features/dashboard-scene/scene/DashboardSceneUrlSync.ts index 2f8ab1d97cb..44c51dd4de7 100644 --- a/public/app/features/dashboard-scene/scene/DashboardSceneUrlSync.ts +++ b/public/app/features/dashboard-scene/scene/DashboardSceneUrlSync.ts @@ -1,5 +1,5 @@ import { SceneObjectUrlSyncHandler, SceneObjectUrlValues, VizPanel } from '@grafana/scenes'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { KioskMode } from 'app/types/dashboard'; import { buildPanelEditScene } from '../panel-edit/PanelEditor'; diff --git a/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.test.tsx b/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.test.tsx index 846e6090fad..86668be9b2e 100644 --- a/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.test.tsx +++ b/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.test.tsx @@ -3,7 +3,7 @@ import { fireEvent, render, screen } from '@testing-library/react'; import { config, locationService } from '@grafana/runtime'; import { ConfirmModal } from '@grafana/ui'; -import appEvents from '../../../core/app_events'; +import { appEvents } from '../../../core/app_events'; import { ShowModalReactEvent } from '../../../types/events'; import { GoToSnapshotOriginButton } from './GoToSnapshotOriginButton'; diff --git a/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.tsx b/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.tsx index b384ecacbbf..2efcad5a256 100644 --- a/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.tsx +++ b/public/app/features/dashboard-scene/scene/GoToSnapshotOriginButton.tsx @@ -5,7 +5,7 @@ import { t } from '@grafana/i18n'; import { config, locationService } from '@grafana/runtime'; import { ConfirmModal, ToolbarButton } from '@grafana/ui'; -import appEvents from '../../../core/app_events'; +import { appEvents } from '../../../core/app_events'; import { ShowModalReactEvent } from '../../../types/events'; export function GoToSnapshotOriginButton(props: { originalURL: string }) { diff --git a/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx b/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx index 08793bf546f..68ccadaba13 100644 --- a/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx +++ b/public/app/features/dashboard-scene/scene/NavToolbarActions.tsx @@ -19,7 +19,7 @@ import { import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; import { NavToolbarSeparator } from 'app/core/components/AppChrome/NavToolbar/NavToolbarSeparator'; import { LS_PANEL_COPY_KEY } from 'app/core/constants'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; import { trackDashboardSceneEditButtonClicked } from 'app/features/dashboard-scene/utils/tracking'; import { playlistSrv } from 'app/features/playlist/PlaylistSrv'; diff --git a/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx b/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx index 8a5502115a8..91977adce00 100644 --- a/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx +++ b/public/app/features/dashboard-scene/scene/PanelMenuBehavior.tsx @@ -15,7 +15,7 @@ import { t } from '@grafana/i18n'; import { config, locationService } from '@grafana/runtime'; import { LocalValueVariable, sceneGraph, VizPanel, VizPanelMenu } from '@grafana/scenes'; import { DataQuery, OptionsWithLegend } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { createErrorNotification } from 'app/core/copy/appNotification'; import { notifyApp } from 'app/core/reducers/appNotification'; import { contextSrv } from 'app/core/services/context_srv'; diff --git a/public/app/features/dashboard-scene/scene/keyboardShortcuts.test.ts b/public/app/features/dashboard-scene/scene/keyboardShortcuts.test.ts index 27573069fa3..856f8df3193 100644 --- a/public/app/features/dashboard-scene/scene/keyboardShortcuts.test.ts +++ b/public/app/features/dashboard-scene/scene/keyboardShortcuts.test.ts @@ -1,7 +1,7 @@ import { LegacyGraphHoverClearEvent } from '@grafana/data'; import { behaviors, sceneGraph, SceneTimeRange } from '@grafana/scenes'; import { DashboardCursorSync } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { KeybindingSet } from 'app/core/services/KeybindingSet'; import { DashboardScene } from './DashboardScene'; @@ -9,8 +9,10 @@ import { setupKeyboardShortcuts } from './keyboardShortcuts'; // Mock dependencies jest.mock('app/core/app_events', () => ({ - subscribe: jest.fn(() => ({ unsubscribe: jest.fn() })), - publish: jest.fn(), + appEvents: { + subscribe: jest.fn(() => ({ unsubscribe: jest.fn() })), + publish: jest.fn(), + }, })); jest.mock('app/core/services/KeybindingSet'); const mockOnRefresh = jest.fn(); diff --git a/public/app/features/dashboard-scene/scene/keyboardShortcuts.ts b/public/app/features/dashboard-scene/scene/keyboardShortcuts.ts index 0da6f08c2bc..b6ebf75bf44 100644 --- a/public/app/features/dashboard-scene/scene/keyboardShortcuts.ts +++ b/public/app/features/dashboard-scene/scene/keyboardShortcuts.ts @@ -1,7 +1,7 @@ import { locationUtil, SetPanelAttentionEvent, LegacyGraphHoverClearEvent } from '@grafana/data'; import { config, locationService } from '@grafana/runtime'; import { behaviors, sceneGraph, VizPanel } from '@grafana/scenes'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { KeybindingSet } from 'app/core/services/KeybindingSet'; import { contextSrv } from 'app/core/services/context_srv'; import { InspectTab } from 'app/features/inspector/types'; diff --git a/public/app/features/dashboard-scene/scene/layout-default/row-actions/RowActions.tsx b/public/app/features/dashboard-scene/scene/layout-default/row-actions/RowActions.tsx index 5b715086108..da2cf13377b 100644 --- a/public/app/features/dashboard-scene/scene/layout-default/row-actions/RowActions.tsx +++ b/public/app/features/dashboard-scene/scene/layout-default/row-actions/RowActions.tsx @@ -1,6 +1,6 @@ import { t } from '@grafana/i18n'; import { sceneGraph, SceneGridRow, SceneObjectBase, SceneObjectState } from '@grafana/scenes'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { ShowConfirmModalEvent } from 'app/types/events'; import { DefaultGridLayoutManager } from '../DefaultGridLayoutManager'; diff --git a/public/app/features/dashboard-scene/scene/layout-rows/RowItem.tsx b/public/app/features/dashboard-scene/scene/layout-rows/RowItem.tsx index 49a76045502..4568db703d0 100644 --- a/public/app/features/dashboard-scene/scene/layout-rows/RowItem.tsx +++ b/public/app/features/dashboard-scene/scene/layout-rows/RowItem.tsx @@ -12,7 +12,7 @@ import { SceneGridLayout, } from '@grafana/scenes'; import { RowsLayoutRowKind } from '@grafana/schema/dist/esm/schema/dashboard/v2'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { LS_ROW_COPY_KEY } from 'app/core/constants'; import store from 'app/core/store'; import kbn from 'app/core/utils/kbn'; diff --git a/public/app/features/dashboard-scene/scene/layout-tabs/TabItem.tsx b/public/app/features/dashboard-scene/scene/layout-tabs/TabItem.tsx index 5db9caebbf6..8ee0b26633f 100644 --- a/public/app/features/dashboard-scene/scene/layout-tabs/TabItem.tsx +++ b/public/app/features/dashboard-scene/scene/layout-tabs/TabItem.tsx @@ -12,8 +12,8 @@ import { SceneGridLayout, } from '@grafana/scenes'; import { TabsLayoutTabKind } from '@grafana/schema/dist/esm/schema/dashboard/v2'; +import { appEvents } from 'app/core/app_events'; import { LS_TAB_COPY_KEY } from 'app/core/constants'; -import { appEvents } from 'app/core/core'; import store from 'app/core/store'; import kbn from 'app/core/utils/kbn'; import { ShowConfirmModalEvent } from 'app/types/events'; diff --git a/public/app/features/dashboard-scene/scene/layouts-shared/ungroupConfirmation.tsx b/public/app/features/dashboard-scene/scene/layouts-shared/ungroupConfirmation.tsx index 83be1a668f5..9c090997722 100644 --- a/public/app/features/dashboard-scene/scene/layouts-shared/ungroupConfirmation.tsx +++ b/public/app/features/dashboard-scene/scene/layouts-shared/ungroupConfirmation.tsx @@ -1,5 +1,5 @@ import { t } from '@grafana/i18n'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { ShowConfirmModalEvent, ShowModalReactEvent } from 'app/types/events'; import { ConvertMixedGridsModal } from '../layout-rows/ConvertMixedGridsModal'; diff --git a/public/app/features/dashboard-scene/scene/layouts-shared/utils.ts b/public/app/features/dashboard-scene/scene/layouts-shared/utils.ts index 2c1bd487a56..c3ba4dfa0e8 100644 --- a/public/app/features/dashboard-scene/scene/layouts-shared/utils.ts +++ b/public/app/features/dashboard-scene/scene/layouts-shared/utils.ts @@ -1,7 +1,7 @@ import { useEffect, useRef } from 'react'; import { SceneObject } from '@grafana/scenes'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { DashboardLayoutManager, isDashboardLayoutManager } from '../types/DashboardLayoutManager'; import { isLayoutParent } from '../types/LayoutParent'; diff --git a/public/app/features/dashboard-scene/scene/new-toolbar/actions/ShareExportDashboardButton.tsx b/public/app/features/dashboard-scene/scene/new-toolbar/actions/ShareExportDashboardButton.tsx index 0eb3d21f85c..e37f080ef39 100644 --- a/public/app/features/dashboard-scene/scene/new-toolbar/actions/ShareExportDashboardButton.tsx +++ b/public/app/features/dashboard-scene/scene/new-toolbar/actions/ShareExportDashboardButton.tsx @@ -2,7 +2,7 @@ import { ReactElement, useState } from 'react'; import { t } from '@grafana/i18n'; import { Button, ButtonGroup, Dropdown } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { ShowConfirmModalEvent } from 'app/types/events'; import { ToolbarActionProps } from '../types'; diff --git a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts index a37dcd2fbae..0bcea1e0ecd 100644 --- a/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts +++ b/public/app/features/dashboard-scene/serialization/transformSaveModelToScene.test.ts @@ -20,7 +20,7 @@ import { RowPanel, VariableType, } from '@grafana/schema'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { createPanelSaveModel } from 'app/features/dashboard/state/__fixtures__/dashboardFixtures'; diff --git a/public/app/features/dashboard-scene/settings/PermissionsEditView.tsx b/public/app/features/dashboard-scene/settings/PermissionsEditView.tsx index 71528deb12d..1f895605824 100644 --- a/public/app/features/dashboard-scene/settings/PermissionsEditView.tsx +++ b/public/app/features/dashboard-scene/settings/PermissionsEditView.tsx @@ -2,7 +2,7 @@ import { PageLayoutType } from '@grafana/data'; import { SceneComponentProps, SceneObjectBase } from '@grafana/scenes'; import { Permissions } from 'app/core/components/AccessControl/Permissions'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { DashboardScene } from '../scene/DashboardScene'; diff --git a/public/app/features/dashboard-scene/settings/utils.ts b/public/app/features/dashboard-scene/settings/utils.ts index 88011f08b00..d9fe0cbbd99 100644 --- a/public/app/features/dashboard-scene/settings/utils.ts +++ b/public/app/features/dashboard-scene/settings/utils.ts @@ -3,8 +3,8 @@ import { useLocation } from 'react-router-dom-v5-compat'; import { locationUtil, NavModelItem } from '@grafana/data'; import { t } from '@grafana/i18n'; import { SceneObject, SceneObjectState } from '@grafana/scenes'; -import { contextSrv } from 'app/core/core'; import { getNavModel } from 'app/core/selectors/navModel'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { useSelector } from 'app/types/store'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/ShareMenu.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/ShareMenu.tsx index 0a50fb9530e..9eb48d32b88 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/ShareMenu.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/ShareMenu.tsx @@ -6,7 +6,7 @@ import { t } from '@grafana/i18n'; import { config, locationService } from '@grafana/runtime'; import { VizPanel } from '@grafana/scenes'; import { IconName, Menu } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { isPublicDashboardsEnabled } from '../../../dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/ConfigEmailSharing/ConfigEmailSharing.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/ConfigEmailSharing/ConfigEmailSharing.tsx index 4d6ca049b89..2b22a598372 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/ConfigEmailSharing/ConfigEmailSharing.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/ConfigEmailSharing/ConfigEmailSharing.tsx @@ -3,7 +3,7 @@ import { useForm } from 'react-hook-form'; import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { Button, Divider, Field, FieldSet, Icon, Input, Stack, Tooltip } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { publicDashboardApi, useAddRecipientMutation } from 'app/features/dashboard/api/publicDashboardApi'; import { validEmailRegex } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/CreateEmailSharing.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/CreateEmailSharing.tsx index 4c482660047..e55d1a7f1bd 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/CreateEmailSharing.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/EmailShare/CreateEmailSharing.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { Button, Checkbox, FieldSet, Spinner, Stack, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { useCreatePublicDashboardMutation } from 'app/features/dashboard/api/publicDashboardApi'; import { PublicDashboardShareType } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/PublicShare/CreatePublicSharing.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/PublicShare/CreatePublicSharing.tsx index c871537e4c4..91c724c59f2 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/PublicShare/CreatePublicSharing.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/PublicShare/CreatePublicSharing.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { Button, Checkbox, FieldSet, Spinner, Stack, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { useCreatePublicDashboardMutation } from 'app/features/dashboard/api/publicDashboardApi'; import { PublicDashboardShareType } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.test.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.test.tsx index 2dab2d48804..d33f76b2dbf 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.test.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.test.tsx @@ -10,7 +10,7 @@ import { VizPanel, VizPanelState, } from '@grafana/scenes'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { DashboardScene, DashboardSceneState } from 'app/features/dashboard-scene/scene/DashboardScene'; import { DefaultGridLayoutManager } from 'app/features/dashboard-scene/scene/layout-default/DefaultGridLayoutManager'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.tsx index 6c7b0d55ec7..98788952bff 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareAlerts.tsx @@ -1,4 +1,4 @@ -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { EmailSharingPricingAlert } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/ModalAlerts/EmailSharingPricingAlert'; import { UnsupportedDataSourcesAlert } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/ModalAlerts/UnsupportedDataSourcesAlert'; import { UnsupportedTemplateVariablesAlert } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/ModalAlerts/UnsupportedTemplateVariablesAlert'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareConfiguration.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareConfiguration.tsx index 62d22223663..5cde7883b05 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareConfiguration.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareConfiguration.tsx @@ -6,7 +6,7 @@ import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { sceneGraph } from '@grafana/scenes'; import { FieldSet, Icon, Label, Spinner, Stack, Switch, Text, TimeRangeLabel, Tooltip, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { publicDashboardApi, useUpdatePublicDashboardMutation } from 'app/features/dashboard/api/publicDashboardApi'; import { ConfigPublicDashboardForm } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/ConfigPublicDashboard/ConfigPublicDashboard'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareExternally.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareExternally.tsx index 41637090ad0..85830964f93 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareExternally.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareExternally.tsx @@ -6,7 +6,7 @@ import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { SceneComponentProps, SceneObjectBase } from '@grafana/scenes'; import { Button, ClipboardButton, Divider, Spinner, Stack, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { useDeletePublicDashboardMutation, useGetPublicDashboardQuery, diff --git a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareTypeSelect.tsx b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareTypeSelect.tsx index 89e14df3c5f..2f1a64b74c2 100644 --- a/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareTypeSelect.tsx +++ b/public/app/features/dashboard-scene/sharing/ShareButton/share-externally/ShareTypeSelect.tsx @@ -4,7 +4,7 @@ import { SelectableValue, toIconName } from '@grafana/data'; import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans } from '@grafana/i18n'; import { Icon, Label, Select, Spinner, Stack, Text, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { publicDashboardApi, useUpdatePublicDashboardAccessMutation, diff --git a/public/app/features/dashboard-scene/utils/urlBuilders.ts b/public/app/features/dashboard-scene/utils/urlBuilders.ts index 0658b0ff178..942d378a38f 100644 --- a/public/app/features/dashboard-scene/utils/urlBuilders.ts +++ b/public/app/features/dashboard-scene/utils/urlBuilders.ts @@ -1,7 +1,7 @@ import { locationUtil } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { sceneGraph, VizPanel } from '@grafana/scenes'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getExploreUrl } from 'app/core/utils/explore'; import { getQueryRunnerFor } from './utils'; diff --git a/public/app/features/dashboard/api/legacy.ts b/public/app/features/dashboard/api/legacy.ts index 5a9e0b9707c..34a40225e32 100644 --- a/public/app/features/dashboard/api/legacy.ts +++ b/public/app/features/dashboard/api/legacy.ts @@ -2,7 +2,7 @@ import { AppEvents, UrlQueryMap } from '@grafana/data'; import { t } from '@grafana/i18n'; import { FetchError, getBackendSrv } from '@grafana/runtime'; import { Dashboard } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { Resource, ResourceList } from 'app/features/apiserver/types'; import { dashboardWatcher } from 'app/features/live/dashboard/dashboardWatcher'; import { DeleteDashboardResponse } from 'app/features/manage-dashboards/types'; diff --git a/public/app/features/dashboard/components/DashNav/DashNav.tsx b/public/app/features/dashboard/components/DashNav/DashNav.tsx index 78dd8c02a40..be0d9cfcaea 100644 --- a/public/app/features/dashboard/components/DashNav/DashNav.tsx +++ b/public/app/features/dashboard/components/DashNav/DashNav.tsx @@ -15,11 +15,11 @@ import { ConfirmModal, } from '@grafana/ui'; import { updateNavIndex } from 'app/core/actions'; +import { appEvents } from 'app/core/app_events'; import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; import { NavToolbarSeparator } from 'app/core/components/AppChrome/NavToolbar/NavToolbarSeparator'; import config from 'app/core/config'; import { useAppNotification } from 'app/core/copy/appNotification'; -import { appEvents } from 'app/core/core'; import { useBusEvent } from 'app/core/hooks/useBusEvent'; import { ID_PREFIX, setStarred } from 'app/core/reducers/navBarTree'; import { removeNavIndex } from 'app/core/reducers/navModel'; diff --git a/public/app/features/dashboard/components/DashNav/DashNavTimeControls.tsx b/public/app/features/dashboard/components/DashNav/DashNavTimeControls.tsx index ae1bbb56f11..acd2d17df8d 100644 --- a/public/app/features/dashboard/components/DashNav/DashNavTimeControls.tsx +++ b/public/app/features/dashboard/components/DashNav/DashNavTimeControls.tsx @@ -5,8 +5,8 @@ import { dateMath, TimeRange, TimeZone } from '@grafana/data'; import { t } from '@grafana/i18n'; import { TimeRangeUpdatedEvent } from '@grafana/runtime'; import { defaultIntervals, isWeekStart, RefreshPicker } from '@grafana/ui'; +import { appEvents } from 'app/core/app_events'; import { TimePickerWithHistory } from 'app/core/components/TimePicker/TimePickerWithHistory'; -import { appEvents } from 'app/core/core'; import { AutoRefreshInterval } from 'app/core/services/context_srv'; import { getTimeSrv } from 'app/features/dashboard/services/TimeSrv'; diff --git a/public/app/features/dashboard/components/DashboardPermissions/AccessControlDashboardPermissions.tsx b/public/app/features/dashboard/components/DashboardPermissions/AccessControlDashboardPermissions.tsx index dbc028be848..dfd21327f06 100644 --- a/public/app/features/dashboard/components/DashboardPermissions/AccessControlDashboardPermissions.tsx +++ b/public/app/features/dashboard/components/DashboardPermissions/AccessControlDashboardPermissions.tsx @@ -1,6 +1,6 @@ import { Permissions } from 'app/core/components/AccessControl/Permissions'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { SettingsPageProps } from '../DashboardSettings/types'; diff --git a/public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx b/public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx index a6376634610..debb2a1db8a 100644 --- a/public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx +++ b/public/app/features/dashboard/components/DashboardRow/DashboardRow.tsx @@ -8,7 +8,7 @@ import { selectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { getTemplateSrv, RefreshEvent } from '@grafana/runtime'; import { Icon, TextLink, Themeable2, withTheme2 } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; import { SHARED_DASHBOARD_QUERY } from 'app/plugins/datasource/dashboard/constants'; import grabDarkSvg from 'img/grab_dark.svg'; diff --git a/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx b/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx index 927246b0228..7363aff85f8 100644 --- a/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx +++ b/public/app/features/dashboard/components/PanelEditor/PanelEditor.tsx @@ -20,10 +20,10 @@ import { withTheme2, Stack, } from '@grafana/ui'; +import { appEvents } from 'app/core/app_events'; import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; import { Page } from 'app/core/components/Page/Page'; import { SplitPaneWrapper } from 'app/core/components/SplitPaneWrapper/SplitPaneWrapper'; -import { appEvents } from 'app/core/core'; import { SubMenuItems } from 'app/features/dashboard/components/SubMenu/SubMenuItems'; import { SaveLibraryPanelModal } from 'app/features/library-panels/components/SaveLibraryPanelModal/SaveLibraryPanelModal'; import { PanelModelWithLibraryPanel } from 'app/features/library-panels/types'; diff --git a/public/app/features/dashboard/components/SaveDashboard/useDashboardSave.tsx b/public/app/features/dashboard/components/SaveDashboard/useDashboardSave.tsx index 360510b6138..64c66ee3ce2 100644 --- a/public/app/features/dashboard/components/SaveDashboard/useDashboardSave.tsx +++ b/public/app/features/dashboard/components/SaveDashboard/useDashboardSave.tsx @@ -5,7 +5,7 @@ import { locationUtil } from '@grafana/data'; import { t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { Dashboard } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { useAppNotification } from 'app/core/copy/appNotification'; import { updateDashboardName } from 'app/core/reducers/navBarTree'; import { useSaveDashboardMutation } from 'app/features/browse-dashboards/api/browseDashboardsAPI'; diff --git a/public/app/features/dashboard/components/ShareModal/ShareExport.tsx b/public/app/features/dashboard/components/ShareModal/ShareExport.tsx index a9ee77c8929..1f9489a9612 100644 --- a/public/app/features/dashboard/components/ShareModal/ShareExport.tsx +++ b/public/app/features/dashboard/components/ShareModal/ShareExport.tsx @@ -3,7 +3,7 @@ import { PureComponent } from 'react'; import { Trans, t } from '@grafana/i18n'; import { Button, Field, Modal, Switch } from '@grafana/ui'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { DashboardExporter } from 'app/features/dashboard/components/DashExportModal/DashboardExporter'; import { makeExportableV1 } from 'app/features/dashboard-scene/scene/export/exporters'; import { DashboardInteractions } from 'app/features/dashboard-scene/utils/interactions'; diff --git a/public/app/features/dashboard/components/ShareModal/ShareModal.tsx b/public/app/features/dashboard/components/ShareModal/ShareModal.tsx index df096a63473..4c701cbda15 100644 --- a/public/app/features/dashboard/components/ShareModal/ShareModal.tsx +++ b/public/app/features/dashboard/components/ShareModal/ShareModal.tsx @@ -3,7 +3,7 @@ import * as React from 'react'; import { t } from '@grafana/i18n'; import { Modal, ModalTabsHeader, TabContent, Themeable2, withTheme2 } from '@grafana/ui'; import { config } from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { SharePublicDashboard } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboard'; import { isPublicDashboardsEnabled } from 'app/features/dashboard/components/ShareModal/SharePublicDashboard/SharePublicDashboardUtils'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; diff --git a/public/app/features/dashboard/containers/DashboardPage.test.tsx b/public/app/features/dashboard/containers/DashboardPage.test.tsx index aee5d4417d6..9a51d8c4cd9 100644 --- a/public/app/features/dashboard/containers/DashboardPage.test.tsx +++ b/public/app/features/dashboard/containers/DashboardPage.test.tsx @@ -46,15 +46,12 @@ jest.mock('app/features/query/components/QueryGroup', () => { }; }); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/app_events', () => ({ appEvents: { subscribe: () => { return { unsubscribe: () => {} }; }, }, - contextSrv: { - user: { orgId: 1 }, - }, })); jest.mock('@grafana/runtime', () => ({ diff --git a/public/app/features/dashboard/dashgrid/DashboardGrid.test.tsx b/public/app/features/dashboard/dashgrid/DashboardGrid.test.tsx index 330b4df5a43..ff66a114811 100644 --- a/public/app/features/dashboard/dashgrid/DashboardGrid.test.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardGrid.test.tsx @@ -4,7 +4,7 @@ import { render } from 'test/test-utils'; import { TextBoxVariableModel } from '@grafana/data'; import { Dashboard } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { GetVariables } from 'app/features/variables/state/selectors'; import { VariablesChanged } from 'app/features/variables/types'; import { DashboardMeta } from 'app/types/dashboard'; diff --git a/public/app/features/dashboard/dashgrid/DashboardGrid.tsx b/public/app/features/dashboard/dashgrid/DashboardGrid.tsx index 879ba64939a..713d8f528b4 100644 --- a/public/app/features/dashboard/dashgrid/DashboardGrid.tsx +++ b/public/app/features/dashboard/dashgrid/DashboardGrid.tsx @@ -5,7 +5,7 @@ import ReactGridLayout, { ItemCallback } from 'react-grid-layout'; import { Subscription } from 'rxjs'; import { config } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { GRID_CELL_HEIGHT, GRID_CELL_VMARGIN, GRID_COLUMN_COUNT } from 'app/core/constants'; import { contextSrv } from 'app/core/services/context_srv'; import { VariablesChanged } from 'app/features/variables/types'; diff --git a/public/app/features/dashboard/dashgrid/PanelStateWrapper.tsx b/public/app/features/dashboard/dashgrid/PanelStateWrapper.tsx index 645cc75f811..20c702edd8b 100644 --- a/public/app/features/dashboard/dashgrid/PanelStateWrapper.tsx +++ b/public/app/features/dashboard/dashgrid/PanelStateWrapper.tsx @@ -32,7 +32,7 @@ import { SeriesVisibilityChangeMode, AdHocFilterItem, } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { profiler } from 'app/core/profiler'; import { annotationServer } from 'app/features/annotations/api'; import { applyPanelTimeOverrides } from 'app/features/dashboard/utils/panel'; diff --git a/public/app/features/dashboard/services/DashboardLoaderSrv.ts b/public/app/features/dashboard/services/DashboardLoaderSrv.ts index ef3ec5fb279..ce333424e0a 100644 --- a/public/app/features/dashboard/services/DashboardLoaderSrv.ts +++ b/public/app/features/dashboard/services/DashboardLoaderSrv.ts @@ -12,7 +12,7 @@ import { getDashboardScenePageStateManager } from 'app/features/dashboard-scene/ import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; import { DashboardDTO } from 'app/types/dashboard'; -import { appEvents } from '../../../core/core'; +import { appEvents } from '../../../core/app_events'; import { ResponseTransformers } from '../api/ResponseTransformers'; import { getDashboardAPI } from '../api/dashboard_api'; import { DashboardVersionError, DashboardWithAccessInfo } from '../api/types'; diff --git a/public/app/features/dashboard/services/SnapshotSrv.ts b/public/app/features/dashboard/services/SnapshotSrv.ts index c9d240ee3b4..d751737f92d 100644 --- a/public/app/features/dashboard/services/SnapshotSrv.ts +++ b/public/app/features/dashboard/services/SnapshotSrv.ts @@ -1,7 +1,7 @@ import { lastValueFrom, map } from 'rxjs'; import { config, getBackendSrv, FetchResponse } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { DashboardDataDTO, DashboardDTO } from 'app/types/dashboard'; import { getAPINamespace } from '../../../api/utils'; diff --git a/public/app/features/dashboard/services/TimeSrv.test.ts b/public/app/features/dashboard/services/TimeSrv.test.ts index 981911116ea..a17bec0499a 100644 --- a/public/app/features/dashboard/services/TimeSrv.test.ts +++ b/public/app/features/dashboard/services/TimeSrv.test.ts @@ -9,7 +9,7 @@ import { TimeModel } from '../state/TimeModel'; import { TimeSrv } from './TimeSrv'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/app_events', () => ({ appEvents: { subscribe: () => {}, }, diff --git a/public/app/features/dashboard/services/TimeSrv.ts b/public/app/features/dashboard/services/TimeSrv.ts index 224be7762b7..fb8f346a267 100644 --- a/public/app/features/dashboard/services/TimeSrv.ts +++ b/public/app/features/dashboard/services/TimeSrv.ts @@ -15,7 +15,7 @@ import { import { t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { sceneGraph } from '@grafana/scenes'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { config } from 'app/core/config'; import { AutoRefreshInterval, contextSrv, ContextSrv } from 'app/core/services/context_srv'; import { diff --git a/public/app/features/dashboard/state/DashboardModel.refresh.test.ts b/public/app/features/dashboard/state/DashboardModel.refresh.test.ts index f09d4a9d336..308e4762416 100644 --- a/public/app/features/dashboard/state/DashboardModel.refresh.test.ts +++ b/public/app/features/dashboard/state/DashboardModel.refresh.test.ts @@ -1,4 +1,4 @@ -import { appEvents } from '../../../core/core'; +import { appEvents } from '../../../core/app_events'; import { VariablesChanged } from '../../variables/types'; import { getTimeSrv, setTimeSrv, TimeSrv } from '../services/TimeSrv'; diff --git a/public/app/features/dashboard/state/DashboardModel.ts b/public/app/features/dashboard/state/DashboardModel.ts index f4b912c6358..47d2e028657 100644 --- a/public/app/features/dashboard/state/DashboardModel.ts +++ b/public/app/features/dashboard/state/DashboardModel.ts @@ -35,7 +35,7 @@ import { templateVariableValueUpdated, } from 'app/types/events'; -import { appEvents } from '../../../core/core'; +import { appEvents } from '../../../core/app_events'; import { dispatch } from '../../../store/store'; import { VariablesChanged, diff --git a/public/app/features/dashboard/state/initDashboard.test.ts b/public/app/features/dashboard/state/initDashboard.test.ts index 123552c6984..b62a89d4096 100644 --- a/public/app/features/dashboard/state/initDashboard.test.ts +++ b/public/app/features/dashboard/state/initDashboard.test.ts @@ -3,7 +3,7 @@ import { thunk } from 'redux-thunk'; import { Subject } from 'rxjs'; import { BackendSrv, FetchError, locationService, setEchoSrv } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { getBackendSrv } from 'app/core/services/backend_srv'; import { KeybindingSrv } from 'app/core/services/keybindingSrv'; import { variableAdapters } from 'app/features/variables/adapters'; @@ -62,6 +62,13 @@ jest.mock('@grafana/data', () => { })), }; }); +jest.mock('app/core/app_events', () => ({ + ...jest.requireActual('app/core/app_events'), + appEvents: { + publish: jest.fn(), + subscribe: jest.fn(), + }, +})); variableAdapters.register(createConstantVariableAdapter()); const mockStore = configureMockStore([thunk]); diff --git a/public/app/features/dashboard/state/initDashboard.ts b/public/app/features/dashboard/state/initDashboard.ts index 81e2f878bde..86d64138dee 100644 --- a/public/app/features/dashboard/state/initDashboard.ts +++ b/public/app/features/dashboard/state/initDashboard.ts @@ -2,7 +2,7 @@ import { DataQuery, locationUtil, setWeekStart, DashboardLoadedEvent } from '@gr import { t } from '@grafana/i18n'; import { config, isFetchError, locationService } from '@grafana/runtime'; import { notifyApp } from 'app/core/actions'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { createErrorNotification } from 'app/core/copy/appNotification'; import { backendSrv } from 'app/core/services/backend_srv'; import { KeybindingSrv } from 'app/core/services/keybindingSrv'; diff --git a/public/app/features/dashboard/utils/panel.ts b/public/app/features/dashboard/utils/panel.ts index dd4037107f2..4f60c012a0f 100644 --- a/public/app/features/dashboard/utils/panel.ts +++ b/public/app/features/dashboard/utils/panel.ts @@ -3,7 +3,7 @@ import { isString as _isString } from 'lodash'; import { TimeRange, AppEvents, rangeUtil, dateMath, PanelModel as IPanelModel, dateTimeAsMoment } from '@grafana/data'; import { t } from '@grafana/i18n'; import { getTemplateSrv } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import config from 'app/core/config'; import { LS_PANEL_COPY_KEY, PANEL_BORDER } from 'app/core/constants'; import store from 'app/core/store'; diff --git a/public/app/features/datasources/components/DataSourceAddButton.tsx b/public/app/features/datasources/components/DataSourceAddButton.tsx index 627c3695da0..fa1da6b9953 100644 --- a/public/app/features/datasources/components/DataSourceAddButton.tsx +++ b/public/app/features/datasources/components/DataSourceAddButton.tsx @@ -3,7 +3,7 @@ import { useCallback } from 'react'; import { Trans } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { LinkButton } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ROUTES } from 'app/features/connections/constants'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/datasources/components/DataSourceTestingStatus.test.tsx b/public/app/features/datasources/components/DataSourceTestingStatus.test.tsx index cb2e0b54ac8..9d71b183a3a 100644 --- a/public/app/features/datasources/components/DataSourceTestingStatus.test.tsx +++ b/public/app/features/datasources/components/DataSourceTestingStatus.test.tsx @@ -13,7 +13,7 @@ import { getMockDataSource } from '../mocks/dataSourcesMocks'; import { DataSourceTestingStatus, Props } from './DataSourceTestingStatus'; // Mock contextSrv -jest.mock('../../../core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasAccessToExplore: jest.fn(() => true), }, diff --git a/public/app/features/datasources/components/DataSourceTestingStatus.tsx b/public/app/features/datasources/components/DataSourceTestingStatus.tsx index 3c8d512067d..ab1cabf171a 100644 --- a/public/app/features/datasources/components/DataSourceTestingStatus.tsx +++ b/public/app/features/datasources/components/DataSourceTestingStatus.tsx @@ -13,8 +13,8 @@ import { selectors as e2eSelectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { TestingStatus, config, usePluginLinks, usePluginComponents, renderLimitedComponents } from '@grafana/runtime'; import { AlertVariant, Alert, useTheme2, Link, useStyles2 } from '@grafana/ui'; +import { contextSrv } from 'app/core/services/context_srv'; -import { contextSrv } from '../../../core/core'; import { ALLOWED_DATASOURCE_EXTENSION_PLUGINS } from '../constants'; import { trackCreateDashboardClicked } from '../tracking'; diff --git a/public/app/features/datasources/components/DataSourcesList.tsx b/public/app/features/datasources/components/DataSourcesList.tsx index 8113bba85e0..42d737f7aaf 100644 --- a/public/app/features/datasources/components/DataSourcesList.tsx +++ b/public/app/features/datasources/components/DataSourcesList.tsx @@ -6,8 +6,8 @@ import { DataSourceSettings, GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { config, useFavoriteDatasources, FavoriteDatasources } from '@grafana/runtime'; import { EmptyState, LinkButton, TextLink, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { StoreState, useSelector } from 'app/types/store'; diff --git a/public/app/features/datasources/components/EditDataSource.tsx b/public/app/features/datasources/components/EditDataSource.tsx index 329af79f7ba..845c86c2ff9 100644 --- a/public/app/features/datasources/components/EditDataSource.tsx +++ b/public/app/features/datasources/components/EditDataSource.tsx @@ -11,7 +11,7 @@ import { DataSourceUpdatedSuccessfully, } from '@grafana/data'; import { getDataSourceSrv, usePluginComponents, UsePluginComponentsResult } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import PageLoader from 'app/core/components/PageLoader/PageLoader'; import { DataSourceSettingsState } from 'app/types/datasources'; import { useDispatch } from 'app/types/store'; diff --git a/public/app/features/datasources/components/EditDataSourceActions.tsx b/public/app/features/datasources/components/EditDataSourceActions.tsx index 0f0568dbc67..a4360e600d3 100644 --- a/public/app/features/datasources/components/EditDataSourceActions.tsx +++ b/public/app/features/datasources/components/EditDataSourceActions.tsx @@ -2,7 +2,7 @@ import { PluginExtensionPoints } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { config, usePluginLinks, useFavoriteDatasources, getDataSourceSrv, reportInteraction } from '@grafana/runtime'; import { Button, Dropdown, LinkButton, Menu, Icon, IconButton } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ALLOWED_DATASOURCE_EXTENSION_PLUGINS } from '../constants'; import { useDataSource } from '../state/hooks'; diff --git a/public/app/features/datasources/components/picker/AddNewDataSourceButton.tsx b/public/app/features/datasources/components/picker/AddNewDataSourceButton.tsx index 7e03ccf2c8b..1b9f289616e 100644 --- a/public/app/features/datasources/components/picker/AddNewDataSourceButton.tsx +++ b/public/app/features/datasources/components/picker/AddNewDataSourceButton.tsx @@ -1,7 +1,7 @@ import { locationUtil } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { LinkButton, ButtonVariant } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ROUTES as CONNECTIONS_ROUTES } from 'app/features/connections/constants'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/datasources/state/actions.test.ts b/public/app/features/datasources/state/actions.test.ts index 79aaf70a62c..b5eca2f3adf 100644 --- a/public/app/features/datasources/state/actions.test.ts +++ b/public/app/features/datasources/state/actions.test.ts @@ -2,7 +2,7 @@ import { thunkTester } from 'test/core/thunk/thunkTester'; import { AppPluginMeta, DataSourceSettings, PluginMetaInfo, PluginType } from '@grafana/data'; import { DataSourceSrv, FetchError } from '@grafana/runtime'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { getBackendSrv } from 'app/core/services/backend_srv'; import { ThunkResult, ThunkDispatch } from 'app/types/store'; @@ -31,8 +31,8 @@ import { jest.mock('../api'); jest.mock('app/core/services/backend_srv'); -jest.mock('app/core/core', () => ({ - ...jest.requireActual('app/core/core'), +jest.mock('app/core/app_events', () => ({ + ...jest.requireActual('app/core/app_events'), appEvents: { publish: jest.fn(), }, diff --git a/public/app/features/datasources/state/actions.ts b/public/app/features/datasources/state/actions.ts index 500aac05ef9..961c78c8208 100644 --- a/public/app/features/datasources/state/actions.ts +++ b/public/app/features/datasources/state/actions.ts @@ -18,8 +18,9 @@ import { locationService, } from '@grafana/runtime'; import { updateNavIndex } from 'app/core/actions'; -import { appEvents, contextSrv } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { getBackendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import { DatasourceAPIVersions } from 'app/features/apiserver/client'; import { ROUTES as CONNECTIONS_ROUTES } from 'app/features/connections/constants'; import { getDatasourceSrv } from 'app/features/plugins/datasource_srv'; diff --git a/public/app/features/datasources/state/hooks.ts b/public/app/features/datasources/state/hooks.ts index 61e7be7ae09..9a819401399 100644 --- a/public/app/features/datasources/state/hooks.ts +++ b/public/app/features/datasources/state/hooks.ts @@ -3,8 +3,8 @@ import { useEffect } from 'react'; import { DataSourcePluginMeta, DataSourceSettings } from '@grafana/data'; import { t } from '@grafana/i18n'; import { cleanUpAction } from 'app/core/actions/cleanUp'; -import appEvents from 'app/core/app_events'; -import { contextSrv } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { ShowConfirmModalEvent } from 'app/types/events'; import { useDispatch, useSelector } from 'app/types/store'; diff --git a/public/app/features/datasources/state/navModel.ts b/public/app/features/datasources/state/navModel.ts index b11c13c6c4f..6fadb515023 100644 --- a/public/app/features/datasources/state/navModel.ts +++ b/public/app/features/datasources/state/navModel.ts @@ -3,7 +3,7 @@ import { t } from '@grafana/i18n'; import { featureEnabled } from '@grafana/runtime'; import { ProBadge } from 'app/core/components/Upgrade/ProBadge'; import config from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { isOpenSourceBuildOrUnlicenced } from 'app/features/admin/EnterpriseAuthFeaturesCard'; import { highlightTrial } from 'app/features/admin/utils'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/explore/Explore.test.tsx b/public/app/features/explore/Explore.test.tsx index e1d4e71ad21..599adfdbb02 100644 --- a/public/app/features/explore/Explore.test.tsx +++ b/public/app/features/explore/Explore.test.tsx @@ -123,9 +123,9 @@ jest.mock('@grafana/runtime', () => ({ usePluginLinks: jest.fn(() => ({ links: [] })), })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, hasPermission: () => true, getValidIntervals: (defaultIntervals: string[]) => defaultIntervals, }, diff --git a/public/app/features/explore/ExploreToolbar.tsx b/public/app/features/explore/ExploreToolbar.tsx index 766f46431e5..0099b3b86ae 100644 --- a/public/app/features/explore/ExploreToolbar.tsx +++ b/public/app/features/explore/ExploreToolbar.tsx @@ -18,11 +18,11 @@ import { Button, } from '@grafana/ui'; import { AppChromeUpdate } from 'app/core/components/AppChrome/AppChromeUpdate'; +import { contextSrv } from 'app/core/services/context_srv'; import { DataSourcePicker } from 'app/features/datasources/components/picker/DataSourcePicker'; import { CORRELATION_EDITOR_POST_CONFIRM_ACTION } from 'app/types/explore'; import { StoreState, useDispatch, useSelector } from 'app/types/store'; -import { contextSrv } from '../../core/core'; import { updateFiscalYearStartMonthForSession, updateTimeZoneForSession } from '../profile/state/reducers'; import { getFiscalYearStartMonth, getTimeZone } from '../profile/state/selectors'; diff --git a/public/app/features/explore/NoDataSourceCallToAction.tsx b/public/app/features/explore/NoDataSourceCallToAction.tsx index 5d67b2d1475..1e322f95d2b 100644 --- a/public/app/features/explore/NoDataSourceCallToAction.tsx +++ b/public/app/features/explore/NoDataSourceCallToAction.tsx @@ -3,7 +3,7 @@ import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { LinkButton, CallToActionCard, Icon, useStyles2 } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; function getCardStyles(theme: GrafanaTheme2) { diff --git a/public/app/features/explore/RichHistory/RichHistoryAddToLibrary.test.tsx b/public/app/features/explore/RichHistory/RichHistoryAddToLibrary.test.tsx index b23434fd2a6..540e56e2236 100644 --- a/public/app/features/explore/RichHistory/RichHistoryAddToLibrary.test.tsx +++ b/public/app/features/explore/RichHistory/RichHistoryAddToLibrary.test.tsx @@ -1,7 +1,7 @@ import { screen } from '@testing-library/react'; import { render } from 'test/test-utils'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { QueryLibraryContextProviderMock } from '../QueryLibrary/mocks'; diff --git a/public/app/features/explore/RichHistory/RichHistoryCard.test.tsx b/public/app/features/explore/RichHistory/RichHistoryCard.test.tsx index 669f7d0dd4a..106d96cefac 100644 --- a/public/app/features/explore/RichHistory/RichHistoryCard.test.tsx +++ b/public/app/features/explore/RichHistory/RichHistoryCard.test.tsx @@ -91,11 +91,6 @@ jest.mock('app/core/utils/explore', () => ({ copyStringToClipboard: (str: string) => copyStringToClipboard(str), })); -jest.mock('app/core/app_events', () => ({ - publish: jest.fn(), - subscribe: jest.fn(), -})); - interface MockQuery extends DataQuery { query: string; queryText?: string; diff --git a/public/app/features/explore/extensions/getExploreExtensionConfigs.tsx b/public/app/features/explore/extensions/getExploreExtensionConfigs.tsx index 7bbade45ad9..ee96d07ac7a 100644 --- a/public/app/features/explore/extensions/getExploreExtensionConfigs.tsx +++ b/public/app/features/explore/extensions/getExploreExtensionConfigs.tsx @@ -1,5 +1,5 @@ import { PluginExtensionAddedLinkConfig, PluginExtensionPoints } from '@grafana/data'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { dispatch } from 'app/store/store'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/explore/spec/datasourceState.test.tsx b/public/app/features/explore/spec/datasourceState.test.tsx index c8fffa5d499..4132e7f106e 100644 --- a/public/app/features/explore/spec/datasourceState.test.tsx +++ b/public/app/features/explore/spec/datasourceState.test.tsx @@ -24,9 +24,9 @@ jest.mock('react-virtualized-auto-sizer', () => { }); }); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, hasPermission: () => true, getValidIntervals: (defaultIntervals: string[]) => defaultIntervals, }, diff --git a/public/app/features/explore/spec/interpolation.test.tsx b/public/app/features/explore/spec/interpolation.test.tsx index 7e7c5b1effe..f8520afe280 100644 --- a/public/app/features/explore/spec/interpolation.test.tsx +++ b/public/app/features/explore/spec/interpolation.test.tsx @@ -15,9 +15,9 @@ jest.mock('@grafana/runtime', () => ({ getAppEvents: () => testEventBus, })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, hasPermission: () => true, getValidIntervals: (defaultIntervals: string[]) => defaultIntervals, }, diff --git a/public/app/features/explore/spec/queryHistory.test.tsx b/public/app/features/explore/spec/queryHistory.test.tsx index 1e3d7b3a75d..ca67720d66f 100644 --- a/public/app/features/explore/spec/queryHistory.test.tsx +++ b/public/app/features/explore/spec/queryHistory.test.tsx @@ -50,7 +50,7 @@ jest.mock('@grafana/runtime', () => ({ usePluginLinks: jest.fn().mockReturnValue({ links: [] }), })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermission: () => true, isSignedIn: true, diff --git a/public/app/features/explore/spec/split.test.tsx b/public/app/features/explore/spec/split.test.tsx index a595195c4db..e114201108a 100644 --- a/public/app/features/explore/spec/split.test.tsx +++ b/public/app/features/explore/spec/split.test.tsx @@ -12,10 +12,10 @@ import { setupExplore, tearDown, waitForExplore } from './helper/setup'; const testEventBus = new EventBusSrv(); -jest.mock('app/core/core', () => { +jest.mock('app/core/services/context_srv', () => { return { contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, hasPermission: () => true, getValidIntervals: (defaultIntervals: string[]) => defaultIntervals, }, diff --git a/public/app/features/explore/state/time.ts b/public/app/features/explore/state/time.ts index a63ce86c44d..aca449c50be 100644 --- a/public/app/features/explore/state/time.ts +++ b/public/app/features/explore/state/time.ts @@ -12,7 +12,7 @@ import { import { t } from '@grafana/i18n'; import { getTemplateSrv } from '@grafana/runtime'; import { RefreshPicker } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { getTimeRange, refreshIntervalToSortOrder, stopQueryState } from 'app/core/utils/explore'; import { getCopiedTimeRange, diff --git a/public/app/features/inspector/InspectJSONTab.tsx b/public/app/features/inspector/InspectJSONTab.tsx index 52ff402a702..176f13a436a 100644 --- a/public/app/features/inspector/InspectJSONTab.tsx +++ b/public/app/features/inspector/InspectJSONTab.tsx @@ -9,7 +9,7 @@ import { selectors } from '@grafana/e2e-selectors'; import { Trans, t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { Button, CodeEditor, Field, Select, useStyles2 } from '@grafana/ui'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { DashboardModel } from 'app/features/dashboard/state/DashboardModel'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; diff --git a/public/app/features/inspector/utils/utils.ts b/public/app/features/inspector/utils/utils.ts index 779f539d17f..cdb1c0bd0b3 100644 --- a/public/app/features/inspector/utils/utils.ts +++ b/public/app/features/inspector/utils/utils.ts @@ -1,5 +1,5 @@ import { AppEvents } from '@grafana/data'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; export function getPrettyJSON(obj: unknown): string { let r = ''; diff --git a/public/app/features/invites/SignupInvited.test.tsx b/public/app/features/invites/SignupInvited.test.tsx index b5aa3ee4315..74ab1c420be 100644 --- a/public/app/features/invites/SignupInvited.test.tsx +++ b/public/app/features/invites/SignupInvited.test.tsx @@ -6,7 +6,7 @@ import { backendSrv } from '../../core/services/backend_srv'; import { SignupInvitedPage } from './SignupInvited'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { user: { orgName: 'Invited to Org Name' }, }, diff --git a/public/app/features/invites/state/actions.ts b/public/app/features/invites/state/actions.ts index 72a40840bd6..8fc4df90f80 100644 --- a/public/app/features/invites/state/actions.ts +++ b/public/app/features/invites/state/actions.ts @@ -1,5 +1,5 @@ import { getBackendSrv } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { FormModel } from 'app/features/org/UserInviteForm'; import { AccessControlAction } from 'app/types/accessControl'; import { createAsyncThunk } from 'app/types/store'; diff --git a/public/app/features/live/dashboard/dashboardWatcher.ts b/public/app/features/live/dashboard/dashboardWatcher.ts index 5c831085af5..086147e67e7 100644 --- a/public/app/features/live/dashboard/dashboardWatcher.ts +++ b/public/app/features/live/dashboard/dashboardWatcher.ts @@ -11,7 +11,8 @@ import { LiveChannelScope, } from '@grafana/data'; import { getGrafanaLiveSrv, locationService } from '@grafana/runtime'; -import { appEvents, contextSrv } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; +import { contextSrv } from 'app/core/services/context_srv'; import { ShowModalReactEvent } from '../../../types/events'; import { getDashboardSrv } from '../../dashboard/services/DashboardSrv'; diff --git a/public/app/features/manage-dashboards/DashboardImportPage.tsx b/public/app/features/manage-dashboards/DashboardImportPage.tsx index 4652a4811bd..fd286a33f2f 100644 --- a/public/app/features/manage-dashboards/DashboardImportPage.tsx +++ b/public/app/features/manage-dashboards/DashboardImportPage.tsx @@ -23,7 +23,7 @@ import { Label, Stack, } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { Form } from 'app/core/components/Form/Form'; import { Page } from 'app/core/components/Page/Page'; import { GrafanaRouteComponentProps } from 'app/core/navigation/types'; diff --git a/public/app/features/org/OrgDetailsPage.test.tsx b/public/app/features/org/OrgDetailsPage.test.tsx index e34b245cd49..6967de1ec9b 100644 --- a/public/app/features/org/OrgDetailsPage.test.tsx +++ b/public/app/features/org/OrgDetailsPage.test.tsx @@ -10,11 +10,10 @@ import { backendSrv } from '../../core/services/backend_srv'; import { OrgDetailsPage, Props } from './OrgDetailsPage'; import { setOrganizationName } from './state/reducers'; -jest.mock('app/core/core', () => { +jest.mock('app/core/services/context_srv', () => { return { - ...jest.requireActual('app/core/core'), contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, hasPermission: () => true, }, }; diff --git a/public/app/features/org/OrgDetailsPage.tsx b/public/app/features/org/OrgDetailsPage.tsx index bffc18ef3c7..c78a88779ff 100644 --- a/public/app/features/org/OrgDetailsPage.tsx +++ b/public/app/features/org/OrgDetailsPage.tsx @@ -3,10 +3,11 @@ import { ConnectedProps, connect } from 'react-redux'; import { t } from '@grafana/i18n'; import { Stack } from '@grafana/ui'; +import { appEvents } from 'app/core/app_events'; import { Page } from 'app/core/components/Page/Page'; import SharedPreferences from 'app/core/components/SharedPreferences/SharedPreferences'; -import { appEvents, contextSrv } from 'app/core/core'; import { getNavModel } from 'app/core/selectors/navModel'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { ShowConfirmModalEvent } from 'app/types/events'; import { StoreState } from 'app/types/store'; diff --git a/public/app/features/org/OrgProfile.test.tsx b/public/app/features/org/OrgProfile.test.tsx index 5dd2fa78f2c..0cf3a31aee2 100644 --- a/public/app/features/org/OrgProfile.test.tsx +++ b/public/app/features/org/OrgProfile.test.tsx @@ -3,7 +3,7 @@ import userEvent from '@testing-library/user-event'; import OrgProfile, { Props } from './OrgProfile'; -jest.mock('app/core/core', () => { +jest.mock('app/core/services/context_srv', () => { return { contextSrv: { hasPermission: () => true, diff --git a/public/app/features/org/OrgProfile.tsx b/public/app/features/org/OrgProfile.tsx index 46b5cfa0c9b..93d914894b5 100644 --- a/public/app/features/org/OrgProfile.tsx +++ b/public/app/features/org/OrgProfile.tsx @@ -1,7 +1,7 @@ import { Trans, t } from '@grafana/i18n'; import { Input, Field, FieldSet, Button } from '@grafana/ui'; import { Form } from 'app/core/components/Form/Form'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; export interface Props { diff --git a/public/app/features/org/UserInvitePage.tsx b/public/app/features/org/UserInvitePage.tsx index d43a8cf20d2..1ea34bd9a50 100644 --- a/public/app/features/org/UserInvitePage.tsx +++ b/public/app/features/org/UserInvitePage.tsx @@ -1,6 +1,6 @@ import { Trans, t } from '@grafana/i18n'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import UserInviteForm from './UserInviteForm'; diff --git a/public/app/features/panel/components/PanelRenderer.tsx b/public/app/features/panel/components/PanelRenderer.tsx index 028b6533880..ae87c20749f 100644 --- a/public/app/features/panel/components/PanelRenderer.tsx +++ b/public/app/features/panel/components/PanelRenderer.tsx @@ -12,7 +12,7 @@ import { import { Trans } from '@grafana/i18n'; import { getTemplateSrv, PanelRendererProps } from '@grafana/runtime'; import { ErrorBoundaryAlert, useTheme2 } from '@grafana/ui'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { importPanelPlugin, syncGetPanelPlugin } from '../../plugins/importPanelPlugin'; diff --git a/public/app/features/panel/panellinks/specs/link_srv.test.ts b/public/app/features/panel/panellinks/specs/link_srv.test.ts index d9795d45cb4..7fdb800ddc4 100644 --- a/public/app/features/panel/panellinks/specs/link_srv.test.ts +++ b/public/app/features/panel/panellinks/specs/link_srv.test.ts @@ -12,7 +12,7 @@ import { initTemplateSrv } from '../../../../../test/helpers/initTemplateSrv'; import { updateConfig } from '../../../../core/config'; import { getDataFrameVars, LinkSrv } from '../link_srv'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ appEvents: { subscribe: () => {}, }, diff --git a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.test.tsx b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.test.tsx index d544568c61c..ec3ba88c025 100644 --- a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.test.tsx +++ b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.test.tsx @@ -1,14 +1,14 @@ import { render, screen } from '@testing-library/react'; import { PluginSignatureStatus } from '@grafana/data'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { usePluginConfig } from '../../hooks/usePluginConfig'; import { CatalogPlugin } from '../../types'; import { GetStartedWithApp } from './GetStartedWithApp'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermission: jest.fn(), }, diff --git a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx index f15eefad873..2e8798a09ce 100644 --- a/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx +++ b/public/app/features/plugins/admin/components/GetStartedWithPlugin/GetStartedWithApp.tsx @@ -4,7 +4,7 @@ import { PluginMeta } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { reportInteraction } from '@grafana/runtime'; import { Button } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { updatePluginSettings } from '../../api'; diff --git a/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx b/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx index 791cdc21227..ed18477228a 100644 --- a/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx +++ b/public/app/features/plugins/admin/components/InstallControls/InstallControlsButton.tsx @@ -5,7 +5,7 @@ import { AppEvents } from '@grafana/data'; import { t, Trans } from '@grafana/i18n'; import { config, locationService, reportInteraction } from '@grafana/runtime'; import { Button, ConfirmModal, LinkButton, Stack } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; import { removePluginFromNavTree } from 'app/core/reducers/navBarTree'; import { isOpenSourceBuildOrUnlicenced } from 'app/features/admin/EnterpriseAuthFeaturesCard'; diff --git a/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx b/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx index 9a6f2a17177..93e21587f47 100644 --- a/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx +++ b/public/app/features/plugins/admin/components/InstallControls/InstallControlsWarning.tsx @@ -4,7 +4,7 @@ import { GrafanaTheme2, PluginType } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { config, featureEnabled } from '@grafana/runtime'; import { LinkButton, useStyles2, Alert, TextLink, Stack } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { isOpenSourceBuildOrUnlicenced } from 'app/features/admin/EnterpriseAuthFeaturesCard'; import { AccessControlAction } from 'app/types/accessControl'; diff --git a/public/app/features/plugins/admin/components/PluginDashboards.tsx b/public/app/features/plugins/admin/components/PluginDashboards.tsx index 8d5caba5861..8a051b7554d 100644 --- a/public/app/features/plugins/admin/components/PluginDashboards.tsx +++ b/public/app/features/plugins/admin/components/PluginDashboards.tsx @@ -4,7 +4,7 @@ import { PureComponent } from 'react'; import { AppEvents, PluginMeta, DataSourceApi } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { getBackendSrv } from '@grafana/runtime'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import DashboardsTable from 'app/features/datasources/components/DashboardsTable'; import { PluginDashboard } from 'app/types/plugins'; diff --git a/public/app/features/plugins/admin/components/PluginSubtitle.test.tsx b/public/app/features/plugins/admin/components/PluginSubtitle.test.tsx index 113ec3fe54e..ce0c9f3bf7b 100644 --- a/public/app/features/plugins/admin/components/PluginSubtitle.test.tsx +++ b/public/app/features/plugins/admin/components/PluginSubtitle.test.tsx @@ -1,7 +1,7 @@ import { render, screen } from '@testing-library/react'; import { PluginSignatureStatus } from '@grafana/data'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import * as runtime from '../state/hooks'; import { CatalogPlugin } from '../types'; diff --git a/public/app/features/plugins/admin/helpers.ts b/public/app/features/plugins/admin/helpers.ts index 10398e4430b..01552eb0399 100644 --- a/public/app/features/plugins/admin/helpers.ts +++ b/public/app/features/plugins/admin/helpers.ts @@ -2,7 +2,7 @@ import uFuzzy from '@leeoniya/ufuzzy'; import { PluginSignatureStatus, dateTimeParse, PluginError, PluginType, PluginErrorCode } from '@grafana/data'; import { config, featureEnabled } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { diff --git a/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.test.tsx b/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.test.tsx index 83a148a2647..67faba9d03f 100644 --- a/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.test.tsx +++ b/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.test.tsx @@ -13,7 +13,7 @@ jest.mock('react-router-dom-v5-compat', () => ({ jest.mock('./usePluginConfig'); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermissionInMetadata: jest.fn(() => true), }, diff --git a/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx b/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx index 77ea7115922..ab616988e3f 100644 --- a/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx +++ b/public/app/features/plugins/admin/hooks/usePluginDetailsTabs.tsx @@ -4,7 +4,7 @@ import { useLocation } from 'react-router-dom-v5-compat'; import { GrafanaPlugin, NavModelItem, PluginIncludeType, PluginType } from '@grafana/data'; import { t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { usePluginConfig } from '../hooks/usePluginConfig'; diff --git a/public/app/features/plugins/admin/pages/PluginDetails.test.tsx b/public/app/features/plugins/admin/pages/PluginDetails.test.tsx index a14e420cab8..65aa73e4383 100644 --- a/public/app/features/plugins/admin/pages/PluginDetails.test.tsx +++ b/public/app/features/plugins/admin/pages/PluginDetails.test.tsx @@ -38,9 +38,9 @@ jest.mock('@grafana/runtime', () => { jest.mock('../hooks/usePluginConfig.tsx', () => ({ usePluginConfig: jest.fn(() => ({ value: { meta: {} } })) })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, hasPermission: (action: string) => true, hasPermissionInMetadata: (action: string, object: WithAccessControlMetadata) => true, }, diff --git a/public/app/features/plugins/admin/routes.tsx b/public/app/features/plugins/admin/routes.tsx index 6b85ddc14e7..1e554624afa 100644 --- a/public/app/features/plugins/admin/routes.tsx +++ b/public/app/features/plugins/admin/routes.tsx @@ -1,6 +1,6 @@ import { SafeDynamicImport } from 'app/core/components/DynamicImports/SafeDynamicImport'; -import { contextSrv } from 'app/core/core'; import { RouteDescriptor } from 'app/core/navigation/types'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { PluginAdminRoutes } from './types'; diff --git a/public/app/features/plugins/components/AppRootPage.tsx b/public/app/features/plugins/components/AppRootPage.tsx index 0a8d9efd9c0..1b46f33b091 100644 --- a/public/app/features/plugins/components/AppRootPage.tsx +++ b/public/app/features/plugins/components/AppRootPage.tsx @@ -17,12 +17,13 @@ import { import { Trans, t } from '@grafana/i18n'; import { config, locationSearchToObject } from '@grafana/runtime'; import { Alert, ErrorWithStack } from '@grafana/ui'; +import { appEvents } from 'app/core/app_events'; import { Page } from 'app/core/components/Page/Page'; import PageLoader from 'app/core/components/PageLoader/PageLoader'; import { EntityNotFound } from 'app/core/components/PageNotFound/EntityNotFound'; import { useGrafana } from 'app/core/context/GrafanaContext'; -import { appEvents, contextSrv } from 'app/core/core'; import { getNotFoundNav, getWarningNav, getExceptionNav } from 'app/core/navigation/errorModels'; +import { contextSrv } from 'app/core/services/context_srv'; import { getMessageFromError } from 'app/core/utils/errors'; import { diff --git a/public/app/features/plugins/datasource_srv.ts b/public/app/features/plugins/datasource_srv.ts index f330bb7f76e..693e904a7de 100644 --- a/public/app/features/plugins/datasource_srv.ts +++ b/public/app/features/plugins/datasource_srv.ts @@ -21,7 +21,7 @@ import { } from '@grafana/runtime'; import { ExpressionDatasourceRef, UserStorage } from '@grafana/runtime/internal'; import { DataQuery, DataSourceJsonData } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import config from 'app/core/config'; import { dataSource as expressionDatasource, diff --git a/public/app/features/plugins/extensions/utils.test.tsx b/public/app/features/plugins/extensions/utils.test.tsx index 6f8837f206d..2c1563f8f6c 100644 --- a/public/app/features/plugins/extensions/utils.test.tsx +++ b/public/app/features/plugins/extensions/utils.test.tsx @@ -3,7 +3,7 @@ import { type Unsubscribable } from 'rxjs'; import { dateTime, usePluginContext, PluginLoadingStrategy } from '@grafana/data'; import { config, AppPluginConfig } from '@grafana/runtime'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { ShowModalReactEvent } from 'app/types/events'; import { log } from './logs/log'; diff --git a/public/app/features/plugins/extensions/utils.tsx b/public/app/features/plugins/extensions/utils.tsx index a10460d786c..35feb659b6a 100644 --- a/public/app/features/plugins/extensions/utils.tsx +++ b/public/app/features/plugins/extensions/utils.tsx @@ -18,7 +18,7 @@ import { } from '@grafana/data'; import { reportInteraction, config, AppPluginConfig } from '@grafana/runtime'; import { Modal } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { getPluginSettings } from 'app/features/plugins/pluginSettings'; import { CloseExtensionSidebarEvent, diff --git a/public/app/features/plugins/loader/sharedDependencies.ts b/public/app/features/plugins/loader/sharedDependencies.ts index 5dcc08a7692..c83ac72f651 100644 --- a/public/app/features/plugins/loader/sharedDependencies.ts +++ b/public/app/features/plugins/loader/sharedDependencies.ts @@ -14,9 +14,10 @@ import * as grafanaRuntime from '@grafana/runtime'; // eslint-disable-next-line no-restricted-imports import * as grafanaUIraw from '@grafana/ui'; import TableModel from 'app/core/TableModel'; +import { appEvents } from 'app/core/app_events'; import config from 'app/core/config'; -import { appEvents, contextSrv } from 'app/core/core'; import { BackendSrv, getBackendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import impressionSrv from 'app/core/services/impression_srv'; import TimeSeries from 'app/core/time_series2'; import { arrayMove } from 'app/core/utils/arrayMove'; diff --git a/public/app/features/plugins/sandbox/sandboxPluginLoaderRegistry.ts b/public/app/features/plugins/sandbox/sandboxPluginLoaderRegistry.ts index e85a4d08ceb..c3009212ea9 100644 --- a/public/app/features/plugins/sandbox/sandboxPluginLoaderRegistry.ts +++ b/public/app/features/plugins/sandbox/sandboxPluginLoaderRegistry.ts @@ -1,6 +1,6 @@ import { PluginSignatureType } from '@grafana/data'; import { config } from '@grafana/runtime'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { getPluginDetails } from '../admin/api'; import { getPluginSettings } from '../pluginSettings'; diff --git a/public/app/features/profile/state/reducers.ts b/public/app/features/profile/state/reducers.ts index fde01903007..10d7845435f 100644 --- a/public/app/features/profile/state/reducers.ts +++ b/public/app/features/profile/state/reducers.ts @@ -4,7 +4,7 @@ import { isEmpty, isString, set } from 'lodash'; import { dateTimeFormatTimeAgo, setWeekStart, TimeZone } from '@grafana/data'; import { getWeekStart, WeekStart } from '@grafana/ui'; import config from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { ThunkResult } from 'app/types/store'; import { Team } from 'app/types/teams'; import { UserDTO, UserOrg, UserSession } from 'app/types/user'; diff --git a/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts b/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts index 7f57c5c1231..d612be620dc 100644 --- a/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts +++ b/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts @@ -4,7 +4,7 @@ import { OrgRole } from '@grafana/data'; import { config } from '@grafana/runtime'; import { Folder, useGetFolderQuery } from 'app/api/clients/folder/v1beta1'; import { RepositoryView, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning/v0alpha1'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AnnoKeyManagerIdentity } from 'app/features/apiserver/types'; import { RepoType } from '../Wizard/types'; diff --git a/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts b/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts index 7ee0b83a3ec..1c4ba12b8e4 100644 --- a/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts +++ b/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts @@ -3,7 +3,7 @@ import { skipToken } from '@reduxjs/toolkit/query'; import { OrgRole } from '@grafana/data'; import { config } from '@grafana/runtime'; import { RepositoryViewList, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning/v0alpha1'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; export function useIsProvisionedInstance(settings?: RepositoryViewList) { const hasNoRole = contextSrv.user.orgRole === OrgRole.None; diff --git a/public/app/features/search/page/components/columns.tsx b/public/app/features/search/page/components/columns.tsx index 297771ce6eb..01add73d3fe 100644 --- a/public/app/features/search/page/components/columns.tsx +++ b/public/app/features/search/page/components/columns.tsx @@ -13,7 +13,7 @@ import { import { Trans, t } from '@grafana/i18n'; import { config, getDataSourceSrv } from '@grafana/runtime'; import { Checkbox, Icon, IconName, TagList, Text, Tooltip } from '@grafana/ui'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { formatDate, formatDuration } from 'app/core/internationalization/dates'; import { PluginIconName } from 'app/features/plugins/admin/types'; import { ShowModalReactEvent } from 'app/types/events'; diff --git a/public/app/features/search/service/unified.ts b/public/app/features/search/service/unified.ts index 7888730d36b..f7c75b82e6a 100644 --- a/public/app/features/search/service/unified.ts +++ b/public/app/features/search/service/unified.ts @@ -8,7 +8,7 @@ import { config, getBackendSrv } from '@grafana/runtime'; import { generatedAPI, ListStarsApiResponse } from 'app/api/clients/preferences/v1alpha1'; import { getAPIBaseURL } from 'app/api/utils'; import { TermCount } from 'app/core/components/TagFilter/TagFilter'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import kbn from 'app/core/utils/kbn'; import { dispatch } from 'app/store/store'; diff --git a/public/app/features/serviceaccounts/ServiceAccountCreatePage.test.tsx b/public/app/features/serviceaccounts/ServiceAccountCreatePage.test.tsx index 346d79d6e48..03b332d4728 100644 --- a/public/app/features/serviceaccounts/ServiceAccountCreatePage.test.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountCreatePage.test.tsx @@ -33,7 +33,7 @@ jest.mock('@grafana/runtime', () => ({ }, })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { licensedAccessControlEnabled: () => false, hasPermission: () => true, diff --git a/public/app/features/serviceaccounts/ServiceAccountCreatePage.tsx b/public/app/features/serviceaccounts/ServiceAccountCreatePage.tsx index b65b380cebf..dff0a9c2a9c 100644 --- a/public/app/features/serviceaccounts/ServiceAccountCreatePage.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountCreatePage.tsx @@ -10,7 +10,7 @@ import { Page } from 'app/core/components/Page/Page'; import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; import { fetchRoleOptions, updateUserRoles } from 'app/core/components/RolePicker/api'; import { RolePickerSelect } from 'app/core/components/RolePickerDrawer/RolePickerSelect'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { ServiceAccountDTO, ServiceAccountCreateApiResponse } from 'app/types/serviceaccount'; diff --git a/public/app/features/serviceaccounts/ServiceAccountPage.test.tsx b/public/app/features/serviceaccounts/ServiceAccountPage.test.tsx index c1f768b525c..68b2d36bffc 100644 --- a/public/app/features/serviceaccounts/ServiceAccountPage.test.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountPage.test.tsx @@ -8,9 +8,9 @@ import { ServiceAccountDTO } from 'app/types/serviceaccount'; import { ServiceAccountPageUnconnected, Props } from './ServiceAccountPage'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, licensedAccessControlEnabled: () => false, hasPermission: () => true, hasPermissionInMetadata: () => false, diff --git a/public/app/features/serviceaccounts/ServiceAccountPage.tsx b/public/app/features/serviceaccounts/ServiceAccountPage.tsx index b21f6c9fe6d..12119d1e271 100644 --- a/public/app/features/serviceaccounts/ServiceAccountPage.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountPage.tsx @@ -6,7 +6,7 @@ import { NavModelItem, getTimeZone } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Button, ConfirmModal, IconButton, Stack } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { ApiKey } from 'app/types/apiKeys'; import { ServiceAccountDTO } from 'app/types/serviceaccount'; diff --git a/public/app/features/serviceaccounts/ServiceAccountTable.tsx b/public/app/features/serviceaccounts/ServiceAccountTable.tsx index 8d7363fa37f..35f7b2da2b8 100644 --- a/public/app/features/serviceaccounts/ServiceAccountTable.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountTable.tsx @@ -16,7 +16,7 @@ import { Icon, } from '@grafana/ui'; import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { ServiceAccountDTO } from 'app/types/serviceaccount'; diff --git a/public/app/features/serviceaccounts/ServiceAccountsListPage.test.tsx b/public/app/features/serviceaccounts/ServiceAccountsListPage.test.tsx index 1be6a388016..ebdeefcac1a 100644 --- a/public/app/features/serviceaccounts/ServiceAccountsListPage.test.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountsListPage.test.tsx @@ -7,9 +7,9 @@ import { ServiceAccountStateFilter, ServiceAccountDTO } from 'app/types/servicea import { Props, ServiceAccountsListPageUnconnected } from './ServiceAccountsListPage'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { - ...jest.requireActual('app/core/core').contextSrv, + ...jest.requireActual('app/core/services/context_srv').contextSrv, licensedAccessControlEnabled: () => false, hasPermission: () => true, hasPermissionInMetadata: () => true, diff --git a/public/app/features/serviceaccounts/ServiceAccountsListPage.tsx b/public/app/features/serviceaccounts/ServiceAccountsListPage.tsx index 66dfefd41f7..68ee38b7c73 100644 --- a/public/app/features/serviceaccounts/ServiceAccountsListPage.tsx +++ b/public/app/features/serviceaccounts/ServiceAccountsListPage.tsx @@ -18,7 +18,7 @@ import { } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; import config from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { ServiceAccountStateFilter, ServiceAccountDTO } from 'app/types/serviceaccount'; import { StoreState } from 'app/types/store'; diff --git a/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx b/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx index 563d0d8b89d..0e15cc944b0 100644 --- a/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx +++ b/public/app/features/serviceaccounts/components/ServiceAccountProfile.tsx @@ -5,7 +5,7 @@ import { GrafanaTheme2, OrgRole, TimeZone, dateTimeFormat } from '@grafana/data' import { Trans, t } from '@grafana/i18n'; import { Label, TextLink, useStyles2 } from '@grafana/ui'; import { fetchRoleOptions } from 'app/core/components/RolePicker/api'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction, Role } from 'app/types/accessControl'; import { ServiceAccountDTO } from 'app/types/serviceaccount'; diff --git a/public/app/features/serviceaccounts/components/ServiceAccountRoleRow.tsx b/public/app/features/serviceaccounts/components/ServiceAccountRoleRow.tsx index 33a33229b87..0e7bbf57f5b 100644 --- a/public/app/features/serviceaccounts/components/ServiceAccountRoleRow.tsx +++ b/public/app/features/serviceaccounts/components/ServiceAccountRoleRow.tsx @@ -2,7 +2,7 @@ import { OrgRole } from '@grafana/data'; import { t } from '@grafana/i18n'; import { Label } from '@grafana/ui'; import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { OrgRolePicker } from 'app/features/admin/OrgRolePicker'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { ServiceAccountDTO } from 'app/types/serviceaccount'; diff --git a/public/app/features/serviceaccounts/components/ServiceAccountsListItem.tsx b/public/app/features/serviceaccounts/components/ServiceAccountsListItem.tsx index 9bf659f1500..1643f7c7113 100644 --- a/public/app/features/serviceaccounts/components/ServiceAccountsListItem.tsx +++ b/public/app/features/serviceaccounts/components/ServiceAccountsListItem.tsx @@ -7,7 +7,7 @@ import { Trans, t } from '@grafana/i18n'; import { Button, Icon, IconButton, Stack, useStyles2 } from '@grafana/ui'; import { SkeletonComponent, attachSkeleton } from '@grafana/ui/unstable'; import { UserRolePicker } from 'app/core/components/RolePicker/UserRolePicker'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { OrgRolePicker } from 'app/features/admin/OrgRolePicker'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { ServiceAccountDTO } from 'app/types/serviceaccount'; diff --git a/public/app/features/stars/hooks.ts b/public/app/features/stars/hooks.ts index 6c0aea29425..fa95eecd751 100644 --- a/public/app/features/stars/hooks.ts +++ b/public/app/features/stars/hooks.ts @@ -9,8 +9,8 @@ import { import { locationUtil } from '@grafana/data'; import { config } from '@grafana/runtime'; import { useAddStarMutation, useRemoveStarMutation, useListStarsQuery } from 'app/api/clients/preferences/v1alpha1'; -import { contextSrv } from 'app/core/core'; import { setStarred } from 'app/core/reducers/navBarTree'; +import { contextSrv } from 'app/core/services/context_srv'; import { dispatch } from 'app/store/store'; type StarItemArgs = { diff --git a/public/app/features/support-bundles/SupportBundles.tsx b/public/app/features/support-bundles/SupportBundles.tsx index b21604caae0..2f53b50d605 100644 --- a/public/app/features/support-bundles/SupportBundles.tsx +++ b/public/app/features/support-bundles/SupportBundles.tsx @@ -5,7 +5,7 @@ import { dateTimeFormat } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { LinkButton, Spinner, IconButton } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { StoreState } from 'app/types/store'; diff --git a/public/app/features/teams/CreateTeam.tsx b/public/app/features/teams/CreateTeam.tsx index 256c557756d..050f7aefa1e 100644 --- a/public/app/features/teams/CreateTeam.tsx +++ b/public/app/features/teams/CreateTeam.tsx @@ -9,7 +9,7 @@ import { Page } from 'app/core/components/Page/Page'; import { TeamRolePicker } from 'app/core/components/RolePicker/TeamRolePicker'; import { updateTeamRoles } from 'app/core/components/RolePicker/api'; import { useRoleOptions } from 'app/core/components/RolePicker/hooks'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { Role, AccessControlAction } from 'app/types/accessControl'; import { TeamDTO } from 'app/types/teams'; diff --git a/public/app/features/teams/TeamSettings.test.tsx b/public/app/features/teams/TeamSettings.test.tsx index 1046cd61154..9d31644657a 100644 --- a/public/app/features/teams/TeamSettings.test.tsx +++ b/public/app/features/teams/TeamSettings.test.tsx @@ -3,8 +3,8 @@ import { render, screen, waitFor } from 'test/test-utils'; import { setBackendSrv } from '@grafana/runtime'; import { setupMockServer } from '@grafana/test-utils/server'; import { MOCK_TEAMS } from '@grafana/test-utils/unstable'; -import { contextSrv } from 'app/core/core'; import { backendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import { Props, TeamSettings } from './TeamSettings'; diff --git a/public/app/features/teams/state/actions.ts b/public/app/features/teams/state/actions.ts index b6bd50a7c57..49c22c2c449 100644 --- a/public/app/features/teams/state/actions.ts +++ b/public/app/features/teams/state/actions.ts @@ -3,7 +3,7 @@ import { debounce } from 'lodash'; import { getBackendSrv } from '@grafana/runtime'; import { FetchDataArgs } from '@grafana/ui'; import { updateNavIndex } from 'app/core/actions'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { accessControlQueryParam } from 'app/core/utils/accessControl'; import { AccessControlAction } from 'app/types/accessControl'; import { ThunkResult } from 'app/types/store'; diff --git a/public/app/features/users/UsersActionBar.test.tsx b/public/app/features/users/UsersActionBar.test.tsx index 9e5e46f1494..ec58494b21e 100644 --- a/public/app/features/users/UsersActionBar.test.tsx +++ b/public/app/features/users/UsersActionBar.test.tsx @@ -6,7 +6,7 @@ import { config } from 'app/core/config'; import { Props, UsersActionBarUnconnected } from './UsersActionBar'; import { searchQueryChanged } from './state/reducers'; -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { hasPermission: () => true, }, diff --git a/public/app/features/users/UsersActionBar.tsx b/public/app/features/users/UsersActionBar.tsx index 18ab669a9f0..7c2d85339b1 100644 --- a/public/app/features/users/UsersActionBar.tsx +++ b/public/app/features/users/UsersActionBar.tsx @@ -4,7 +4,7 @@ import { Trans, t } from '@grafana/i18n'; import { reportInteraction } from '@grafana/runtime'; import { RadioButtonGroup, LinkButton, FilterInput, InlineField } from '@grafana/ui'; import config from 'app/core/config'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { AccessControlAction } from 'app/types/accessControl'; import { StoreState } from 'app/types/store'; diff --git a/public/app/features/users/UsersListPage.test.tsx b/public/app/features/users/UsersListPage.test.tsx index 91dc6767767..eca8e230292 100644 --- a/public/app/features/users/UsersListPage.test.tsx +++ b/public/app/features/users/UsersListPage.test.tsx @@ -12,7 +12,7 @@ jest.mock('../../core/app_events', () => ({ emit: jest.fn(), })); -jest.mock('app/core/core', () => ({ +jest.mock('app/core/services/context_srv', () => ({ contextSrv: { user: { orgId: 1 }, hasPermission: () => false, diff --git a/public/app/features/users/UsersListPage.tsx b/public/app/features/users/UsersListPage.tsx index b362bf81621..427366949f8 100644 --- a/public/app/features/users/UsersListPage.tsx +++ b/public/app/features/users/UsersListPage.tsx @@ -4,7 +4,7 @@ import { connect, ConnectedProps } from 'react-redux'; import { OrgRole, renderMarkdown } from '@grafana/data'; import { Alert } from '@grafana/ui'; import { Page } from 'app/core/components/Page/Page'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { StoreState } from 'app/types/store'; import { OrgUser } from 'app/types/user'; diff --git a/public/app/features/users/state/actions.ts b/public/app/features/users/state/actions.ts index b13bf27e223..3f2fe252425 100644 --- a/public/app/features/users/state/actions.ts +++ b/public/app/features/users/state/actions.ts @@ -2,7 +2,7 @@ import { debounce } from 'lodash'; import { getBackendSrv } from '@grafana/runtime'; import { FetchDataArgs } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; +import { contextSrv } from 'app/core/services/context_srv'; import { accessControlQueryParam } from 'app/core/utils/accessControl'; import { AccessControlAction } from 'app/types/accessControl'; import { ThunkResult } from 'app/types/store'; diff --git a/public/app/features/variables/state/actions.ts b/public/app/features/variables/state/actions.ts index ffc45b6b939..a92193a0867 100644 --- a/public/app/features/variables/state/actions.ts +++ b/public/app/features/variables/state/actions.ts @@ -29,8 +29,8 @@ import { store } from 'app/store/store'; import { AppNotification } from 'app/types/appNotifications'; import { ThunkResult, StoreState } from 'app/types/store'; +import { appEvents } from '../../../core/app_events'; import { createErrorNotification } from '../../../core/copy/appNotification'; -import { appEvents } from '../../../core/core'; import { getBackendSrv } from '../../../core/services/backend_srv'; import { Graph, Node } from '../../../core/utils/dag'; import { getDatasourceSrv } from '../../plugins/datasource_srv'; diff --git a/public/app/features/variables/state/onTimeRangeUpdated.test.ts b/public/app/features/variables/state/onTimeRangeUpdated.test.ts index efed3f1b5ab..8a2fa9d2290 100644 --- a/public/app/features/variables/state/onTimeRangeUpdated.test.ts +++ b/public/app/features/variables/state/onTimeRangeUpdated.test.ts @@ -5,7 +5,7 @@ import { DashboardState } from 'app/types/dashboard'; import { reduxTester } from '../../../../test/core/redux/reduxTester'; import { silenceConsoleOutput } from '../../../../test/core/utils/silenceConsoleOutput'; -import { appEvents } from '../../../core/core'; +import { appEvents } from '../../../core/app_events'; import { notifyApp } from '../../../core/reducers/appNotification'; import { DashboardModel } from '../../dashboard/state/DashboardModel'; import { createDashboardModelFixture } from '../../dashboard/state/__fixtures__/dashboardFixtures'; diff --git a/public/app/plugins/datasource/grafana/utils.ts b/public/app/plugins/datasource/grafana/utils.ts index fad762c10f9..5ddc86075ea 100644 --- a/public/app/plugins/datasource/grafana/utils.ts +++ b/public/app/plugins/datasource/grafana/utils.ts @@ -1,5 +1,5 @@ import { DataFrame, DataFrameJSON, dataFrameToJSON } from '@grafana/data'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { GRAFANA_DATASOURCE_NAME } from 'app/features/alerting/unified/utils/datasource'; import { PanelModel } from 'app/features/dashboard/state/PanelModel'; import { ShowConfirmModalEvent } from 'app/types/events'; diff --git a/public/app/plugins/panel/annolist/AnnoListPanel.tsx b/public/app/plugins/panel/annolist/AnnoListPanel.tsx index 69c21cebdb1..de0baf6f375 100644 --- a/public/app/plugins/panel/annolist/AnnoListPanel.tsx +++ b/public/app/plugins/panel/annolist/AnnoListPanel.tsx @@ -16,7 +16,7 @@ import { Trans, t } from '@grafana/i18n'; import { config, getBackendSrv, locationService } from '@grafana/runtime'; import { Button, ScrollContainer, stylesFactory, TagList } from '@grafana/ui'; import { AbstractList } from '@grafana/ui/internal'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; import { AnnotationListItem } from './AnnotationListItem'; diff --git a/public/app/plugins/panel/canvas/editor/element/utils.ts b/public/app/plugins/panel/canvas/editor/element/utils.ts index e1ee7aa7da1..5ec8549a95a 100644 --- a/public/app/plugins/panel/canvas/editor/element/utils.ts +++ b/public/app/plugins/panel/canvas/editor/element/utils.ts @@ -1,6 +1,6 @@ import { AppEvents, textUtil } from '@grafana/data'; import { BackendSrvRequest, getBackendSrv, getTemplateSrv } from '@grafana/runtime'; -import { appEvents } from 'app/core/core'; +import { appEvents } from 'app/core/app_events'; import { createAbsoluteUrl, RelativeUrl } from 'app/features/alerting/unified/utils/url'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; diff --git a/public/app/plugins/panel/canvas/utils.ts b/public/app/plugins/panel/canvas/utils.ts index 01f7e10ccec..59953e9085a 100644 --- a/public/app/plugins/panel/canvas/utils.ts +++ b/public/app/plugins/panel/canvas/utils.ts @@ -2,7 +2,7 @@ import { isNumber, isString } from 'lodash'; import { DataFrame, Field, AppEvents, getFieldDisplayName, PluginState, SelectableValue } from '@grafana/data'; import { ConnectionDirection } from '@grafana/schema'; -import appEvents from 'app/core/app_events'; +import { appEvents } from 'app/core/app_events'; import { hasAlphaPanels, config } from 'app/core/config'; import { CanvasConnection, CanvasElementItem, CanvasElementOptions } from 'app/features/canvas/element'; import { notFoundItem } from 'app/features/canvas/elements/notFound'; diff --git a/public/app/plugins/panel/dashlist/utils.ts b/public/app/plugins/panel/dashlist/utils.ts index edf299ba675..0dad9ea7374 100644 --- a/public/app/plugins/panel/dashlist/utils.ts +++ b/public/app/plugins/panel/dashlist/utils.ts @@ -1,6 +1,6 @@ import { DataLinkBuiltInVars, PanelProps, urlUtil } from '@grafana/data'; -import { appEvents } from '../../../core/core'; +import { appEvents } from '../../../core/app_events'; import { useBusEvent } from '../../../core/hooks/useBusEvent'; import { VariablesChanged } from '../../../features/variables/types'; diff --git a/public/app/plugins/panel/gettingstarted/GettingStarted.tsx b/public/app/plugins/panel/gettingstarted/GettingStarted.tsx index 4c2af3c5a32..9990b48d615 100644 --- a/public/app/plugins/panel/gettingstarted/GettingStarted.tsx +++ b/public/app/plugins/panel/gettingstarted/GettingStarted.tsx @@ -6,8 +6,8 @@ import { PanelProps } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { config, reportInteraction } from '@grafana/runtime'; import { Button, Spinner, stylesFactory } from '@grafana/ui'; -import { contextSrv } from 'app/core/core'; import { backendSrv } from 'app/core/services/backend_srv'; +import { contextSrv } from 'app/core/services/context_srv'; import { getDashboardSrv } from 'app/features/dashboard/services/DashboardSrv'; import { Step } from './components/Step'; diff --git a/public/test/jest-setup.ts b/public/test/jest-setup.ts index d0ccb095e24..c29aa333a89 100644 --- a/public/test/jest-setup.ts +++ b/public/test/jest-setup.ts @@ -8,8 +8,8 @@ import { TextEncoder, TextDecoder } from 'util'; jest.isolateModulesAsync(async () => { const { EventBusSrv } = await import('@grafana/data'); const testAppEvents = new EventBusSrv(); - jest.mock('../app/core/core', () => ({ - ...jest.requireActual('../app/core/core'), + jest.mock('../app/core/app_events', () => ({ + ...jest.requireActual('../app/core/app_events'), appEvents: testAppEvents, })); }); From 7772c3ab2e178097d199c47ca7a6ab616fc674ac Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=A4ggmark?= Date: Mon, 17 Nov 2025 07:04:35 +0100 Subject: [PATCH 11/26] chore: fix failing builds on main (#113996) Update import path for contextSrv in DashboardScenePageStateManager --- .../dashboard-scene/pages/DashboardScenePageStateManager.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts index be05bb63c66..a563c17db65 100644 --- a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts +++ b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts @@ -4,8 +4,8 @@ import { config, getBackendSrv, getDataSourceSrv, isFetchError, locationService import { sceneGraph } from '@grafana/scenes'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2'; import { GetRepositoryFilesWithPathApiResponse, provisioningAPIv0alpha1 } from 'app/api/clients/provisioning/v0alpha1'; -import { contextSrv } from 'app/core/core'; import { StateManagerBase } from 'app/core/services/StateManagerBase'; +import { contextSrv } from 'app/core/services/context_srv'; import { getMessageFromError, getMessageIdFromError, getStatusFromError } from 'app/core/utils/errors'; import { startMeasure, stopMeasure } from 'app/core/utils/metrics'; import { From f50d513252aa2d92d68137a96adea5a24d9fccbe Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 10:24:48 +0300 Subject: [PATCH 12/26] fix(deps): update dependency centrifuge to v5.5.2 (#113973) | datasource | package | from | to | | ---------- | ---------- | ----- | ----- | | npm | centrifuge | 5.4.0 | 5.5.2 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/package.json b/package.json index 361cfa559d3..32aa7ecc140 100644 --- a/package.json +++ b/package.json @@ -333,7 +333,7 @@ "ansicolor": "2.0.3", "baron": "3.0.3", "brace": "0.11.1", - "centrifuge": "5.4.0", + "centrifuge": "5.5.2", "classnames": "2.5.1", "combokeys": "^3.0.0", "comlink": "4.4.2", diff --git a/yarn.lock b/yarn.lock index dceb030a6b2..3d4b2af9ebe 100644 --- a/yarn.lock +++ b/yarn.lock @@ -13194,13 +13194,13 @@ __metadata: languageName: node linkType: hard -"centrifuge@npm:5.4.0": - version: 5.4.0 - resolution: "centrifuge@npm:5.4.0" +"centrifuge@npm:5.5.2": + version: 5.5.2 + resolution: "centrifuge@npm:5.5.2" dependencies: events: "npm:^3.3.0" protobufjs: "npm:^7.2.5" - checksum: 10/251788a36675dcc89906a158b8554f1d36869aba4236c3eeb54fe0ff819fffa6d91e5189b5bb31d48505482f6fdb3425e487f94c79a2e1f316061a229768227a + checksum: 10/d48bff4fe5ab9a1dfe8f1b4100a197c1e90b929f15ba4a5ff5c191c5bbd5f103aa1fe46945338e3f854174c99a90ef94412f142d84410b4c28d309e7ce73ce69 languageName: node linkType: hard @@ -18999,7 +18999,7 @@ __metadata: blob-polyfill: "npm:9.0.20240710" brace: "npm:0.11.1" browserslist: "npm:^4.21.4" - centrifuge: "npm:5.4.0" + centrifuge: "npm:5.5.2" chance: "npm:^1.1.13" chrome-remote-interface: "npm:0.33.3" classnames: "npm:2.5.1" From 64c61c691632d5406d2654fd65bb58afc4374c93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Philippe=20Qu=C3=A9m=C3=A9ner?= Date: Mon, 17 Nov 2025 08:56:54 +0100 Subject: [PATCH 13/26] fix(dashboards): use index for schema migration datasource lookups (#113911) --- .../pkg/migration/conversion/conversion.go | 10 +- apps/dashboard/pkg/migration/conversion/v0.go | 8 +- apps/dashboard/pkg/migration/conversion/v1.go | 8 +- .../conversion/v1beta1_to_v2alpha1.go | 117 +++++++-------- apps/dashboard/pkg/migration/migrate.go | 29 ++-- .../pkg/migration/schemaversion/README.md | 2 +- .../schemaversion/datasource_utils.go | 133 ++++++++++++++---- .../schemaversion/datasource_utils_test.go | 68 +-------- .../pkg/migration/schemaversion/migrations.go | 14 +- .../pkg/migration/schemaversion/v33.go | 20 +-- .../pkg/migration/schemaversion/v33_test.go | 4 + .../pkg/migration/schemaversion/v36.go | 38 ++--- .../dashboard/pkg/migration/testutil/mocks.go | 6 + pkg/registry/apis/dashboard/datasources.go | 50 +++++-- pkg/registry/apis/dashboard/register.go | 6 +- 15 files changed, 288 insertions(+), 225 deletions(-) diff --git a/apps/dashboard/pkg/migration/conversion/conversion.go b/apps/dashboard/pkg/migration/conversion/conversion.go index 90795b7779a..9ee376a15ba 100644 --- a/apps/dashboard/pkg/migration/conversion/conversion.go +++ b/apps/dashboard/pkg/migration/conversion/conversion.go @@ -11,7 +11,7 @@ import ( "github.com/grafana/grafana/apps/dashboard/pkg/migration/schemaversion" ) -func RegisterConversions(s *runtime.Scheme, dsInfoProvider schemaversion.DataSourceInfoProvider) error { +func RegisterConversions(s *runtime.Scheme, dsIndexProvider schemaversion.DataSourceIndexProvider) error { // v0 conversions if err := s.AddConversionFunc((*dashv0.Dashboard)(nil), (*dashv1.Dashboard)(nil), withConversionMetrics(dashv0.APIVERSION, dashv1.APIVERSION, func(a, b interface{}, scope conversion.Scope) error { @@ -21,13 +21,13 @@ func RegisterConversions(s *runtime.Scheme, dsInfoProvider schemaversion.DataSou } if err := s.AddConversionFunc((*dashv0.Dashboard)(nil), (*dashv2alpha1.Dashboard)(nil), withConversionMetrics(dashv0.APIVERSION, dashv2alpha1.APIVERSION, func(a, b interface{}, scope conversion.Scope) error { - return Convert_V0_to_V2alpha1(a.(*dashv0.Dashboard), b.(*dashv2alpha1.Dashboard), scope, dsInfoProvider) + return Convert_V0_to_V2alpha1(a.(*dashv0.Dashboard), b.(*dashv2alpha1.Dashboard), scope, dsIndexProvider) })); err != nil { return err } if err := s.AddConversionFunc((*dashv0.Dashboard)(nil), (*dashv2beta1.Dashboard)(nil), withConversionMetrics(dashv0.APIVERSION, dashv2beta1.APIVERSION, func(a, b interface{}, scope conversion.Scope) error { - return Convert_V0_to_V2beta1(a.(*dashv0.Dashboard), b.(*dashv2beta1.Dashboard), scope, dsInfoProvider) + return Convert_V0_to_V2beta1(a.(*dashv0.Dashboard), b.(*dashv2beta1.Dashboard), scope, dsIndexProvider) })); err != nil { return err } @@ -41,13 +41,13 @@ func RegisterConversions(s *runtime.Scheme, dsInfoProvider schemaversion.DataSou } if err := s.AddConversionFunc((*dashv1.Dashboard)(nil), (*dashv2alpha1.Dashboard)(nil), withConversionMetrics(dashv1.APIVERSION, dashv2alpha1.APIVERSION, func(a, b interface{}, scope conversion.Scope) error { - return Convert_V1beta1_to_V2alpha1(a.(*dashv1.Dashboard), b.(*dashv2alpha1.Dashboard), scope, dsInfoProvider) + return Convert_V1beta1_to_V2alpha1(a.(*dashv1.Dashboard), b.(*dashv2alpha1.Dashboard), scope, dsIndexProvider) })); err != nil { return err } if err := s.AddConversionFunc((*dashv1.Dashboard)(nil), (*dashv2beta1.Dashboard)(nil), withConversionMetrics(dashv1.APIVERSION, dashv2beta1.APIVERSION, func(a, b interface{}, scope conversion.Scope) error { - return Convert_V1beta1_to_V2beta1(a.(*dashv1.Dashboard), b.(*dashv2beta1.Dashboard), scope, dsInfoProvider) + return Convert_V1beta1_to_V2beta1(a.(*dashv1.Dashboard), b.(*dashv2beta1.Dashboard), scope, dsIndexProvider) })); err != nil { return err } diff --git a/apps/dashboard/pkg/migration/conversion/v0.go b/apps/dashboard/pkg/migration/conversion/v0.go index 81ea2db5e60..e182a71a52a 100644 --- a/apps/dashboard/pkg/migration/conversion/v0.go +++ b/apps/dashboard/pkg/migration/conversion/v0.go @@ -25,7 +25,7 @@ func Convert_V0_to_V1beta1(in *dashv0.Dashboard, out *dashv1.Dashboard, scope co return nil } -func Convert_V0_to_V2alpha1(in *dashv0.Dashboard, out *dashv2alpha1.Dashboard, scope conversion.Scope, dsInfoProvider schemaversion.DataSourceInfoProvider) error { +func Convert_V0_to_V2alpha1(in *dashv0.Dashboard, out *dashv2alpha1.Dashboard, scope conversion.Scope, dsIndexProvider schemaversion.DataSourceIndexProvider) error { v1beta1 := &dashv1.Dashboard{} if err := ConvertDashboard_V0_to_V1beta1(in, v1beta1, scope); err != nil { out.Status = dashv2alpha1.DashboardStatus{ @@ -48,7 +48,7 @@ func Convert_V0_to_V2alpha1(in *dashv0.Dashboard, out *dashv2alpha1.Dashboard, s return nil } - if err := ConvertDashboard_V1beta1_to_V2alpha1(v1beta1, out, scope, dsInfoProvider); err != nil { + if err := ConvertDashboard_V1beta1_to_V2alpha1(v1beta1, out, scope, dsIndexProvider); err != nil { out.Status = dashv2alpha1.DashboardStatus{ Conversion: &dashv2alpha1.DashboardConversionStatus{ StoredVersion: ptr.To(dashv0.VERSION), @@ -72,7 +72,7 @@ func Convert_V0_to_V2alpha1(in *dashv0.Dashboard, out *dashv2alpha1.Dashboard, s return nil } -func Convert_V0_to_V2beta1(in *dashv0.Dashboard, out *dashv2beta1.Dashboard, scope conversion.Scope, dsInfoProvider schemaversion.DataSourceInfoProvider) error { +func Convert_V0_to_V2beta1(in *dashv0.Dashboard, out *dashv2beta1.Dashboard, scope conversion.Scope, dsIndexProvider schemaversion.DataSourceIndexProvider) error { v1beta1 := &dashv1.Dashboard{} if err := ConvertDashboard_V0_to_V1beta1(in, v1beta1, scope); err != nil { out.Status = dashv2beta1.DashboardStatus{ @@ -86,7 +86,7 @@ func Convert_V0_to_V2beta1(in *dashv0.Dashboard, out *dashv2beta1.Dashboard, sco } v2alpha1 := &dashv2alpha1.Dashboard{} - if err := ConvertDashboard_V1beta1_to_V2alpha1(v1beta1, v2alpha1, scope, dsInfoProvider); err != nil { + if err := ConvertDashboard_V1beta1_to_V2alpha1(v1beta1, v2alpha1, scope, dsIndexProvider); err != nil { out.Status = dashv2beta1.DashboardStatus{ Conversion: &dashv2beta1.DashboardConversionStatus{ StoredVersion: ptr.To(dashv0.VERSION), diff --git a/apps/dashboard/pkg/migration/conversion/v1.go b/apps/dashboard/pkg/migration/conversion/v1.go index 107d3010a9a..48fdbf93b36 100644 --- a/apps/dashboard/pkg/migration/conversion/v1.go +++ b/apps/dashboard/pkg/migration/conversion/v1.go @@ -25,8 +25,8 @@ func Convert_V1beta1_to_V0(in *dashv1.Dashboard, out *dashv0.Dashboard, scope co return nil } -func Convert_V1beta1_to_V2alpha1(in *dashv1.Dashboard, out *dashv2alpha1.Dashboard, scope conversion.Scope, dsInfoProvider schemaversion.DataSourceInfoProvider) error { - if err := ConvertDashboard_V1beta1_to_V2alpha1(in, out, scope, dsInfoProvider); err != nil { +func Convert_V1beta1_to_V2alpha1(in *dashv1.Dashboard, out *dashv2alpha1.Dashboard, scope conversion.Scope, dsIndexProvider schemaversion.DataSourceIndexProvider) error { + if err := ConvertDashboard_V1beta1_to_V2alpha1(in, out, scope, dsIndexProvider); err != nil { out.Status = dashv2alpha1.DashboardStatus{ Conversion: &dashv2alpha1.DashboardConversionStatus{ StoredVersion: ptr.To(dashv1.VERSION), @@ -60,9 +60,9 @@ func Convert_V1beta1_to_V2alpha1(in *dashv1.Dashboard, out *dashv2alpha1.Dashboa return nil } -func Convert_V1beta1_to_V2beta1(in *dashv1.Dashboard, out *dashv2beta1.Dashboard, scope conversion.Scope, dsInfoProvider schemaversion.DataSourceInfoProvider) error { +func Convert_V1beta1_to_V2beta1(in *dashv1.Dashboard, out *dashv2beta1.Dashboard, scope conversion.Scope, dsIndexProvider schemaversion.DataSourceIndexProvider) error { v2alpha1 := &dashv2alpha1.Dashboard{} - if err := ConvertDashboard_V1beta1_to_V2alpha1(in, v2alpha1, scope, dsInfoProvider); err != nil { + if err := ConvertDashboard_V1beta1_to_V2alpha1(in, v2alpha1, scope, dsIndexProvider); err != nil { out.Status = dashv2beta1.DashboardStatus{ Conversion: &dashv2beta1.DashboardConversionStatus{ StoredVersion: ptr.To(dashv1.VERSION), diff --git a/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go b/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go index c514728509e..76a630ac0b6 100644 --- a/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go +++ b/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go @@ -19,25 +19,23 @@ import ( ) // getDefaultDatasourceType gets the default datasource type using the datasource provider -func getDefaultDatasourceType(ctx context.Context, provider schemaversion.DataSourceInfoProvider) string { +func getDefaultDatasourceType(ctx context.Context, provider schemaversion.DataSourceIndexProvider) string { const defaultType = "grafana" if provider == nil { return defaultType } - datasources := provider.GetDataSourceInfo(ctx) - for _, ds := range datasources { - if ds.Default { - return ds.Type - } + datasources := provider.Index(ctx) + if defaultDS := datasources.GetDefault(); defaultDS != nil { + return defaultDS.Type } return defaultType } // getDatasourceTypeByUID gets the datasource type by UID using the datasource provider -func getDatasourceTypeByUID(ctx context.Context, uid string, provider schemaversion.DataSourceInfoProvider) string { +func getDatasourceTypeByUID(ctx context.Context, uid string, provider schemaversion.DataSourceIndexProvider) string { if uid == "" { return getDefaultDatasourceType(ctx, provider) } @@ -46,11 +44,9 @@ func getDatasourceTypeByUID(ctx context.Context, uid string, provider schemavers return "grafana" } - datasources := provider.GetDataSourceInfo(ctx) - for _, ds := range datasources { - if ds.UID == uid { - return ds.Type - } + dsIndex := provider.Index(ctx) + if ds := dsIndex.LookupByUID(uid); ds != nil { + return ds.Type } return getDefaultDatasourceType(ctx, provider) @@ -62,9 +58,9 @@ func getDatasourceTypeByUID(ctx context.Context, uid string, provider schemavers // A background service identity is used because the user who is reading the specific dashboard // may not have access to all the datasources in the dashboard, but the conversion still needs to take place // in order to be able to convert between k8s versions. -func prepareV1beta1ConversionContext(in *dashv1.Dashboard, dsInfoProvider schemaversion.DataSourceInfoProvider) (context.Context, *types.NamespaceInfo, error) { - if dsInfoProvider == nil { - return nil, nil, fmt.Errorf("datasource provider not initialized") +func prepareV1beta1ConversionContext(in *dashv1.Dashboard, dsIndexProvider schemaversion.DataSourceIndexProvider) (context.Context, *types.NamespaceInfo, error) { + if dsIndexProvider == nil { + return nil, nil, fmt.Errorf("datasource index provider not initialized") } namespace := in.GetNamespace() @@ -84,24 +80,29 @@ func prepareV1beta1ConversionContext(in *dashv1.Dashboard, dsInfoProvider schema return ctx, &nsInfo, nil } -func ConvertDashboard_V1beta1_to_V2alpha1(in *dashv1.Dashboard, out *dashv2alpha1.Dashboard, scope conversion.Scope, dsInfoProvider schemaversion.DataSourceInfoProvider) error { +func ConvertDashboard_V1beta1_to_V2alpha1(in *dashv1.Dashboard, out *dashv2alpha1.Dashboard, scope conversion.Scope, dsIndexProvider schemaversion.DataSourceIndexProvider) error { out.ObjectMeta = in.ObjectMeta out.APIVersion = dashv2alpha1.APIVERSION out.Kind = in.Kind + // Wrap the provider to ensure Index() is called only once during this conversion. + // This prevents multiple DB queries and index builds when the provider is used in multiple places + // (e.g., getDefaultDatasourceType, getDatasourceTypeByUID, panel datasource conversions, etc.) + dsIndexProviderWrapped := schemaversion.WrapIndexProviderWithOnce(dsIndexProvider) + // Prepare context with namespace and service identity // The datasource provider is passed as a parameter (captured in closure when conversions are registered) - ctx, _, err := prepareV1beta1ConversionContext(in, dsInfoProvider) + ctx, _, err := prepareV1beta1ConversionContext(in, dsIndexProviderWrapped) if err != nil { // If context preparation fails, return error to be handled by wrapper // The wrapper will set status and handle gracefully return fmt.Errorf("failed to prepare conversion context: %w", err) } - return convertDashboardSpec_V1beta1_to_V2alpha1(&in.Spec, &out.Spec, scope, ctx, dsInfoProvider) + return convertDashboardSpec_V1beta1_to_V2alpha1(&in.Spec, &out.Spec, scope, ctx, dsIndexProviderWrapped) } -func convertDashboardSpec_V1beta1_to_V2alpha1(in *dashv1.DashboardSpec, out *dashv2alpha1.DashboardSpec, scope conversion.Scope, ctx context.Context, dsInfoProvider schemaversion.DataSourceInfoProvider) error { +func convertDashboardSpec_V1beta1_to_V2alpha1(in *dashv1.DashboardSpec, out *dashv2alpha1.DashboardSpec, scope conversion.Scope, ctx context.Context, dsIndexProvider schemaversion.DataSourceIndexProvider) error { // Parse the unstructured spec into a dashboard JSON structure dashboardJSON, ok := in.Object["dashboard"] if !ok { @@ -165,7 +166,7 @@ func convertDashboardSpec_V1beta1_to_V2alpha1(in *dashv1.DashboardSpec, out *das out.Links = transformLinks(dashboard) // Transform panels to elements and layout - elements, layout, err := transformPanelsToElementsAndLayout(ctx, dashboard, dsInfoProvider) + elements, layout, err := transformPanelsToElementsAndLayout(ctx, dashboard, dsIndexProvider) if err != nil { return fmt.Errorf("failed to transform panels: %w", err) } @@ -173,7 +174,7 @@ func convertDashboardSpec_V1beta1_to_V2alpha1(in *dashv1.DashboardSpec, out *das out.Layout = layout // Transform variables - variables, err := transformVariables(ctx, dashboard, dsInfoProvider) + variables, err := transformVariables(ctx, dashboard, dsIndexProvider) if err != nil { return fmt.Errorf("failed to transform variables: %w", err) } @@ -391,7 +392,7 @@ func transformLinks(dashboard map[string]interface{}) []dashv2alpha1.DashboardDa // Panel transformation constants const GRID_ROW_HEIGHT = 1 -func transformPanelsToElementsAndLayout(ctx context.Context, dashboard map[string]interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) (map[string]dashv2alpha1.DashboardElement, dashv2alpha1.DashboardGridLayoutKindOrRowsLayoutKindOrAutoGridLayoutKindOrTabsLayoutKind, error) { +func transformPanelsToElementsAndLayout(ctx context.Context, dashboard map[string]interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) (map[string]dashv2alpha1.DashboardElement, dashv2alpha1.DashboardGridLayoutKindOrRowsLayoutKindOrAutoGridLayoutKindOrTabsLayoutKind, error) { panels, ok := dashboard["panels"].([]interface{}) if !ok { // Return empty elements and default grid layout @@ -419,13 +420,13 @@ func transformPanelsToElementsAndLayout(ctx context.Context, dashboard map[strin } if hasRowPanels { - return convertToRowsLayout(ctx, panels, dsInfoProvider) + return convertToRowsLayout(ctx, panels, dsIndexProvider) } - return convertToGridLayout(ctx, panels, dsInfoProvider) + return convertToGridLayout(ctx, panels, dsIndexProvider) } -func convertToGridLayout(ctx context.Context, panels []interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) (map[string]dashv2alpha1.DashboardElement, dashv2alpha1.DashboardGridLayoutKindOrRowsLayoutKindOrAutoGridLayoutKindOrTabsLayoutKind, error) { +func convertToGridLayout(ctx context.Context, panels []interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) (map[string]dashv2alpha1.DashboardElement, dashv2alpha1.DashboardGridLayoutKindOrRowsLayoutKindOrAutoGridLayoutKindOrTabsLayoutKind, error) { elements := make(map[string]dashv2alpha1.DashboardElement) items := make([]dashv2alpha1.DashboardGridLayoutItemKind, 0, len(panels)) @@ -435,7 +436,7 @@ func convertToGridLayout(ctx context.Context, panels []interface{}, dsInfoProvid continue } - element, elementName, err := buildElement(ctx, panelMap, dsInfoProvider) + element, elementName, err := buildElement(ctx, panelMap, dsIndexProvider) if err != nil { continue // Skip invalid panels } @@ -456,7 +457,7 @@ func convertToGridLayout(ctx context.Context, panels []interface{}, dsInfoProvid return elements, layout, nil } -func convertToRowsLayout(ctx context.Context, panels []interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) (map[string]dashv2alpha1.DashboardElement, dashv2alpha1.DashboardGridLayoutKindOrRowsLayoutKindOrAutoGridLayoutKindOrTabsLayoutKind, error) { +func convertToRowsLayout(ctx context.Context, panels []interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) (map[string]dashv2alpha1.DashboardElement, dashv2alpha1.DashboardGridLayoutKindOrRowsLayoutKindOrAutoGridLayoutKindOrTabsLayoutKind, error) { elements := make(map[string]dashv2alpha1.DashboardElement) rows := make([]dashv2alpha1.DashboardRowsLayoutRowKind, 0) @@ -492,7 +493,7 @@ func convertToRowsLayout(ctx context.Context, panels []interface{}, dsInfoProvid if collapsedPanels, ok := panelMap["panels"].([]interface{}); ok { for _, panel := range collapsedPanels { if collapsedPanelMap, ok := panel.(map[string]interface{}); ok { - element, name, err := buildElement(ctx, collapsedPanelMap, dsInfoProvider) + element, name, err := buildElement(ctx, collapsedPanelMap, dsIndexProvider) if err == nil { elements[name] = element rowElements = append(rowElements, buildGridItemKind(collapsedPanelMap, name, int64Ptr(yOffsetInRows(collapsedPanelMap, legacyRowY)))) @@ -504,7 +505,7 @@ func convertToRowsLayout(ctx context.Context, panels []interface{}, dsInfoProvid currentRow = buildRowKind(panelMap, rowElements) } else { // Regular panel - element, elementName, err := buildElement(ctx, panelMap, dsInfoProvider) + element, elementName, err := buildElement(ctx, panelMap, dsIndexProvider) if err != nil { continue // Skip invalid panels } @@ -566,7 +567,7 @@ func convertToRowsLayout(ctx context.Context, panels []interface{}, dsInfoProvid return elements, layout, nil } -func buildElement(ctx context.Context, panelMap map[string]interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) (dashv2alpha1.DashboardElement, string, error) { +func buildElement(ctx context.Context, panelMap map[string]interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) (dashv2alpha1.DashboardElement, string, error) { panelID := getIntField(panelMap, "id", 0) elementName := fmt.Sprintf("panel-%d", panelID) @@ -592,7 +593,7 @@ func buildElement(ctx context.Context, panelMap map[string]interface{}, dsInfoPr } // Regular panel - panelKind, err := buildPanelKind(ctx, panelMap, dsInfoProvider) + panelKind, err := buildPanelKind(ctx, panelMap, dsIndexProvider) if err != nil { return dashv2alpha1.DashboardElement{}, "", err } @@ -604,11 +605,11 @@ func buildElement(ctx context.Context, panelMap map[string]interface{}, dsInfoPr return element, elementName, nil } -func buildPanelKind(ctx context.Context, panelMap map[string]interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) (*dashv2alpha1.DashboardPanelKind, error) { +func buildPanelKind(ctx context.Context, panelMap map[string]interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) (*dashv2alpha1.DashboardPanelKind, error) { panelID := float64(getIntField(panelMap, "id", 0)) // Transform queries - queries := transformPanelQueries(ctx, panelMap, dsInfoProvider) + queries := transformPanelQueries(ctx, panelMap, dsIndexProvider) // Transform transformations transformations := transformPanelTransformations(panelMap) @@ -864,7 +865,7 @@ func transformVariableSortToEnum(sort interface{}) dashv2alpha1.DashboardVariabl } } -func transformVariables(ctx context.Context, dashboard map[string]interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) ([]dashv2alpha1.DashboardVariableKind, error) { +func transformVariables(ctx context.Context, dashboard map[string]interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) ([]dashv2alpha1.DashboardVariableKind, error) { templating, ok := dashboard["templating"].(map[string]interface{}) if !ok { return []dashv2alpha1.DashboardVariableKind{}, nil @@ -889,11 +890,11 @@ func transformVariables(ctx context.Context, dashboard map[string]interface{}, d switch varType { case "query": - if queryVar, err := buildQueryVariable(ctx, varMap, commonProps, dsInfoProvider); err == nil { + if queryVar, err := buildQueryVariable(ctx, varMap, commonProps, dsIndexProvider); err == nil { variables = append(variables, queryVar) } case "datasource": - if dsVar, err := buildDatasourceVariable(ctx, varMap, commonProps, dsInfoProvider); err == nil { + if dsVar, err := buildDatasourceVariable(ctx, varMap, commonProps, dsIndexProvider); err == nil { variables = append(variables, dsVar) } case "custom": @@ -901,7 +902,7 @@ func transformVariables(ctx context.Context, dashboard map[string]interface{}, d variables = append(variables, customVar) } case "adhoc": - if adhocVar, err := buildAdhocVariable(ctx, varMap, commonProps, dsInfoProvider); err == nil { + if adhocVar, err := buildAdhocVariable(ctx, varMap, commonProps, dsIndexProvider); err == nil { variables = append(variables, adhocVar) } case "constant": @@ -917,7 +918,7 @@ func transformVariables(ctx context.Context, dashboard map[string]interface{}, d variables = append(variables, textVar) } case "groupby": - if groupByVar, err := buildGroupByVariable(ctx, varMap, commonProps, dsInfoProvider); err == nil { + if groupByVar, err := buildGroupByVariable(ctx, varMap, commonProps, dsIndexProvider); err == nil { variables = append(variables, groupByVar) } default: @@ -1093,7 +1094,7 @@ func buildDataQueryKindForVariable(query interface{}, datasourceType string) das } // Query Variable -func buildQueryVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsInfoProvider schemaversion.DataSourceInfoProvider) (dashv2alpha1.DashboardVariableKind, error) { +func buildQueryVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsIndexProvider schemaversion.DataSourceIndexProvider) (dashv2alpha1.DashboardVariableKind, error) { datasource := varMap["datasource"] var datasourceType, datasourceUID string @@ -1104,13 +1105,13 @@ func buildQueryVariable(ctx context.Context, varMap map[string]interface{}, comm // If we have a UID, use it to get the correct type from the datasource service // BUT: Don't try to resolve types for template variables if datasourceUID != "" && datasourceType == "" && !isTemplateVariable(datasourceUID) { - datasourceType = getDatasourceTypeByUID(ctx, datasourceUID, dsInfoProvider) + datasourceType = getDatasourceTypeByUID(ctx, datasourceUID, dsIndexProvider) } else if datasourceUID == "" && datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType(ctx, dsInfoProvider) + datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider) } } else { - datasourceType = getDefaultDatasourceType(ctx, dsInfoProvider) + datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider) } queryVar := &dashv2alpha1.DashboardQueryVariableKind{ @@ -1161,8 +1162,8 @@ func buildQueryVariable(ctx context.Context, varMap map[string]interface{}, comm } // Datasource Variable -func buildDatasourceVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsInfoProvider schemaversion.DataSourceInfoProvider) (dashv2alpha1.DashboardVariableKind, error) { - pluginId := getDefaultDatasourceType(ctx, dsInfoProvider) +func buildDatasourceVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsIndexProvider schemaversion.DataSourceIndexProvider) (dashv2alpha1.DashboardVariableKind, error) { + pluginId := getDefaultDatasourceType(ctx, dsIndexProvider) if query := varMap["query"]; query != nil { if queryStr, ok := query.(string); ok { pluginId = queryStr @@ -1370,7 +1371,7 @@ func buildTextVariable(varMap map[string]interface{}, commonProps CommonVariable } // Adhoc Variable -func buildAdhocVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsInfoProvider schemaversion.DataSourceInfoProvider) (dashv2alpha1.DashboardVariableKind, error) { +func buildAdhocVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsIndexProvider schemaversion.DataSourceIndexProvider) (dashv2alpha1.DashboardVariableKind, error) { datasource := varMap["datasource"] var datasourceType, datasourceUID string @@ -1381,13 +1382,13 @@ func buildAdhocVariable(ctx context.Context, varMap map[string]interface{}, comm // If we have a UID, use it to get the correct type from the datasource service // BUT: Don't try to resolve types for template variables if datasourceUID != "" && datasourceType == "" && !isTemplateVariable(datasourceUID) { - datasourceType = getDatasourceTypeByUID(ctx, datasourceUID, dsInfoProvider) + datasourceType = getDatasourceTypeByUID(ctx, datasourceUID, dsIndexProvider) } else if datasourceUID == "" && datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType(ctx, dsInfoProvider) + datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider) } } else { - datasourceType = getDefaultDatasourceType(ctx, dsInfoProvider) + datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider) } adhocVar := &dashv2alpha1.DashboardAdhocVariableKind{ @@ -1532,7 +1533,7 @@ func transformMetricFindValues(values []interface{}) []dashv2alpha1.DashboardMet } // GroupBy Variable -func buildGroupByVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsInfoProvider schemaversion.DataSourceInfoProvider) (dashv2alpha1.DashboardVariableKind, error) { +func buildGroupByVariable(ctx context.Context, varMap map[string]interface{}, commonProps CommonVariableProperties, dsIndexProvider schemaversion.DataSourceIndexProvider) (dashv2alpha1.DashboardVariableKind, error) { datasource := varMap["datasource"] var datasourceType, datasourceUID string @@ -1543,13 +1544,13 @@ func buildGroupByVariable(ctx context.Context, varMap map[string]interface{}, co // If we have a UID, use it to get the correct type from the datasource service // BUT: Don't try to resolve types for template variables if datasourceUID != "" && datasourceType == "" && !isTemplateVariable(datasourceUID) { - datasourceType = getDatasourceTypeByUID(ctx, datasourceUID, dsInfoProvider) + datasourceType = getDatasourceTypeByUID(ctx, datasourceUID, dsIndexProvider) } else if datasourceUID == "" && datasourceType == "" { // If no UID and no type, use default - datasourceType = getDefaultDatasourceType(ctx, dsInfoProvider) + datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider) } } else { - datasourceType = getDefaultDatasourceType(ctx, dsInfoProvider) + datasourceType = getDefaultDatasourceType(ctx, dsIndexProvider) } groupByVar := &dashv2alpha1.DashboardGroupByVariableKind{ @@ -1740,7 +1741,7 @@ func buildAnnotationFilter(filterMap map[string]interface{}) *dashv2alpha1.Dashb // Panel helper functions -func transformPanelQueries(ctx context.Context, panelMap map[string]interface{}, dsInfoProvider schemaversion.DataSourceInfoProvider) []dashv2alpha1.DashboardPanelQueryKind { +func transformPanelQueries(ctx context.Context, panelMap map[string]interface{}, dsIndexProvider schemaversion.DataSourceIndexProvider) []dashv2alpha1.DashboardPanelQueryKind { targets, ok := panelMap["targets"].([]interface{}) if !ok { return []dashv2alpha1.DashboardPanelQueryKind{} @@ -1755,10 +1756,10 @@ func transformPanelQueries(ctx context.Context, panelMap map[string]interface{}, // If we have a UID, use it to get the correct type from the datasource service // BUT: Don't try to resolve types for template variables if dsUID != "" && dsType == "" && !isTemplateVariable(dsUID) { - dsType = getDatasourceTypeByUID(ctx, dsUID, dsInfoProvider) + dsType = getDatasourceTypeByUID(ctx, dsUID, dsIndexProvider) } else if dsUID == "" && dsType == "" { // If no UID and no type, use default - dsType = getDefaultDatasourceType(ctx, dsInfoProvider) + dsType = getDefaultDatasourceType(ctx, dsIndexProvider) } panelDatasource = &dashv2alpha1.DashboardDataSourceRef{ @@ -1771,7 +1772,7 @@ func transformPanelQueries(ctx context.Context, panelMap map[string]interface{}, for _, target := range targets { if targetMap, ok := target.(map[string]interface{}); ok { - query := transformSingleQuery(ctx, targetMap, panelDatasource, dsInfoProvider) + query := transformSingleQuery(ctx, targetMap, panelDatasource, dsIndexProvider) queries = append(queries, query) } } @@ -1779,7 +1780,7 @@ func transformPanelQueries(ctx context.Context, panelMap map[string]interface{}, return queries } -func transformSingleQuery(ctx context.Context, targetMap map[string]interface{}, panelDatasource *dashv2alpha1.DashboardDataSourceRef, dsInfoProvider schemaversion.DataSourceInfoProvider) dashv2alpha1.DashboardPanelQueryKind { +func transformSingleQuery(ctx context.Context, targetMap map[string]interface{}, panelDatasource *dashv2alpha1.DashboardDataSourceRef, dsIndexProvider schemaversion.DataSourceIndexProvider) dashv2alpha1.DashboardPanelQueryKind { refId := schemaversion.GetStringValue(targetMap, "refId", "A") hidden := getBoolField(targetMap, "hide", false) @@ -1793,7 +1794,7 @@ func transformSingleQuery(ctx context.Context, targetMap map[string]interface{}, // If we have a UID, use it to get the correct type from the datasource service // BUT: Don't try to resolve types for template variables if queryDatasourceUID != "" && queryDatasourceType == "" && !isTemplateVariable(queryDatasourceUID) { - queryDatasourceType = getDatasourceTypeByUID(ctx, queryDatasourceUID, dsInfoProvider) + queryDatasourceType = getDatasourceTypeByUID(ctx, queryDatasourceUID, dsIndexProvider) } } else if panelDatasource != nil { // Only use panel datasource if it's not a mixed datasource diff --git a/apps/dashboard/pkg/migration/migrate.go b/apps/dashboard/pkg/migration/migrate.go index 9c887b553c6..cce80cfe209 100644 --- a/apps/dashboard/pkg/migration/migrate.go +++ b/apps/dashboard/pkg/migration/migrate.go @@ -9,24 +9,23 @@ import ( ) // Initialize provides the migrator singleton with required dependencies and builds the map of migrations. -func Initialize(dsInfoProvider schemaversion.DataSourceInfoProvider) { - migratorInstance.init(dsInfoProvider) +func Initialize(dsIndexProvider schemaversion.DataSourceIndexProvider) { + migratorInstance.init(dsIndexProvider) } -// GetDataSourceInfoProvider returns the datasource info provider instance that was initialized. -// This allows reuse of the same provider instance across migrations and conversions. -func GetDataSourceInfoProvider() schemaversion.DataSourceInfoProvider { +// GetDataSourceIndexProvider returns the datasource index provider instance that was initialized. +func GetDataSourceIndexProvider() schemaversion.DataSourceIndexProvider { // Wait for initialization to complete <-migratorInstance.ready - return migratorInstance.dsInfoProvider + return migratorInstance.dsIndexProvider } // ResetForTesting resets the migrator singleton for testing purposes. func ResetForTesting() { migratorInstance = &migrator{ - migrations: map[int]schemaversion.SchemaVersionMigrationFunc{}, - ready: make(chan struct{}), - dsInfoProvider: nil, + migrations: map[int]schemaversion.SchemaVersionMigrationFunc{}, + ready: make(chan struct{}), + dsIndexProvider: nil, } initOnce = sync.Once{} } @@ -46,15 +45,15 @@ var ( ) type migrator struct { - ready chan struct{} - migrations map[int]schemaversion.SchemaVersionMigrationFunc - dsInfoProvider schemaversion.DataSourceInfoProvider + ready chan struct{} + migrations map[int]schemaversion.SchemaVersionMigrationFunc + dsIndexProvider schemaversion.DataSourceIndexProvider } -func (m *migrator) init(dsInfoProvider schemaversion.DataSourceInfoProvider) { +func (m *migrator) init(dsIndexProvider schemaversion.DataSourceIndexProvider) { initOnce.Do(func() { - m.dsInfoProvider = dsInfoProvider - m.migrations = schemaversion.GetMigrations(dsInfoProvider) + m.dsIndexProvider = dsIndexProvider + m.migrations = schemaversion.GetMigrations(dsIndexProvider) close(m.ready) }) } diff --git a/apps/dashboard/pkg/migration/schemaversion/README.md b/apps/dashboard/pkg/migration/schemaversion/README.md index e1cfdc45a95..f1a5532e09a 100644 --- a/apps/dashboard/pkg/migration/schemaversion/README.md +++ b/apps/dashboard/pkg/migration/schemaversion/README.md @@ -96,7 +96,7 @@ func V{N}(_ context.Context, dashboard map[string]interface{}) error { Add your migration to `migrations.go`: ```go -func GetMigrations(dsInfoProvider DataSourceInfoProvider) map[int]SchemaVersionMigrationFunc { +func GetMigrations(dsIndexProvider DataSourceIndexProvider) map[int]SchemaVersionMigrationFunc { return map[int]SchemaVersionMigrationFunc{ // ... existing migrations {N}: V{N}, // Add your migration here diff --git a/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go b/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go index 44d85cc20bf..b2020fa57cc 100644 --- a/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go +++ b/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go @@ -1,9 +1,110 @@ package schemaversion +import ( + "context" + "sync" +) + // Shared utility functions for datasource migrations across different schema versions. // These functions handle the common logic for migrating datasource references from // string names/UIDs to structured reference objects with uid, type, and apiVersion. +// onceIndexProvider wraps a DataSourceIndexProvider to ensure Index() is only called once. +// This prevents multiple DB queries and index builds during operations that may call +// provider.Index() multiple times (e.g., dashboard conversions with many datasource lookups). +// +// Thread-safe: Uses sync.Once to guarantee single execution even under concurrent access. +type onceIndexProvider struct { + provider DataSourceIndexProvider + once sync.Once + index *DatasourceIndex +} + +// Index returns the cached index, building it exactly once on first call. +func (p *onceIndexProvider) Index(ctx context.Context) *DatasourceIndex { + p.once.Do(func() { + p.index = p.provider.Index(ctx) + }) + return p.index +} + +// WrapIndexProviderWithOnce wraps a provider to cache the index for a single operation. +// Useful for conversions or migrations that may call provider.Index() multiple times. +// +// Example usage in dashboard conversion: +// +// onceDsIndexProvider := schemaversion.WrapIndexProviderWithOnce(dsIndexProvider) +// // Now all calls to onceDsIndexProvider.Index(ctx) return the same cached index +func WrapIndexProviderWithOnce(provider DataSourceIndexProvider) DataSourceIndexProvider { + if provider == nil { + return nil + } + return &onceIndexProvider{ + provider: provider, + } +} + +// DatasourceIndex provides O(1) lookup of datasources by name or UID. +type DatasourceIndex struct { + ByName map[string]*DataSourceInfo + ByUID map[string]*DataSourceInfo + DefaultDS *DataSourceInfo +} + +// NewDatasourceIndex creates an index from a list of datasources. +// Iterates once through the list to build name and UID maps for O(1) lookups. +func NewDatasourceIndex(datasources []DataSourceInfo) *DatasourceIndex { + idx := &DatasourceIndex{ + ByName: make(map[string]*DataSourceInfo, len(datasources)), + ByUID: make(map[string]*DataSourceInfo, len(datasources)), + } + + for i := range datasources { + ds := &datasources[i] + + // Index by name if present + if ds.Name != "" { + idx.ByName[ds.Name] = ds + } + + // Index by UID if present + if ds.UID != "" { + idx.ByUID[ds.UID] = ds + } + + // Track default datasource + if ds.Default { + idx.DefaultDS = ds + } + } + + return idx +} + +// Lookup finds a datasource by name or UID string. +// Returns the datasource info if found, nil otherwise. +func (idx *DatasourceIndex) Lookup(nameOrUID string) *DataSourceInfo { + // Try name first (most common in legacy dashboards) + if ds := idx.ByName[nameOrUID]; ds != nil { + return ds + } + // Try UID second + return idx.ByUID[nameOrUID] +} + +func (idx *DatasourceIndex) LookupByUID(uid string) *DataSourceInfo { + return idx.ByUID[uid] +} + +func (idx *DatasourceIndex) LookupByName(name string) *DataSourceInfo { + return idx.ByName[name] +} + +// GetDefault returns the default datasource, if one exists. +func (idx *DatasourceIndex) GetDefault() *DataSourceInfo { + return idx.DefaultDS +} + // GetDataSourceRef creates a datasource reference object with uid, type and optional apiVersion func GetDataSourceRef(ds *DataSourceInfo) map[string]interface{} { if ds == nil { @@ -19,21 +120,6 @@ func GetDataSourceRef(ds *DataSourceInfo) map[string]interface{} { return ref } -// GetDefaultDSInstanceSettings returns the default datasource if one exists -func GetDefaultDSInstanceSettings(datasources []DataSourceInfo) *DataSourceInfo { - for _, ds := range datasources { - if ds.Default { - return &DataSourceInfo{ - UID: ds.UID, - Type: ds.Type, - Name: ds.Name, - APIVersion: ds.APIVersion, - } - } - } - return nil -} - // isDataSourceRef checks if the object is a valid DataSourceRef (has uid or type) // Matches the frontend isDataSourceRef function in datasource.ts func isDataSourceRef(ref interface{}) bool { @@ -64,7 +150,7 @@ func isDataSourceRef(ref interface{}) bool { // Options: // - returnDefaultAsNull: if true, returns nil for "default" datasources (used in V33) // - returnDefaultAsNull: if false, returns reference for "default" datasources (used in V36) -func MigrateDatasourceNameToRef(nameOrRef interface{}, options map[string]bool, datasources []DataSourceInfo) map[string]interface{} { +func MigrateDatasourceNameToRef(nameOrRef interface{}, options map[string]bool, index *DatasourceIndex) map[string]interface{} { if options["returnDefaultAsNull"] && (nameOrRef == nil || nameOrRef == "default") { return nil } @@ -76,8 +162,7 @@ func MigrateDatasourceNameToRef(nameOrRef interface{}, options map[string]bool, // Look up datasource by name/UID if nameOrRef == nil || nameOrRef == "default" { - ds := GetDefaultDSInstanceSettings(datasources) - if ds != nil { + if ds := index.GetDefault(); ds != nil { return GetDataSourceRef(ds) } } @@ -90,16 +175,8 @@ func MigrateDatasourceNameToRef(nameOrRef interface{}, options map[string]bool, return map[string]interface{}{} } - // Search for matching datasource - for _, ds := range datasources { - if str == ds.Name || str == ds.UID { - return GetDataSourceRef(&DataSourceInfo{ - UID: ds.UID, - Type: ds.Type, - Name: ds.Name, - APIVersion: ds.APIVersion, - }) - } + if ds := index.Lookup(str); ds != nil { + return GetDataSourceRef(ds) } // Unknown datasource name should be preserved as UID-only reference diff --git a/apps/dashboard/pkg/migration/schemaversion/datasource_utils_test.go b/apps/dashboard/pkg/migration/schemaversion/datasource_utils_test.go index 85452a9c892..1be29a65c19 100644 --- a/apps/dashboard/pkg/migration/schemaversion/datasource_utils_test.go +++ b/apps/dashboard/pkg/migration/schemaversion/datasource_utils_test.go @@ -67,68 +67,13 @@ func TestGetDataSourceRef(t *testing.T) { } } -func TestGetDefaultDSInstanceSettings(t *testing.T) { - tests := []struct { - name string - datasources []schemaversion.DataSourceInfo - expected *schemaversion.DataSourceInfo - }{ - { - name: "empty datasources list", - datasources: []schemaversion.DataSourceInfo{}, - expected: nil, - }, - { - name: "no default datasource", - datasources: []schemaversion.DataSourceInfo{ - {UID: "existing-ref-uid", Type: "prometheus", Name: "Existing Ref Name", Default: false}, - {UID: "existing-target-uid", Type: "elasticsearch", Name: "Existing Target Name", Default: false}, - }, - expected: nil, - }, - { - name: "single default datasource", - datasources: []schemaversion.DataSourceInfo{ - {UID: "existing-ref-uid", Type: "prometheus", Name: "Existing Ref Name", Default: false}, - {UID: "default-ds-uid", Type: "prometheus", Name: "Default Test Datasource Name", Default: true, APIVersion: "v1"}, - {UID: "existing-target-uid", Type: "elasticsearch", Name: "Existing Target Name", Default: false}, - }, - expected: &schemaversion.DataSourceInfo{ - UID: "default-ds-uid", - Type: "prometheus", - Name: "Default Test Datasource Name", - APIVersion: "v1", - }, - }, - { - name: "multiple default datasources returns first", - datasources: []schemaversion.DataSourceInfo{ - {UID: "first-default", Type: "prometheus", Name: "First Default", Default: true, APIVersion: "v1"}, - {UID: "second-default", Type: "elasticsearch", Name: "Second Default", Default: true, APIVersion: "v2"}, - }, - expected: &schemaversion.DataSourceInfo{ - UID: "first-default", - Type: "prometheus", - Name: "First Default", - APIVersion: "v1", - }, - }, - } - - for _, tt := range tests { - t.Run(tt.name, func(t *testing.T) { - result := schemaversion.GetDefaultDSInstanceSettings(tt.datasources) - assert.Equal(t, tt.expected, result) - }) - } -} - func TestMigrateDatasourceNameToRef(t *testing.T) { datasources := []schemaversion.DataSourceInfo{ {UID: "default-ds-uid", Type: "prometheus", Name: "Default Test Datasource Name", Default: true, APIVersion: "v1"}, {UID: "existing-target-uid", Type: "elasticsearch", Name: "Existing Target Name", Default: false, APIVersion: "v2"}, {UID: "existing-ref-uid", Type: "prometheus", Name: "Existing Ref Name", Default: false, APIVersion: "v1"}, } + index := schemaversion.NewDatasourceIndex(datasources) t.Run("returnDefaultAsNull: true", func(t *testing.T) { options := map[string]bool{"returnDefaultAsNull": true} @@ -193,7 +138,7 @@ func TestMigrateDatasourceNameToRef(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, datasources) + result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, index) assert.Equal(t, tt.expected, result) }) } @@ -261,7 +206,7 @@ func TestMigrateDatasourceNameToRef(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, datasources) + result := schemaversion.MigrateDatasourceNameToRef(tt.nameOrRef, options, index) assert.Equal(t, tt.expected, result) }) } @@ -274,7 +219,7 @@ func TestMigrateDatasourceNameToRef(t *testing.T) { nameOrRef := map[string]interface{}{ "type": "prometheus", } - result := schemaversion.MigrateDatasourceNameToRef(nameOrRef, options, datasources) + result := schemaversion.MigrateDatasourceNameToRef(nameOrRef, options, index) expected := map[string]interface{}{ "type": "prometheus", } @@ -282,13 +227,14 @@ func TestMigrateDatasourceNameToRef(t *testing.T) { }) t.Run("integer input should return nil", func(t *testing.T) { - result := schemaversion.MigrateDatasourceNameToRef(123, options, datasources) + result := schemaversion.MigrateDatasourceNameToRef(123, options, index) expected := map[string]interface{}(nil) assert.Equal(t, expected, result) }) t.Run("empty datasources list", func(t *testing.T) { - result := schemaversion.MigrateDatasourceNameToRef("any-ds", options, []schemaversion.DataSourceInfo{}) + emptyIndex := schemaversion.NewDatasourceIndex([]schemaversion.DataSourceInfo{}) + result := schemaversion.MigrateDatasourceNameToRef("any-ds", options, emptyIndex) expected := map[string]interface{}{ "uid": "any-ds", } diff --git a/apps/dashboard/pkg/migration/schemaversion/migrations.go b/apps/dashboard/pkg/migration/schemaversion/migrations.go index a278c2e685e..9f670e751ef 100644 --- a/apps/dashboard/pkg/migration/schemaversion/migrations.go +++ b/apps/dashboard/pkg/migration/schemaversion/migrations.go @@ -22,10 +22,10 @@ type DataSourceInfo struct { APIVersion string } -type DataSourceInfoProvider interface { - // GetDataSourceInfo returns a list of all data sources with their info - // The context must have the namespace in it - GetDataSourceInfo(ctx context.Context) []DataSourceInfo +type DataSourceIndexProvider interface { + + // Index returns a pre-built index for O(1) datasource lookups. + Index(ctx context.Context) *DatasourceIndex } type PanelPluginInfo struct { @@ -33,7 +33,7 @@ type PanelPluginInfo struct { Version string } -func GetMigrations(dsInfoProvider DataSourceInfoProvider) map[int]SchemaVersionMigrationFunc { +func GetMigrations(dsIndexProvider DataSourceIndexProvider) map[int]SchemaVersionMigrationFunc { return map[int]SchemaVersionMigrationFunc{ 2: V2, 3: V3, @@ -66,10 +66,10 @@ func GetMigrations(dsInfoProvider DataSourceInfoProvider) map[int]SchemaVersionM 30: V30, 31: V31, 32: V32, - 33: V33(dsInfoProvider), + 33: V33(dsIndexProvider), 34: V34, 35: V35, - 36: V36(dsInfoProvider), + 36: V36(dsIndexProvider), 37: V37, 38: V38, 39: V39, diff --git a/apps/dashboard/pkg/migration/schemaversion/v33.go b/apps/dashboard/pkg/migration/schemaversion/v33.go index 738ee3118f2..05108854dfc 100644 --- a/apps/dashboard/pkg/migration/schemaversion/v33.go +++ b/apps/dashboard/pkg/migration/schemaversion/v33.go @@ -60,22 +60,24 @@ import ( // { "refId": "A", "datasource": "default" } // ] // } -func V33(dsInfo DataSourceInfoProvider) SchemaVersionMigrationFunc { +func V33(dsIndexProvider DataSourceIndexProvider) SchemaVersionMigrationFunc { return func(ctx context.Context, dashboard map[string]interface{}) error { - datasources := dsInfo.GetDataSourceInfo(ctx) if dashboard == nil { dashboard = map[string]interface{}{} } dashboard["schemaVersion"] = int(33) - migratePanelsV33(dashboard, datasources) + // Build datasource index directly from provider for O(1) lookups + index := dsIndexProvider.Index(ctx) + + migratePanelsV33(dashboard, index) return nil } } // migratePanelsV33 updates datasource references in dashboard panels for V33 migration -func migratePanelsV33(dashboard map[string]interface{}, datasources []DataSourceInfo) { +func migratePanelsV33(dashboard map[string]interface{}, index *DatasourceIndex) { if dashboard == nil { return } @@ -90,7 +92,7 @@ func migratePanelsV33(dashboard map[string]interface{}, datasources []DataSource continue } - migratePanelDatasourcesV33(panelMap, datasources) + migratePanelDatasourcesV33(panelMap, index) // Handle nested panels in collapsed rows nestedPanels, hasNested := panelMap["panels"].([]interface{}) @@ -103,15 +105,15 @@ func migratePanelsV33(dashboard map[string]interface{}, datasources []DataSource if !ok { continue } - migratePanelDatasourcesV33(np, datasources) + migratePanelDatasourcesV33(np, index) } } } // migratePanelDatasourcesV33 updates datasource references in a single panel and its targets for V33 migration -func migratePanelDatasourcesV33(panelMap map[string]interface{}, datasources []DataSourceInfo) { +func migratePanelDatasourcesV33(panelMap map[string]interface{}, index *DatasourceIndex) { // Handle panel datasource - always set result (even if nil) - if result := MigrateDatasourceNameToRef(panelMap["datasource"], map[string]bool{"returnDefaultAsNull": true}, datasources); result != nil { + if result := MigrateDatasourceNameToRef(panelMap["datasource"], map[string]bool{"returnDefaultAsNull": true}, index); result != nil { panelMap["datasource"] = result } else { panelMap["datasource"] = nil @@ -135,7 +137,7 @@ func migratePanelDatasourcesV33(panelMap map[string]interface{}, datasources []D } // Only set target datasource if migration result is not nil - if targetRef := MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": true}, datasources); targetRef != nil { + if targetRef := MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": true}, index); targetRef != nil { targetMap["datasource"] = targetRef } // If targetRef is nil, leave target.datasource unchanged (preserves "default" strings, etc.) diff --git a/apps/dashboard/pkg/migration/schemaversion/v33_test.go b/apps/dashboard/pkg/migration/schemaversion/v33_test.go index 7131fa8bab5..fa3ea433dcf 100644 --- a/apps/dashboard/pkg/migration/schemaversion/v33_test.go +++ b/apps/dashboard/pkg/migration/schemaversion/v33_test.go @@ -222,3 +222,7 @@ type testDataSourceProvider struct { func (p *testDataSourceProvider) GetDataSourceInfo(_ context.Context) []DataSourceInfo { return p.datasources } + +func (p *testDataSourceProvider) Index(_ context.Context) *DatasourceIndex { + return NewDatasourceIndex(p.datasources) +} diff --git a/apps/dashboard/pkg/migration/schemaversion/v36.go b/apps/dashboard/pkg/migration/schemaversion/v36.go index 7874e80b1d9..0a2c9e50e07 100644 --- a/apps/dashboard/pkg/migration/schemaversion/v36.go +++ b/apps/dashboard/pkg/migration/schemaversion/v36.go @@ -76,21 +76,21 @@ import ( // refId: "A" // }] // } -func V36(dsInfo DataSourceInfoProvider) SchemaVersionMigrationFunc { +func V36(dsIndexProvider DataSourceIndexProvider) SchemaVersionMigrationFunc { return func(ctx context.Context, dashboard map[string]interface{}) error { - datasources := dsInfo.GetDataSourceInfo(ctx) + dsIndex := dsIndexProvider.Index(ctx) dashboard["schemaVersion"] = int(36) - migrateAnnotations(dashboard, datasources) - migrateTemplateVariables(dashboard, datasources) - migratePanels(dashboard, datasources) + migrateAnnotations(dashboard, dsIndex) + migrateTemplateVariables(dashboard, dsIndex) + migratePanels(dashboard, dsIndex) return nil } } // migrateAnnotations updates datasource references in dashboard annotations -func migrateAnnotations(dashboard map[string]interface{}, datasources []DataSourceInfo) { +func migrateAnnotations(dashboard map[string]interface{}, index *DatasourceIndex) { annotations, ok := dashboard["annotations"].(map[string]interface{}) if !ok { return @@ -109,12 +109,12 @@ func migrateAnnotations(dashboard map[string]interface{}, datasources []DataSour // Always migrate datasource, even if it doesn't exist (will be set to default) ds := queryMap["datasource"] - queryMap["datasource"] = MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, datasources) + queryMap["datasource"] = MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, index) } } // migrateTemplateVariables updates datasource references in dashboard variables -func migrateTemplateVariables(dashboard map[string]interface{}, datasources []DataSourceInfo) { +func migrateTemplateVariables(dashboard map[string]interface{}, index *DatasourceIndex) { templating, ok := dashboard["templating"].(map[string]interface{}) if !ok { return @@ -125,7 +125,7 @@ func migrateTemplateVariables(dashboard map[string]interface{}, datasources []Da return } - defaultDS := GetDefaultDSInstanceSettings(datasources) + defaultDS := index.GetDefault() for _, variable := range list { varMap, ok := variable.(map[string]interface{}) if !ok { @@ -149,7 +149,7 @@ func migrateTemplateVariables(dashboard map[string]interface{}, datasources []Da } // migratePanels updates datasource references in dashboard panels -func migratePanels(dashboard map[string]interface{}, datasources []DataSourceInfo) { +func migratePanels(dashboard map[string]interface{}, index *DatasourceIndex) { panels, ok := dashboard["panels"].([]interface{}) if !ok { return @@ -160,7 +160,7 @@ func migratePanels(dashboard map[string]interface{}, datasources []DataSourceInf if !ok { continue } - migratePanelDatasources(panelMap, datasources) + migratePanelDatasources(panelMap, index) // Handle nested panels in collapsed rows nestedPanels, hasNested := panelMap["panels"].([]interface{}) @@ -173,24 +173,24 @@ func migratePanels(dashboard map[string]interface{}, datasources []DataSourceInf if !ok { continue } - migratePanelDatasourcesInternal(np, datasources, true) + migratePanelDatasourcesInternal(np, index, true) } } } // migratePanelDatasources updates datasource references in a single panel and its targets -func migratePanelDatasources(panelMap map[string]interface{}, datasources []DataSourceInfo) { - migratePanelDatasourcesInternal(panelMap, datasources, false) +func migratePanelDatasources(panelMap map[string]interface{}, index *DatasourceIndex) { + migratePanelDatasourcesInternal(panelMap, index, false) } // migratePanelDatasourcesInternal updates datasource references with nesting awareness -func migratePanelDatasourcesInternal(panelMap map[string]interface{}, datasources []DataSourceInfo, isNested bool) { +func migratePanelDatasourcesInternal(panelMap map[string]interface{}, index *DatasourceIndex, isNested bool) { // NOTE: Even though row panels don't technically need datasource or targets fields, // we process them anyway to exactly match frontend behavior and avoid inconsistencies // between frontend and backend migrations. The frontend DashboardMigrator processes // all panels uniformly without special row panel handling. - defaultDS := GetDefaultDSInstanceSettings(datasources) + defaultDS := index.GetDefault() panelDataSourceWasDefault := false // Handle targets - only add default targets to top-level panels (matches frontend behavior) @@ -228,7 +228,7 @@ func migratePanelDatasourcesInternal(panelMap map[string]interface{}, datasource // Keep empty object {} as-is (set by V33 migration for empty strings) panelMap["datasource"] = ds } else { - migrated := MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, datasources) + migrated := MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, index) panelMap["datasource"] = migrated } } @@ -273,12 +273,12 @@ func migratePanelDatasourcesInternal(panelMap map[string]interface{}, datasource targetMap["datasource"] = result } else { // Frontend: target.datasource = migrateDatasourceNameToRef(target.datasource, { returnDefaultAsNull: false }); - targetMap["datasource"] = MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, datasources) + targetMap["datasource"] = MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, index) } } } else { // Migrate existing target datasource - targetMap["datasource"] = MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, datasources) + targetMap["datasource"] = MigrateDatasourceNameToRef(ds, map[string]bool{"returnDefaultAsNull": false}, index) } // Update panel datasource if it was default and target is not an expression diff --git a/apps/dashboard/pkg/migration/testutil/mocks.go b/apps/dashboard/pkg/migration/testutil/mocks.go index dbc7df72728..49c1df0f403 100644 --- a/apps/dashboard/pkg/migration/testutil/mocks.go +++ b/apps/dashboard/pkg/migration/testutil/mocks.go @@ -37,6 +37,12 @@ func (p *ConfigurableDataSourceProvider) GetDataSourceInfo(_ context.Context) [] } } +// Index builds the index directly from the datasources +func (p *ConfigurableDataSourceProvider) Index(ctx context.Context) *schemaversion.DatasourceIndex { + datasources := p.GetDataSourceInfo(ctx) + return schemaversion.NewDatasourceIndex(datasources) +} + // getStandardTestDataSources returns datasources for standard migration tests func (p *ConfigurableDataSourceProvider) getStandardTestDataSources() []schemaversion.DataSourceInfo { return []schemaversion.DataSourceInfo{ diff --git a/pkg/registry/apis/dashboard/datasources.go b/pkg/registry/apis/dashboard/datasources.go index 891938009f9..c3cb18efdcc 100644 --- a/pkg/registry/apis/dashboard/datasources.go +++ b/pkg/registry/apis/dashboard/datasources.go @@ -8,41 +8,69 @@ import ( "github.com/grafana/grafana/pkg/services/datasources" ) -type datasourceInfoProvider struct { +type datasourceIndexProvider struct { datasourceService datasources.DataSourceService } -func (d *datasourceInfoProvider) GetDataSourceInfo(ctx context.Context) []schemaversion.DataSourceInfo { +// Index builds a datasource index directly from the datasource service query. +// This is more efficient than GetDataSourceInfo + NewDatasourceIndex as it avoids +// creating an intermediate slice and iterates over the datasources only once. +func (d *datasourceIndexProvider) Index(ctx context.Context) *schemaversion.DatasourceIndex { // Extract namespace info from context to get OrgID nsInfo, err := request.NamespaceInfoFrom(ctx, true) if err != nil { - // If namespace info is not available, return empty list - return []schemaversion.DataSourceInfo{} + // If namespace info is not available, return empty index + return &schemaversion.DatasourceIndex{ + ByName: make(map[string]*schemaversion.DataSourceInfo), + ByUID: make(map[string]*schemaversion.DataSourceInfo), + } } - // Use GetDataSources with OrgID query instead of GetAllDataSources - // This ensures tenant-aware datasource retrieval + // Use GetDataSources with OrgID query query := datasources.GetDataSourcesQuery{ OrgID: nsInfo.OrgID, } dataSources, err := d.datasourceService.GetDataSources(ctx, &query) if err != nil { - return []schemaversion.DataSourceInfo{} + return &schemaversion.DatasourceIndex{ + ByName: make(map[string]*schemaversion.DataSourceInfo), + ByUID: make(map[string]*schemaversion.DataSourceInfo), + } } - out := make([]schemaversion.DataSourceInfo, 0, len(dataSources)) + // Build index directly without intermediate slice allocation + // Single iteration over datasources populates all maps + index := &schemaversion.DatasourceIndex{ + ByName: make(map[string]*schemaversion.DataSourceInfo, len(dataSources)), + ByUID: make(map[string]*schemaversion.DataSourceInfo, len(dataSources)), + } for _, ds := range dataSources { - out = append(out, schemaversion.DataSourceInfo{ + dsInfo := &schemaversion.DataSourceInfo{ Name: ds.Name, UID: ds.UID, ID: ds.ID, Type: ds.Type, Default: ds.IsDefault, APIVersion: ds.APIVersion, - }) + } + + // Index by name if present + if ds.Name != "" { + index.ByName[ds.Name] = dsInfo + } + + // Index by UID if present + if ds.UID != "" { + index.ByUID[ds.UID] = dsInfo + } + + // Track default datasource + if ds.IsDefault { + index.DefaultDS = dsInfo + } } - return out + return index } diff --git a/pkg/registry/apis/dashboard/register.go b/pkg/registry/apis/dashboard/register.go index 20629866d6f..1cbd289ddaa 100644 --- a/pkg/registry/apis/dashboard/register.go +++ b/pkg/registry/apis/dashboard/register.go @@ -175,14 +175,14 @@ func RegisterAPIService( } migration.RegisterMetrics(reg) - migration.Initialize(&datasourceInfoProvider{ + migration.Initialize(&datasourceIndexProvider{ datasourceService: datasourceService, }) apiregistration.RegisterAPI(builder) return builder } -func NewAPIService(ac authlib.AccessClient, features featuremgmt.FeatureToggles, folderClientProvider client.K8sHandlerProvider, datasourceProvider schemaversion.DataSourceInfoProvider, resourcePermissionsSvc *dynamic.NamespaceableResourceInterface) *DashboardsAPIBuilder { +func NewAPIService(ac authlib.AccessClient, features featuremgmt.FeatureToggles, folderClientProvider client.K8sHandlerProvider, datasourceProvider schemaversion.DataSourceIndexProvider, resourcePermissionsSvc *dynamic.NamespaceableResourceInterface) *DashboardsAPIBuilder { migration.Initialize(datasourceProvider) return &DashboardsAPIBuilder{ minRefreshInterval: "10s", @@ -231,7 +231,7 @@ func (b *DashboardsAPIBuilder) InstallSchema(scheme *runtime.Scheme) error { } // Register the explicit conversions - if err := conversion.RegisterConversions(scheme, migration.GetDataSourceInfoProvider()); err != nil { + if err := conversion.RegisterConversions(scheme, migration.GetDataSourceIndexProvider()); err != nil { return err } From 9dd8c854489dc26e57d6018f158d0c792980fefd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jean-Philippe=20Qu=C3=A9m=C3=A9ner?= Date: Mon, 17 Nov 2025 09:48:17 +0100 Subject: [PATCH 14/26] feat(dashboards): add ttl based caching for datasources (#113999) --- .../pkg/migration/conversion/conversion.go | 5 ++ .../conversion/v1beta1_to_v2alpha1.go | 11 +--- .../schemaversion/datasource_utils.go | 57 ++++++++++++++----- 3 files changed, 51 insertions(+), 22 deletions(-) diff --git a/apps/dashboard/pkg/migration/conversion/conversion.go b/apps/dashboard/pkg/migration/conversion/conversion.go index 9ee376a15ba..75b6389ae4f 100644 --- a/apps/dashboard/pkg/migration/conversion/conversion.go +++ b/apps/dashboard/pkg/migration/conversion/conversion.go @@ -12,6 +12,11 @@ import ( ) func RegisterConversions(s *runtime.Scheme, dsIndexProvider schemaversion.DataSourceIndexProvider) error { + // Wrap the provider once with 10s caching for all conversions. + // This prevents repeated DB queries across multiple conversion calls while allowing + // the cache to refresh periodically, making it suitable for long-lived singleton usage. + dsIndexProvider = schemaversion.WrapIndexProviderWithCache(dsIndexProvider) + // v0 conversions if err := s.AddConversionFunc((*dashv0.Dashboard)(nil), (*dashv1.Dashboard)(nil), withConversionMetrics(dashv0.APIVERSION, dashv1.APIVERSION, func(a, b interface{}, scope conversion.Scope) error { diff --git a/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go b/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go index 76a630ac0b6..6b8448867f1 100644 --- a/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go +++ b/apps/dashboard/pkg/migration/conversion/v1beta1_to_v2alpha1.go @@ -85,21 +85,16 @@ func ConvertDashboard_V1beta1_to_V2alpha1(in *dashv1.Dashboard, out *dashv2alpha out.APIVersion = dashv2alpha1.APIVERSION out.Kind = in.Kind - // Wrap the provider to ensure Index() is called only once during this conversion. - // This prevents multiple DB queries and index builds when the provider is used in multiple places - // (e.g., getDefaultDatasourceType, getDatasourceTypeByUID, panel datasource conversions, etc.) - dsIndexProviderWrapped := schemaversion.WrapIndexProviderWithOnce(dsIndexProvider) - // Prepare context with namespace and service identity - // The datasource provider is passed as a parameter (captured in closure when conversions are registered) - ctx, _, err := prepareV1beta1ConversionContext(in, dsIndexProviderWrapped) + // The datasource provider is already wrapped with caching at registration time + ctx, _, err := prepareV1beta1ConversionContext(in, dsIndexProvider) if err != nil { // If context preparation fails, return error to be handled by wrapper // The wrapper will set status and handle gracefully return fmt.Errorf("failed to prepare conversion context: %w", err) } - return convertDashboardSpec_V1beta1_to_V2alpha1(&in.Spec, &out.Spec, scope, ctx, dsIndexProviderWrapped) + return convertDashboardSpec_V1beta1_to_V2alpha1(&in.Spec, &out.Spec, scope, ctx, dsIndexProvider) } func convertDashboardSpec_V1beta1_to_V2alpha1(in *dashv1.DashboardSpec, out *dashv2alpha1.DashboardSpec, scope conversion.Scope, ctx context.Context, dsIndexProvider schemaversion.DataSourceIndexProvider) error { diff --git a/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go b/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go index b2020fa57cc..cc4e388bca3 100644 --- a/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go +++ b/apps/dashboard/pkg/migration/schemaversion/datasource_utils.go @@ -3,44 +3,73 @@ package schemaversion import ( "context" "sync" + "time" ) // Shared utility functions for datasource migrations across different schema versions. // These functions handle the common logic for migrating datasource references from // string names/UIDs to structured reference objects with uid, type, and apiVersion. -// onceIndexProvider wraps a DataSourceIndexProvider to ensure Index() is only called once. +// cachedIndexProvider wraps a DataSourceIndexProvider with time-based caching. // This prevents multiple DB queries and index builds during operations that may call // provider.Index() multiple times (e.g., dashboard conversions with many datasource lookups). +// The cache expires after 10 seconds, allowing it to be used as a long-lived singleton +// while still refreshing periodically. // -// Thread-safe: Uses sync.Once to guarantee single execution even under concurrent access. -type onceIndexProvider struct { +// Thread-safe: Uses sync.RWMutex to guarantee safe concurrent access. +type cachedIndexProvider struct { provider DataSourceIndexProvider - once sync.Once + mu sync.RWMutex index *DatasourceIndex + cachedAt time.Time + cacheTTL time.Duration } -// Index returns the cached index, building it exactly once on first call. -func (p *onceIndexProvider) Index(ctx context.Context) *DatasourceIndex { - p.once.Do(func() { - p.index = p.provider.Index(ctx) - }) +// Index returns the cached index if it's still valid (< 10s old), otherwise rebuilds it. +// Uses RWMutex for efficient concurrent reads when cache is valid. +func (p *cachedIndexProvider) Index(ctx context.Context) *DatasourceIndex { + // Fast path: check if cache is still valid using read lock + p.mu.RLock() + if p.index != nil && time.Since(p.cachedAt) < p.cacheTTL { + idx := p.index + p.mu.RUnlock() + return idx + } + p.mu.RUnlock() + + // Slow path: cache expired or not yet built, acquire write lock + p.mu.Lock() + defer p.mu.Unlock() + + // Double-check: another goroutine might have refreshed the cache + // while we were waiting for the write lock + if p.index != nil && time.Since(p.cachedAt) < p.cacheTTL { + return p.index + } + + // Rebuild the cache + p.index = p.provider.Index(ctx) + p.cachedAt = time.Now() return p.index } -// WrapIndexProviderWithOnce wraps a provider to cache the index for a single operation. +// WrapIndexProviderWithCache wraps a provider to cache the index with a 10-second TTL. // Useful for conversions or migrations that may call provider.Index() multiple times. +// The cache expires after 10 seconds, making it suitable for use as a long-lived singleton +// at the top level of dependency injection while still refreshing periodically. // // Example usage in dashboard conversion: // -// onceDsIndexProvider := schemaversion.WrapIndexProviderWithOnce(dsIndexProvider) -// // Now all calls to onceDsIndexProvider.Index(ctx) return the same cached index -func WrapIndexProviderWithOnce(provider DataSourceIndexProvider) DataSourceIndexProvider { +// cachedDsIndexProvider := schemaversion.WrapIndexProviderWithCache(dsIndexProvider) +// // Now all calls to cachedDsIndexProvider.Index(ctx) return the same cached index +// // for up to 10 seconds before refreshing +func WrapIndexProviderWithCache(provider DataSourceIndexProvider) DataSourceIndexProvider { if provider == nil { return nil } - return &onceIndexProvider{ + return &cachedIndexProvider{ provider: provider, + cacheTTL: 10 * time.Second, } } From 1ef7c68f53e9c03612ec4c0cda5633bc179dbbfc Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Mon, 17 Nov 2025 10:53:44 +0100 Subject: [PATCH 15/26] Chore: use context rather than golang.org/x/net/context (#114000) --- apps/dashboard/go.mod | 2 +- .../pkg/migration/schemaversion/migrations.go | 7 ++- go.work.sum | 44 +++++++++++++++++++ 3 files changed, 48 insertions(+), 5 deletions(-) diff --git a/apps/dashboard/go.mod b/apps/dashboard/go.mod index de0bc8b4614..c94888618b6 100644 --- a/apps/dashboard/go.mod +++ b/apps/dashboard/go.mod @@ -11,7 +11,6 @@ require ( github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 - golang.org/x/net v0.46.0 k8s.io/apimachinery v0.34.1 k8s.io/apiserver v0.34.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 @@ -110,6 +109,7 @@ require ( golang.org/x/crypto v0.43.0 // indirect golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect golang.org/x/mod v0.29.0 // indirect + golang.org/x/net v0.46.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect golang.org/x/sync v0.17.0 // indirect golang.org/x/sys v0.37.0 // indirect diff --git a/apps/dashboard/pkg/migration/schemaversion/migrations.go b/apps/dashboard/pkg/migration/schemaversion/migrations.go index 9f670e751ef..0a7be846474 100644 --- a/apps/dashboard/pkg/migration/schemaversion/migrations.go +++ b/apps/dashboard/pkg/migration/schemaversion/migrations.go @@ -1,9 +1,8 @@ package schemaversion import ( + "context" "strconv" - - "golang.org/x/net/context" ) const ( @@ -11,7 +10,7 @@ const ( LATEST_VERSION = 42 ) -type SchemaVersionMigrationFunc func(context.Context, map[string]interface{}) error +type SchemaVersionMigrationFunc func(context.Context, map[string]any) error type DataSourceInfo struct { Default bool @@ -79,7 +78,7 @@ func GetMigrations(dsIndexProvider DataSourceIndexProvider) map[int]SchemaVersio } } -func GetSchemaVersion(dash map[string]interface{}) int { +func GetSchemaVersion(dash map[string]any) int { if v, ok := dash["schemaVersion"]; ok { switch v := v.(type) { case int: diff --git a/go.work.sum b/go.work.sum index be369dac104..772f7d664f8 100644 --- a/go.work.sum +++ b/go.work.sum @@ -713,6 +713,7 @@ github.com/fsouza/fake-gcs-server v1.52.2/go.mod h1:47HKyIkz6oLTes1R8vEaHLwXfzYs github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ= github.com/gabriel-vasile/mimetype v1.4.3 h1:in2uUcidCuFcDKtdcBxlR0rJ1+fsokWf+uqxgUFjbI0= github.com/gabriel-vasile/mimetype v1.4.3/go.mod h1:d8uq/6HKRL6CGdk+aubisF/M5GcPfT7nKyLpA0lbSSk= +github.com/getkin/kin-openapi v0.131.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58= github.com/getkin/kin-openapi v0.132.0/go.mod h1:3OlG51PCYNsPByuiMB0t4fjnNlIDnaEDsjiKUV8nL58= github.com/ghodss/yaml v1.0.0 h1:wQHKEahhL6wmXdzwWG11gIVCkOv05bNOh+Rxn0yngAk= github.com/gin-contrib/sse v0.1.0 h1:Y/yl/+YNO8GZSjAhjMsSuLt29uWRFHdHYUb5lYOV9qE= @@ -828,11 +829,16 @@ github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl github.com/gorilla/handlers v1.5.2 h1:cLTUSsNkgcwhgRqvCNmdbRWG0A3N4F+M2nWKdScwyEE= github.com/gorilla/handlers v1.5.2/go.mod h1:dX+xVpaxdSw+q0Qek8SSsl3dfMk3jNddUkMzo0GtH0w= github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/grafana/alerting v0.0.0-20250729175202-b4b881b7b263/go.mod h1:VKxaR93Gff0ZlO2sPcdPVob1a/UzArFEW5zx3Bpyhls= github.com/grafana/authlib v0.0.0-20250710201142-9542f2f28d43/go.mod h1:1fWkOiL+m32NBgRHZtlZGz2ji868tPZACYbqP3nBRJI= github.com/grafana/authlib/types v0.0.0-20250710201142-9542f2f28d43/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2 h1:qhugDMdQ4Vp68H0tp/0iN17DM2ehRo1rLEdOFe/gB8I= github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2/go.mod h1:w/aiO1POVIeXUQyl0VQSZjl5OAGDTL5aX+4v0RA1tcw= +github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770 h1:+cFvbhw2O+WxmVtKUH7CKCfFLM2L8No3Q0R9g/IuTlg= +github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770/go.mod h1:HVKowlidslFhPxKtj5oRrWS+d1u0zl7xC8aeWm7dEUU= +github.com/grafana/cog v0.0.46 h1:TfzWZ1MCpZO6qskgtu1Jgj4FFn6nhqvFqUlhg/yhJik= +github.com/grafana/cog v0.0.46/go.mod h1:tLxQFttIZhNcDxLWICJF15K0ijxR9ZkmOHqxE2dHVew= github.com/grafana/dskit v0.0.0-20250611075409-46f51e1ce914/go.mod h1:OiN4P4aC6LwLzLbEupH3Ue83VfQoNMfG48rsna8jI/E= github.com/grafana/dskit v0.0.0-20250818234656-8ff9c6532e85/go.mod h1:kImsvJ1xnmeT9Z6StK+RdEKLzlpzBsKwJbEQfmBJdFs= github.com/grafana/go-gelf/v2 v2.0.1 h1:BOChP0h/jLeD+7F9mL7tq10xVkDG15he3T1zHuQaWak= @@ -845,6 +851,8 @@ github.com/grafana/grafana-app-sdk v0.41.0 h1:SYHN3U7B1myRKY3UZZDkFsue9TDmAOap0U github.com/grafana/grafana-app-sdk v0.41.0/go.mod h1:Wg/3vEZfok1hhIWiHaaJm+FwkosfO98o8KbeLFEnZpY= github.com/grafana/grafana-app-sdk v0.46.0/go.mod h1:LCTrqR1SwBS13XGVYveBmM7giJDDjzuXK+M9VzPuPWc= github.com/grafana/grafana-app-sdk v0.47.0/go.mod h1:kywXmkppq0oReUMzkjTW8Fq2EBzyN7v914jttTWnWxA= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.38.0/go.mod h1:Y/bvbDhBiV/tkIle9RW49pgfSPIPSON8Q4qjx3pyqDk= github.com/grafana/grafana-app-sdk/logging v0.39.0 h1:3GgN5+dUZYqq74Q+GT9/ET+yo+V54zWQk/Q2/JsJQB4= github.com/grafana/grafana-app-sdk/logging v0.39.0/go.mod h1:WhDENSnaGHtyVVwZGVnAR7YLvh2xlLDYR3D7E6h7XVk= @@ -858,6 +866,8 @@ github.com/grafana/grafana-app-sdk/logging v0.45.0/go.mod h1:Gh/nBWnspK3oDNWtiM5 github.com/grafana/grafana-app-sdk/logging v0.46.0/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana-app-sdk/logging v0.48.0 h1:xolkQxBlA2LQF4hprKIAeu+zUem1DigYZ6XC1TOhFJE= github.com/grafana/grafana-app-sdk/logging v0.48.0/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= +github.com/grafana/grafana-app-sdk/logging v0.48.2 h1:tI+a9slUvxKUgweXDzUqkca2LWV3g1UdaSvwt8nQNHg= +github.com/grafana/grafana-app-sdk/logging v0.48.2/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana-app-sdk/plugin v0.41.0 h1:ShUvGpAVzM3UxcsfwS6l/lwW4ytDeTbCQXf8w2P8Yp8= github.com/grafana/grafana-app-sdk/plugin v0.41.0/go.mod h1:YIhimVfAqtOp3kdhxOanaSZjypVKh/bYxf9wfFfhDm0= github.com/grafana/grafana-aws-sdk v0.38.2 h1:TzQD0OpWsNjtldi5G5TLDlBRk8OyDf+B5ujcoAu4Dp0= @@ -1375,6 +1385,7 @@ github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636 h1:aSISeOcal5irEhJd1M+ github.com/shurcooL/go v0.0.0-20200502201357-93f07166e636/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo= github.com/sirupsen/logrus v1.7.0/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/cast v1.7.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/cast v1.7.1/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= @@ -1387,6 +1398,7 @@ github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An github.com/spf13/pflag v1.0.7/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spkg/bom v0.0.0-20160624110644-59b7046e48ad h1:fiWzISvDn0Csy5H0iwgAuJGQTUpVfEMJJd4nRFXogbc= github.com/stefanberger/go-pkcs11uri v0.0.0-20230803200340-78284954bff6/go.mod h1:39R/xuhNgVhi+K0/zst4TLrJrVmbm6LVgl4A0+ZFS5M= +github.com/stoewer/go-strcase v1.2.0/go.mod h1:IBiWB2sKIp3wVVQ3Y035++gc+knqhUQag1KpM8ahLw8= github.com/stoewer/go-strcase v1.3.0/go.mod h1:fAH5hQ5pehh+j3nZfvwdk2RgEgQjAoM8wodgtPmh1xo= github.com/stretchr/testify v1.11.0/go.mod h1:wZwfW3scLgRK+23gO65QZefKpKQRnfz6sD981Nm4B6U= github.com/substrait-io/substrait v0.69.0 h1:qfwUe1qKa3PsCclMpubQOF6nqIqS14geUuvzJ1P7gsM= @@ -1839,6 +1851,8 @@ golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632 golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= @@ -1867,6 +1881,8 @@ golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20190921015927-1a5e07d1ff72/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= @@ -1888,6 +1904,8 @@ golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -1902,6 +1920,8 @@ golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1924,13 +1944,18 @@ golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -1941,6 +1966,8 @@ golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= 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/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= @@ -1962,6 +1989,8 @@ golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= @@ -2072,19 +2101,32 @@ howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/api v0.33.3/go.mod h1:01Y/iLUjNBM3TAvypct7DIj0M0NIZc+PzAHCIo0CYGE= k8s.io/api v0.34.0/go.mod h1:YzgkIzOOlhl9uwWCZNqpw6RJy9L2FK4dlJeayUoydug= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= k8s.io/apiextensions-apiserver v0.33.3/go.mod h1:oROuctgo27mUsyp9+Obahos6CWcMISSAPzQ77CAQGz8= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= k8s.io/apimachinery v0.33.3/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= k8s.io/apimachinery v0.34.0/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= k8s.io/apiserver v0.26.2/go.mod h1:GHcozwXgXsPuOJ28EnQ/jXEM9QeG6HT22YxSNmpYNh8= k8s.io/apiserver v0.33.3/go.mod h1:05632ifFEe6TxwjdAIrwINHWE2hLwyADFk5mBsQa15E= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= k8s.io/client-go v0.33.3/go.mod h1:luqKBQggEf3shbxHY4uVENAxrDISLOarxpTKMiUuujg= k8s.io/client-go v0.34.0/go.mod h1:ozgMnEKXkRjeMvBZdV1AijMHLTh3pbACPvK7zFR+QQY= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/code-generator v0.34.1 h1:WpphT26E+j7tEgIUfFr5WfbJrktCGzB3JoJH9149xYc= k8s.io/code-generator v0.34.1/go.mod h1:DeWjekbDnJWRwpw3s0Jat87c+e0TgkxoR4ar608yqvg= +k8s.io/code-generator v0.34.2/go.mod h1:dnDDEd6S/z4uZ+PG1aE58ySCi/lR4+qT3a4DddE4/2I= k8s.io/component-base v0.26.2/go.mod h1:DxbuIe9M3IZPRxPIzhch2m1eT7uFrSBJUBuVCQEBivs= k8s.io/component-base v0.33.3/go.mod h1:ktBVsBzkI3imDuxYXmVxZ2zxJnYTZ4HAsVj9iF09qp4= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/cri-api v0.27.1/go.mod h1:+Ts/AVYbIo04S86XbTD73UPp/DkTiYxtsFeOFEu32L0= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6 h1:4s3/R4+OYYYUKptXPhZKjQ04WJ6EhQQVFdjOFvCazDk= k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f h1:SLb+kxmzfA87x4E4brQzB33VBbT2+x7Zq9ROIHmGn9Q= @@ -2093,6 +2135,8 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= +k8s.io/kms v0.34.2 h1:91rj4MDZLyIT9KxG8J5/CcMH666Z88CF/xJQeuPfJc8= +k8s.io/kms v0.34.2/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= From d0fe342cfe079d3be80ba7c70d5e2237e3917ebe Mon Sep 17 00:00:00 2001 From: Ryan McKinley Date: Mon, 17 Nov 2025 11:34:15 +0100 Subject: [PATCH 16/26] Chore: Update app-sdk and k8s.io (#113998) --- apps/advisor/go.mod | 32 ++++++------- apps/advisor/go.sum | 68 +++++++++++++------------- apps/alerting/alertenrichment/go.mod | 8 ++-- apps/alerting/alertenrichment/go.sum | 16 +++---- apps/alerting/notifications/go.mod | 24 +++++----- apps/alerting/notifications/go.sum | 56 +++++++++++----------- apps/alerting/rules/go.mod | 20 ++++---- apps/alerting/rules/go.sum | 44 ++++++++--------- apps/annotation/go.mod | 20 ++++---- apps/annotation/go.sum | 44 ++++++++--------- apps/correlations/go.mod | 20 ++++---- apps/correlations/go.sum | 44 ++++++++--------- apps/dashboard/go.mod | 28 +++++------ apps/dashboard/go.sum | 60 +++++++++++------------ apps/example/go.mod | 24 +++++----- apps/example/go.sum | 52 ++++++++++---------- apps/folder/go.mod | 14 +++--- apps/folder/go.sum | 32 ++++++------- apps/iam/go.mod | 14 +++--- apps/investigations/go.mod | 20 ++++---- apps/investigations/go.sum | 44 ++++++++--------- apps/logsdrilldown/go.mod | 20 ++++---- apps/logsdrilldown/go.sum | 44 ++++++++--------- apps/playlist/go.mod | 20 ++++---- apps/playlist/go.sum | 44 ++++++++--------- apps/plugins/go.mod | 24 +++++----- apps/plugins/go.sum | 52 ++++++++++---------- apps/preferences/go.mod | 14 +++--- apps/preferences/go.sum | 32 ++++++------- apps/provisioning/go.mod | 24 +++++----- apps/provisioning/go.sum | 52 ++++++++++---------- apps/scope/go.mod | 6 +-- apps/scope/go.sum | 12 ++--- apps/sdk.mk | 2 +- apps/secret/go.mod | 14 +++--- apps/secret/go.sum | 32 ++++++------- apps/shorturl/go.mod | 24 +++++----- apps/shorturl/go.sum | 52 ++++++++++---------- go.mod | 38 +++++++-------- go.sum | 72 ++++++++++++++-------------- go.work.sum | 40 ++-------------- hack/go.mod | 2 +- hack/go.sum | 4 +- hack/update-codegen.sh | 2 +- pkg/aggregator/go.mod | 28 +++++------ pkg/aggregator/go.sum | 56 +++++++++++----------- pkg/apimachinery/go.mod | 14 +++--- pkg/apimachinery/go.sum | 28 +++++------ pkg/apiserver/go.mod | 24 +++++----- pkg/apiserver/go.sum | 48 +++++++++---------- pkg/build/go.mod | 8 ++-- pkg/build/go.sum | 16 +++---- pkg/build/wire/go.mod | 6 +-- pkg/build/wire/go.sum | 12 ++--- pkg/codegen/go.mod | 14 +++--- pkg/codegen/go.sum | 28 +++++------ pkg/extensions/enterprise_imports.go | 6 +-- pkg/plugins/codegen/go.mod | 14 +++--- pkg/plugins/codegen/go.sum | 32 ++++++------- pkg/promlib/go.mod | 18 +++---- pkg/promlib/go.sum | 40 ++++++++-------- 61 files changed, 834 insertions(+), 868 deletions(-) diff --git a/apps/advisor/go.mod b/apps/advisor/go.mod index 834540f5f67..57d4647c7cf 100644 --- a/apps/advisor/go.mod +++ b/apps/advisor/go.mod @@ -8,13 +8,13 @@ require ( github.com/google/go-github/v70 v70.0.0 github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 github.com/grafana/grafana v0.0.0-00010101000000-000000000000 - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 github.com/grafana/grafana-plugin-sdk-go v0.281.0 github.com/grafana/grafana/pkg/apimachinery v0.0.0 github.com/stretchr/testify v1.11.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -275,18 +275,18 @@ require ( go.uber.org/mock v0.6.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect + golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/tools v0.39.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect gonum.org/v1/gonum v0.16.0 // indirect @@ -302,10 +302,10 @@ require ( gopkg.in/telebot.v3 v3.3.8 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect - k8s.io/component-base v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect + k8s.io/component-base v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect modernc.org/libc v1.66.10 // indirect diff --git a/apps/advisor/go.sum b/apps/advisor/go.sum index b6232c51680..a7c25c01ab7 100644 --- a/apps/advisor/go.sum +++ b/apps/advisor/go.sum @@ -659,8 +659,8 @@ 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana-aws-sdk v1.3.0 h1:/bfJzP93rCel1GbWoRSq0oUo424MZXt8jAp2BK9w8tM= @@ -1302,8 +1302,8 @@ golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/go.mod h1:T9bdIzuCu7OtxOm golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= golang.org/x/crypto v0.0.0-20220622213112-05595931fe9d/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -1341,8 +1341,8 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -1396,8 +1396,8 @@ golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -1434,8 +1434,8 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220513210516-0976fa681c29/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -1524,14 +1524,14 @@ golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -1541,8 +1541,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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= 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= @@ -1606,8 +1606,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -1855,22 +1855,22 @@ honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWh honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= 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/kms v0.34.2 h1:91rj4MDZLyIT9KxG8J5/CcMH666Z88CF/xJQeuPfJc8= +k8s.io/kms v0.34.2/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912/go.mod h1:kdmbQkyfwUagLfXIad1y2TdrjPFWp2Q89B3qkRwf/pQ= k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y= diff --git a/apps/alerting/alertenrichment/go.mod b/apps/alerting/alertenrichment/go.mod index efab71e825e..c717b9bf364 100644 --- a/apps/alerting/alertenrichment/go.mod +++ b/apps/alerting/alertenrichment/go.mod @@ -3,9 +3,9 @@ module github.com/grafana/grafana/apps/alerting/alertenrichment go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250901080157-a0280d701b28 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -27,8 +27,8 @@ require ( github.com/x448/float16 v0.8.4 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/protobuf v1.36.10 // 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 2d95fb4b1a2..fc4692a07a9 100644 --- a/apps/alerting/alertenrichment/go.sum +++ b/apps/alerting/alertenrichment/go.sum @@ -23,8 +23,8 @@ github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7O 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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250901080157-a0280d701b28 h1:PgMfX4OPENz/iXmtDDIW9+poZY4UD0hhmXm7flVclDo= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250901080157-a0280d701b28/go.mod h1:av5N0Naq+8VV9MLF7zAkihy/mVq5UbS2EvRSJukDHlY= github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY= @@ -73,8 +73,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -83,8 +83,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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= 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= @@ -102,8 +102,8 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/alerting/notifications/go.mod b/apps/alerting/notifications/go.mod index b4dfcef1c01..70f4fbec82d 100644 --- a/apps/alerting/notifications/go.mod +++ b/apps/alerting/notifications/go.mod @@ -3,10 +3,10 @@ module github.com/grafana/grafana/apps/alerting/notifications go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -84,12 +84,12 @@ require ( go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -99,10 +99,10 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect - k8s.io/component-base v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect + k8s.io/component-base v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect diff --git a/apps/alerting/notifications/go.sum b/apps/alerting/notifications/go.sum index c8c9f53e5ef..2ec24921942 100644 --- a/apps/alerting/notifications/go.sum +++ b/apps/alerting/notifications/go.sum @@ -71,8 +71,8 @@ github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/go-grpc-middleware/providers/prometheus v1.1.0 h1:QGLs/O40yoNK9vmy4rhUGBVyMf1lISBGtXRpsu/Qu/o= @@ -224,8 +224,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -236,8 +236,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= @@ -246,20 +246,20 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -267,8 +267,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -300,18 +300,18 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/alerting/rules/go.mod b/apps/alerting/rules/go.mod index f1ccc575706..f40848c1688 100644 --- a/apps/alerting/rules/go.mod +++ b/apps/alerting/rules/go.mod @@ -3,10 +3,10 @@ module github.com/grafana/grafana/apps/alerting/rules go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 github.com/prometheus/common v0.67.1 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -67,12 +67,12 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -81,9 +81,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/alerting/rules/go.sum b/apps/alerting/rules/go.sum index a0e59cd5731..b15ac884e9a 100644 --- a/apps/alerting/rules/go.sum +++ b/apps/alerting/rules/go.sum @@ -48,8 +48,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= @@ -163,34 +163,34 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -216,14 +216,14 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/annotation/go.mod b/apps/annotation/go.mod index 351d54e1cbd..90ed8b74a24 100644 --- a/apps/annotation/go.mod +++ b/apps/annotation/go.mod @@ -3,9 +3,9 @@ module github.com/grafana/grafana/apps/annotation go 1.24.0 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -67,12 +67,12 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -81,9 +81,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/annotation/go.sum b/apps/annotation/go.sum index a0e59cd5731..b15ac884e9a 100644 --- a/apps/annotation/go.sum +++ b/apps/annotation/go.sum @@ -48,8 +48,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= @@ -163,34 +163,34 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -216,14 +216,14 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/correlations/go.mod b/apps/correlations/go.mod index c9c1e623da6..3875fe92ed7 100644 --- a/apps/correlations/go.mod +++ b/apps/correlations/go.mod @@ -3,9 +3,9 @@ module github.com/grafana/grafana/apps/correlations go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -67,12 +67,12 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -81,9 +81,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/correlations/go.sum b/apps/correlations/go.sum index a0e59cd5731..b15ac884e9a 100644 --- a/apps/correlations/go.sum +++ b/apps/correlations/go.sum @@ -48,8 +48,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= @@ -163,34 +163,34 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -216,14 +216,14 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/dashboard/go.mod b/apps/dashboard/go.mod index c94888618b6..15ed02b9266 100644 --- a/apps/dashboard/go.mod +++ b/apps/dashboard/go.mod @@ -5,14 +5,14 @@ go 1.25.3 require ( cuelang.org/go v0.11.1 github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 github.com/grafana/grafana-plugin-sdk-go v0.281.0 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e github.com/prometheus/client_golang v1.23.2 github.com/stretchr/testify v1.11.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 ) @@ -106,18 +106,18 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect + golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/tools v0.39.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect @@ -125,8 +125,8 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/client-go v0.34.1 // indirect - k8s.io/component-base v0.34.1 // indirect + k8s.io/client-go v0.34.2 // indirect + k8s.io/component-base v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/dashboard/go.sum b/apps/dashboard/go.sum index 7a46e1764bb..0927fd84bc0 100644 --- a/apps/dashboard/go.sum +++ b/apps/dashboard/go.sum @@ -85,8 +85,8 @@ github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 h1:qEwZ+7MbP github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana-plugin-sdk-go v0.281.0 h1:V8dGyatzcOLQeivFhBV2JWMwTSZH/clDnpfKG9p3dTA= @@ -280,27 +280,27 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -311,24 +311,24 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -355,16 +355,16 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/example/go.mod b/apps/example/go.mod index 2a3e75d75c0..7b5d1783cf7 100644 --- a/apps/example/go.mod +++ b/apps/example/go.mod @@ -3,11 +3,11 @@ module github.com/grafana/grafana/apps/example go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20251017153501-8512b219c5fe - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -73,13 +73,13 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -88,9 +88,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/example/go.sum b/apps/example/go.sum index fcab8eb625f..837151cf605 100644 --- a/apps/example/go.sum +++ b/apps/example/go.sum @@ -56,8 +56,8 @@ github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 h1:qEwZ+7MbP github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20251017153501-8512b219c5fe h1:pPoFj2bQKDBg5EyEdOU+Jn+0hQN+M775Qihk73RbdSs= @@ -169,42 +169,42 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -230,16 +230,16 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/folder/go.mod b/apps/folder/go.mod index f87baeab415..29948f31b83 100644 --- a/apps/folder/go.mod +++ b/apps/folder/go.mod @@ -3,9 +3,9 @@ module github.com/grafana/grafana/apps/folder go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -50,16 +50,16 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/folder/go.sum b/apps/folder/go.sum index 9b1b0735938..f795f67e514 100644 --- a/apps/folder/go.sum +++ b/apps/folder/go.sum @@ -33,8 +33,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250514132646-acbc7b54ed9e h1:BTKk7LHuG1kmAkucwTA7DuMbKpKvJTKrGdBmUNO4dfQ= @@ -126,8 +126,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -136,14 +136,14 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -165,12 +165,12 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/iam/go.mod b/apps/iam/go.mod index bc185ae88f3..8db0429adcd 100644 --- a/apps/iam/go.mod +++ b/apps/iam/go.mod @@ -53,7 +53,7 @@ require ( github.com/prometheus/client_golang v1.23.2 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -456,13 +456,13 @@ require ( gopkg.in/telebot.v3 v3.3.8 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect - k8s.io/component-base v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect + k8s.io/component-base v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect - k8s.io/kms v0.34.1 // indirect + k8s.io/kms v0.34.2 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect diff --git a/apps/investigations/go.mod b/apps/investigations/go.mod index fdf11d0b25a..11acc87bbc2 100644 --- a/apps/investigations/go.mod +++ b/apps/investigations/go.mod @@ -3,8 +3,8 @@ module github.com/grafana/grafana/apps/investigations go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 - k8s.io/apimachinery v0.34.1 + github.com/grafana/grafana-app-sdk v0.48.2 + k8s.io/apimachinery v0.34.2 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -68,12 +68,12 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -82,9 +82,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/investigations/go.sum b/apps/investigations/go.sum index a0e59cd5731..b15ac884e9a 100644 --- a/apps/investigations/go.sum +++ b/apps/investigations/go.sum @@ -48,8 +48,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= @@ -163,34 +163,34 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -216,14 +216,14 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/logsdrilldown/go.mod b/apps/logsdrilldown/go.mod index 6d2c5654233..014a0c5bd95 100644 --- a/apps/logsdrilldown/go.mod +++ b/apps/logsdrilldown/go.mod @@ -5,9 +5,9 @@ go 1.24.0 toolchain go1.24.6 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -69,12 +69,12 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -83,9 +83,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/logsdrilldown/go.sum b/apps/logsdrilldown/go.sum index a0e59cd5731..b15ac884e9a 100644 --- a/apps/logsdrilldown/go.sum +++ b/apps/logsdrilldown/go.sum @@ -48,8 +48,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= @@ -163,34 +163,34 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -216,14 +216,14 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/playlist/go.mod b/apps/playlist/go.mod index 387d8ccd445..be65bd498a1 100644 --- a/apps/playlist/go.mod +++ b/apps/playlist/go.mod @@ -3,9 +3,9 @@ module github.com/grafana/grafana/apps/playlist go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 - k8s.io/apimachinery v0.34.1 - k8s.io/client-go v0.34.1 + github.com/grafana/grafana-app-sdk v0.48.2 + k8s.io/apimachinery v0.34.2 + k8s.io/client-go v0.34.2 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -69,12 +69,12 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -83,8 +83,8 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/playlist/go.sum b/apps/playlist/go.sum index a0e59cd5731..b15ac884e9a 100644 --- a/apps/playlist/go.sum +++ b/apps/playlist/go.sum @@ -48,8 +48,8 @@ github.com/google/pprof v0.0.0-20250403155104-27863c87afa6 h1:BHT72Gu3keYf3ZEu2J github.com/google/pprof v0.0.0-20250403155104-27863c87afa6/go.mod h1:boTsfXsheKC2y+lKOCMpSfarhxDeIzfZG1jqGcPl3cA= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.2 h1:8Tjv8EJ+pM1xP8mK6egEbD1OgnVTyacbefKhmbLhIhU= @@ -163,34 +163,34 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -216,14 +216,14 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/plugins/go.mod b/apps/plugins/go.mod index e4a419d9214..ece0c3eaeaf 100644 --- a/apps/plugins/go.mod +++ b/apps/plugins/go.mod @@ -3,12 +3,12 @@ module github.com/grafana/grafana/apps/plugins go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250428110029-a8ea72012bde github.com/stretchr/testify v1.11.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -75,13 +75,13 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -90,9 +90,9 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/plugins/go.sum b/apps/plugins/go.sum index fb208331835..2e25d0f885f 100644 --- a/apps/plugins/go.sum +++ b/apps/plugins/go.sum @@ -56,8 +56,8 @@ github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 h1:qEwZ+7MbP github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250428110029-a8ea72012bde h1:ydSrBIOCxJQ84+JU+cyYsOLL40QeXrB7rYfsY/ezU4w= @@ -169,42 +169,42 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -230,16 +230,16 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/preferences/go.mod b/apps/preferences/go.mod index abd2a1ad561..adc0ba32b44 100644 --- a/apps/preferences/go.mod +++ b/apps/preferences/go.mod @@ -3,10 +3,10 @@ module github.com/grafana/grafana/apps/preferences go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250804150913-990f1c69ecc2 github.com/stretchr/testify v1.11.1 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -50,16 +50,16 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/preferences/go.sum b/apps/preferences/go.sum index 0af48867382..c09ddffd51b 100644 --- a/apps/preferences/go.sum +++ b/apps/preferences/go.sum @@ -33,8 +33,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250804150913-990f1c69ecc2 h1:X0cnaFdR+iz+sDSuoZmkryFSjOirchHe2MdKSRwBWgM= @@ -126,8 +126,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -136,14 +136,14 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -165,12 +165,12 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/provisioning/go.mod b/apps/provisioning/go.mod index 919602234e8..848f82951c4 100644 --- a/apps/provisioning/go.mod +++ b/apps/provisioning/go.mod @@ -14,9 +14,9 @@ require ( github.com/migueleliasweb/go-github-mock v1.1.0 github.com/stretchr/testify v1.11.1 golang.org/x/oauth2 v0.32.0 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 - k8s.io/client-go v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 + k8s.io/client-go v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 sigs.k8s.io/structured-merge-diff/v6 v6.3.0 ) @@ -44,7 +44,7 @@ require ( github.com/gorilla/mux v1.8.1 // indirect github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 // indirect github.com/grafana/dskit v0.0.0-20250908063411-6b6da59b5cc4 // indirect - github.com/grafana/grafana-app-sdk v0.48.1 // indirect + github.com/grafana/grafana-app-sdk v0.48.2 // indirect github.com/josharian/intern v1.0.0 // indirect github.com/json-iterator/go v1.1.12 // indirect github.com/klauspost/compress v1.18.0 // indirect @@ -68,12 +68,12 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect google.golang.org/grpc v1.76.0 // indirect @@ -81,8 +81,8 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/component-base v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/component-base v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/apps/provisioning/go.sum b/apps/provisioning/go.sum index 88f7288f7ee..822b6aa7330 100644 --- a/apps/provisioning/go.sum +++ b/apps/provisioning/go.sum @@ -62,8 +62,8 @@ github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 h1:qEwZ+7MbP github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/apps/secret v0.0.0-20250902093454-b56b7add012f h1:f+Z5Xpfp1WNYjUe23ginerWsHWUsRgOWrr3WGu3SlWs= @@ -156,8 +156,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= @@ -170,8 +170,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -179,8 +179,8 @@ golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -191,23 +191,23 @@ golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -216,8 +216,8 @@ golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roY golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -240,16 +240,16 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/scope/go.mod b/apps/scope/go.mod index c2efa6601d8..9b739eb3d0b 100644 --- a/apps/scope/go.mod +++ b/apps/scope/go.mod @@ -4,7 +4,7 @@ go 1.25.3 require ( github.com/grafana/grafana/pkg/apimachinery v0.0.0-20251007081214-26e147d01f0a - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -30,8 +30,8 @@ require ( github.com/x448/float16 v0.8.4 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/protobuf v1.36.10 // 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 f720929510d..1796d287d60 100644 --- a/apps/scope/go.sum +++ b/apps/scope/go.sum @@ -73,8 +73,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -83,8 +83,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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= 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= @@ -102,8 +102,8 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/sdk.mk b/apps/sdk.mk index 01d88064558..6956168a7df 100644 --- a/apps/sdk.mk +++ b/apps/sdk.mk @@ -1,4 +1,4 @@ -APP_SDK_VERSION = v0.48.1 +APP_SDK_VERSION = v0.48.2 APP_SDK_DIR = $(shell go env GOPATH)/bin/app-sdk-$(APP_SDK_VERSION) APP_SDK_BIN = $(APP_SDK_DIR)/grafana-app-sdk diff --git a/apps/secret/go.mod b/apps/secret/go.mod index 35e7485e080..b939cbdc85c 100644 --- a/apps/secret/go.mod +++ b/apps/secret/go.mod @@ -3,13 +3,13 @@ module github.com/grafana/grafana/apps/secret go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250710134100-1f3dc0533caf github.com/stretchr/testify v1.11.1 google.golang.org/grpc v1.76.0 google.golang.org/protobuf v1.36.10 gopkg.in/yaml.v3 v3.0.1 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 ) @@ -55,15 +55,15 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect gopkg.in/inf.v0 v0.9.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/secret/go.sum b/apps/secret/go.sum index fcbebea1537..c7babeffcb8 100644 --- a/apps/secret/go.sum +++ b/apps/secret/go.sum @@ -37,8 +37,8 @@ github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250710134100-1f3dc0533caf h1:BBGDHffvVNLoYQlXEpbXcxE0vbpq7pm/8OWF5I+UDZg= @@ -138,8 +138,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -148,14 +148,14 @@ golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -183,12 +183,12 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/apps/shorturl/go.mod b/apps/shorturl/go.mod index e17faafae16..2c4ccd17852 100644 --- a/apps/shorturl/go.mod +++ b/apps/shorturl/go.mod @@ -3,10 +3,10 @@ module github.com/grafana/grafana/apps/shorturl go 1.25.3 require ( - github.com/grafana/grafana-app-sdk v0.48.1 + github.com/grafana/grafana-app-sdk v0.48.2 github.com/grafana/grafana-app-sdk/logging v0.48.1 github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250915132226-585b53bc7dba - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 ) @@ -73,13 +73,13 @@ require ( go.opentelemetry.io/proto/otlp v1.7.1 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -88,10 +88,10 @@ require ( google.golang.org/protobuf v1.36.10 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/apiserver v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/apiserver v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect sigs.k8s.io/randfill v1.0.0 // indirect diff --git a/apps/shorturl/go.sum b/apps/shorturl/go.sum index 9fda293a4b4..82606eb4015 100644 --- a/apps/shorturl/go.sum +++ b/apps/shorturl/go.sum @@ -56,8 +56,8 @@ github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 h1:qEwZ+7MbP github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= 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/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana/pkg/apimachinery v0.0.0-20250915132226-585b53bc7dba h1:Qam8QzVRsyZN39zgZ9Vj6e8PEfswvv2McnqCZ/v5NcI= @@ -169,42 +169,42 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -230,16 +230,16 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/go.mod b/go.mod index 873633a0dad..f1a43644cf9 100644 --- a/go.mod +++ b/go.mod @@ -96,7 +96,7 @@ require ( github.com/grafana/gofpdf v0.0.0-20250307124105-3b9c5d35577f // @grafana/sharing-squad github.com/grafana/gomemcache v0.0.0-20250318131618-74242eea118d // @grafana/grafana-operator-experience-squad github.com/grafana/grafana-api-golang-client v0.27.0 // @grafana/alerting-backend - github.com/grafana/grafana-app-sdk v0.48.1 // @grafana/grafana-app-platform-squad + github.com/grafana/grafana-app-sdk v0.48.2 // @grafana/grafana-app-platform-squad github.com/grafana/grafana-app-sdk/logging v0.48.1 // @grafana/grafana-app-platform-squad github.com/grafana/grafana-aws-sdk v1.3.0 // @grafana/aws-datasources github.com/grafana/grafana-azure-sdk-go/v2 v2.3.1 // @grafana/partner-datasources @@ -199,15 +199,15 @@ require ( go.uber.org/zap v1.27.0 // @grafana/identity-access-team gocloud.dev v0.43.0 // @grafana/grafana-app-platform-squad gocloud.dev/secrets/hashivault v0.43.0 // @grafana/grafana-operator-experience-squad - golang.org/x/crypto v0.43.0 // @grafana/grafana-backend-group + golang.org/x/crypto v0.44.0 // @grafana/grafana-backend-group golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // @grafana/alerting-backend - golang.org/x/mod v0.29.0 // indirect; @grafana/grafana-backend-group - golang.org/x/net v0.46.0 // @grafana/oss-big-tent @grafana/partner-datasources + golang.org/x/mod v0.30.0 // indirect; @grafana/grafana-backend-group + golang.org/x/net v0.47.0 // @grafana/oss-big-tent @grafana/partner-datasources golang.org/x/oauth2 v0.32.0 // @grafana/identity-access-team - golang.org/x/sync v0.17.0 // @grafana/alerting-backend - golang.org/x/text v0.30.0 // @grafana/grafana-backend-group + golang.org/x/sync v0.18.0 // @grafana/alerting-backend + golang.org/x/text v0.31.0 // @grafana/grafana-backend-group golang.org/x/time v0.14.0 // @grafana/grafana-backend-group - golang.org/x/tools v0.38.0 // indirect; @grafana/grafana-as-code + golang.org/x/tools v0.39.0 // indirect; @grafana/grafana-as-code gonum.org/v1/gonum v0.16.0 // @grafana/oss-big-tent google.golang.org/api v0.242.0 // @grafana/grafana-backend-group google.golang.org/grpc v1.76.0 // @grafana/plugins-platform-backend @@ -216,13 +216,13 @@ require ( gopkg.in/mail.v2 v2.3.1 // @grafana/grafana-backend-group gopkg.in/yaml.v2 v2.4.0 // @grafana/alerting-backend gopkg.in/yaml.v3 v3.0.1 // @grafana/alerting-backend - k8s.io/api v0.34.1 // @grafana/grafana-app-platform-squad - k8s.io/apimachinery v0.34.1 // @grafana/grafana-app-platform-squad - k8s.io/apiserver v0.34.1 // @grafana/grafana-app-platform-squad - k8s.io/client-go v0.34.1 // @grafana/grafana-app-platform-squad - k8s.io/component-base v0.34.1 // @grafana/grafana-app-platform-squad + k8s.io/api v0.34.2 // @grafana/grafana-app-platform-squad + k8s.io/apimachinery v0.34.2 // @grafana/grafana-app-platform-squad + k8s.io/apiserver v0.34.2 // @grafana/grafana-app-platform-squad + k8s.io/client-go v0.34.2 // @grafana/grafana-app-platform-squad + k8s.io/component-base v0.34.2 // @grafana/grafana-app-platform-squad k8s.io/klog/v2 v2.130.1 // @grafana/grafana-app-platform-squad - k8s.io/kube-aggregator v0.34.1 // @grafana/grafana-app-platform-squad + k8s.io/kube-aggregator v0.34.2 // @grafana/grafana-app-platform-squad k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // @grafana/grafana-app-platform-squad k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // @grafana/partner-datasources modernc.org/sqlite v1.39.1 // @grafana/grafana-backend-group @@ -403,7 +403,7 @@ require ( github.com/diegoholiveira/jsonlogic/v3 v3.7.4 // indirect github.com/distribution/reference v0.6.0 // indirect github.com/docker/docker v28.4.0+incompatible // indirect - github.com/docker/go-connections v0.6.0 // indirect; @grafana/grafana-app-platform-squad + github.com/docker/go-connections v0.6.0 // @grafana/grafana-app-platform-squad github.com/docker/go-units v0.5.0 // indirect github.com/dolthub/flatbuffers/v23 v23.3.3-dh.2 // indirect github.com/dolthub/jsonpath v0.0.2-0.20240227200619-19675ab05c71 // indirect @@ -629,9 +629,9 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect go4.org/netipx v0.0.0-20230125063823-8449b0a6169f // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect - golang.org/x/term v0.36.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect + golang.org/x/term v0.37.0 // indirect golang.org/x/tools/godoc v0.1.0-deprecated // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect gomodules.xyz/jsonpatch/v2 v2.5.0 // indirect @@ -645,8 +645,8 @@ require ( gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect gopkg.in/src-d/go-errors.v1 v1.0.0 // indirect gopkg.in/telebot.v3 v3.3.8 // indirect - k8s.io/apiextensions-apiserver v0.34.1 // indirect - k8s.io/kms v0.34.1 // indirect + k8s.io/apiextensions-apiserver v0.34.2 // indirect + k8s.io/kms v0.34.2 // indirect modernc.org/libc v1.66.10 // indirect modernc.org/mathutil v1.7.1 // indirect modernc.org/memory v1.11.0 // indirect diff --git a/go.sum b/go.sum index 5717702b7a3..a464fc25ed0 100644 --- a/go.sum +++ b/go.sum @@ -1633,8 +1633,8 @@ github.com/grafana/gomemcache v0.0.0-20250318131618-74242eea118d h1:oXRJlb9UjVsl github.com/grafana/gomemcache v0.0.0-20250318131618-74242eea118d/go.mod h1:j/s0jkda4UXTemDs7Pgw/vMT06alWc42CHisvYac0qw= github.com/grafana/grafana-api-golang-client v0.27.0 h1:zIwMXcbCB4n588i3O2N6HfNcQogCNTd/vPkEXTr7zX8= github.com/grafana/grafana-api-golang-client v0.27.0/go.mod h1:uNLZEmgKtTjHBtCQMwNn3qsx2mpMb8zU+7T4Xv3NR9Y= -github.com/grafana/grafana-app-sdk v0.48.1 h1:bKJadWH18WCpJ+Zk8AezRFXCcZgGredRv+fRS+8zkek= -github.com/grafana/grafana-app-sdk v0.48.1/go.mod h1:5LljCz+wvmGfkQ8ZKTOfserhtXNEF0cSFthoWShvN6c= +github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= +github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.48.1 h1:veM0X5LAPyN3KsDLglWjIofndbGuf7MqnrDuDN+F/Ng= github.com/grafana/grafana-app-sdk/logging v0.48.1/go.mod h1:Gh/nBWnspK3oDNWtiM5qUF/fardHzOIEez+SPI3JeHA= github.com/grafana/grafana-aws-sdk v1.3.0 h1:/bfJzP93rCel1GbWoRSq0oUo424MZXt8jAp2BK9w8tM= @@ -2784,8 +2784,8 @@ golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDf golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8= golang.org/x/crypto v0.24.0/go.mod h1:Z1PMYSOR5nyMcyAVAIQSKCDwalqy85Aqn1x3Ws4L5DM= golang.org/x/crypto v0.27.0/go.mod h1:1Xngt8kV6Dvbssa53Ziq6Eqn0HqbZi5Z6R0ZpwQzt70= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20180321215751-8460e604b9de/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20180807140117-3d87b88a115f/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= @@ -2848,8 +2848,8 @@ golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/mod v0.15.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= golang.org/x/mod v0.17.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20170114055629-f2499483f923/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -2935,8 +2935,8 @@ golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44= golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= golang.org/x/net v0.26.0/go.mod h1:5YKkiSynbBIh3p6iOc/vibscux0x38BZDkn8sCUPxHE= golang.org/x/net v0.29.0/go.mod h1:gLkgy8jTGERgjzMic6DS9+SP0ajcu6Xu3Orq/SpETg0= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20181106182150-f42d05182288/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -2999,8 +2999,8 @@ golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.6.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sync v0.8.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20170830134202-bb24a47a89ea/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -3134,11 +3134,11 @@ golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.22.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/sys v0.25.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20240228155512-f48c80bd79b2/go.mod h1:TeRTkGYfJXctD9OcfyVLyj2J3IxLnKwHJR8f4D8a3YE= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -3157,8 +3157,8 @@ golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk= golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY= golang.org/x/term v0.21.0/go.mod h1:ooXLefLobQVslOqselCNF4SxFAaoS6KujMbsGzSDmX0= golang.org/x/term v0.24.0/go.mod h1:lOBK/LVxemqiMij05LGJ0tzNr8xlmwBRJ81PX6wVLH8= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.0.0-20160726164857-2910a502d2bf/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -3181,8 +3181,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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= 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= @@ -3267,8 +3267,8 @@ golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= golang.org/x/tools v0.21.1-0.20240508182429-e35e4ccd0d2d/go.mod h1:aiJjzUbINMkxbQROHiO6hDPo2LHcIPhhQsa9DLh0yGk= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/tools/godoc v0.1.0-deprecated h1:o+aZ1BOj6Hsx/GBdJO/s815sqftjSnrZZwyYTHODvtk= golang.org/x/tools/godoc v0.1.0-deprecated/go.mod h1:qM63CriJ961IHWmnWa9CjZnBndniPt4a3CK0PVB9bIg= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -3659,19 +3659,19 @@ honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9 honnef.co/go/tools v0.0.1-2020.1.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= honnef.co/go/tools v0.1.3/go.mod h1:NgwopIslSNH47DimFoV78dnkksY2EFtX0ajyb3K/las= k8s.io/api v0.0.0-20190813020757-36bff7324fb7/go.mod h1:3Iy+myeAORNCLgjd/Xu9ebwN7Vh59Bw0vh9jhoX+V58= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apiextensions-apiserver v0.34.1 h1:NNPBva8FNAPt1iSVwIE0FsdrVriRXMsaWFMqJbII2CI= -k8s.io/apiextensions-apiserver v0.34.1/go.mod h1:hP9Rld3zF5Ay2Of3BeEpLAToP+l4s5UlxiHfqRaRcMc= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= +k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= k8s.io/apimachinery v0.0.0-20190809020650-423f5d784010/go.mod h1:Waf/xTS2FGRrgXCkO5FP3XxTOWh0qLf2QhL1qFZZ/R8= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0= k8s.io/klog v0.0.0-20181102134211-b9b56d5dfc92/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.3.0/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= @@ -3679,10 +3679,10 @@ k8s.io/klog v0.3.1/go.mod h1:Gq+BEi5rUBO/HRz0bTSXDUcqjScdoY3a9IHpCEIOOfk= k8s.io/klog v0.4.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= 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/kms v0.34.2 h1:91rj4MDZLyIT9KxG8J5/CcMH666Z88CF/xJQeuPfJc8= +k8s.io/kms v0.34.2/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM= +k8s.io/kube-aggregator v0.34.2 h1:Nn0Vksj67WHBL2x7bJ6vuxL44RbMTK6uRtXX+3vMVJk= +k8s.io/kube-aggregator v0.34.2/go.mod h1:/tp4cc/1p2AvICsS4mjjSJakdrbhcGbRmj0mdHTdR2Q= k8s.io/kube-openapi v0.0.0-20190709113604-33be087ad058/go.mod h1:nfDlWeOsu3pUf4yWGL+ERqohP4YsZcBJXWMK+gkzOA4= k8s.io/kube-openapi v0.0.0-20190722073852-5e22f3d471e6/go.mod h1:RZvgC8MSN6DjiMV6oIfEE9pDL9CYXokkfaCKZeHm3nc= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/go.work.sum b/go.work.sum index 772f7d664f8..8113680659b 100644 --- a/go.work.sum +++ b/go.work.sum @@ -524,10 +524,12 @@ github.com/chromedp/cdproto v0.0.0-20250429231605-6ed5b53462d4/go.mod h1:NItd7aL github.com/chromedp/sysutil v1.1.0 h1:PUFNv5EcprjqXZD9nJb9b/c9ibAbxiYo4exNWZyipwM= github.com/chromedp/sysutil v1.1.0/go.mod h1:WiThHUdltqCNKGc4gaU50XgYjwjYIhKWoHGPTUfWTJ8= github.com/chzyer/logex v1.1.10 h1:Swpa1K6QvQznwJRcfTfQJmTE72DqScAa40E+fbHEXEE= +github.com/chzyer/logex v1.2.1 h1:XHDu3E6q+gdHgsdTPH6ImJMIp436vR6MPtH8gP05QzM= github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v1.5.1 h1:upd/6fQk4src78LMRzh5vItIt361/o4uq553V8B5sGI= github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1 h1:q763qf9huN11kDQavWsoZXJNW3xEE4JJyHa5Q25/sd8= +github.com/chzyer/test v1.0.0 h1:p3BQDXSxOhOG0P9z6/hGnII4LGiEPOYBhs8asl/fC04= github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible h1:C29Ae4G5GtYyYMm1aztcyj/J5ckgJm2zwdDajFbx1NY= @@ -835,10 +837,6 @@ github.com/grafana/authlib v0.0.0-20250710201142-9542f2f28d43/go.mod h1:1fWkOiL+ github.com/grafana/authlib/types v0.0.0-20250710201142-9542f2f28d43/go.mod h1:qeWYbnWzaYGl88JlL9+DsP1GT2Cudm58rLtx13fKZdw= github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2 h1:qhugDMdQ4Vp68H0tp/0iN17DM2ehRo1rLEdOFe/gB8I= github.com/grafana/cloudflare-go v0.0.0-20230110200409-c627cf6792f2/go.mod h1:w/aiO1POVIeXUQyl0VQSZjl5OAGDTL5aX+4v0RA1tcw= -github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770 h1:+cFvbhw2O+WxmVtKUH7CKCfFLM2L8No3Q0R9g/IuTlg= -github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770/go.mod h1:HVKowlidslFhPxKtj5oRrWS+d1u0zl7xC8aeWm7dEUU= -github.com/grafana/cog v0.0.46 h1:TfzWZ1MCpZO6qskgtu1Jgj4FFn6nhqvFqUlhg/yhJik= -github.com/grafana/cog v0.0.46/go.mod h1:tLxQFttIZhNcDxLWICJF15K0ijxR9ZkmOHqxE2dHVew= github.com/grafana/dskit v0.0.0-20250611075409-46f51e1ce914/go.mod h1:OiN4P4aC6LwLzLbEupH3Ue83VfQoNMfG48rsna8jI/E= github.com/grafana/dskit v0.0.0-20250818234656-8ff9c6532e85/go.mod h1:kImsvJ1xnmeT9Z6StK+RdEKLzlpzBsKwJbEQfmBJdFs= github.com/grafana/go-gelf/v2 v2.0.1 h1:BOChP0h/jLeD+7F9mL7tq10xVkDG15he3T1zHuQaWak= @@ -851,8 +849,6 @@ github.com/grafana/grafana-app-sdk v0.41.0 h1:SYHN3U7B1myRKY3UZZDkFsue9TDmAOap0U github.com/grafana/grafana-app-sdk v0.41.0/go.mod h1:Wg/3vEZfok1hhIWiHaaJm+FwkosfO98o8KbeLFEnZpY= github.com/grafana/grafana-app-sdk v0.46.0/go.mod h1:LCTrqR1SwBS13XGVYveBmM7giJDDjzuXK+M9VzPuPWc= github.com/grafana/grafana-app-sdk v0.47.0/go.mod h1:kywXmkppq0oReUMzkjTW8Fq2EBzyN7v914jttTWnWxA= -github.com/grafana/grafana-app-sdk v0.48.2 h1:CQQDhwo1fWaXQVKvxxOcK6azbuY3E2TgJHNAZlYYn7U= -github.com/grafana/grafana-app-sdk v0.48.2/go.mod h1:LDOvQ7OOyHLcXdSa0InATCa5OMoYAd6E1+rGLrMgHuk= github.com/grafana/grafana-app-sdk/logging v0.38.0/go.mod h1:Y/bvbDhBiV/tkIle9RW49pgfSPIPSON8Q4qjx3pyqDk= github.com/grafana/grafana-app-sdk/logging v0.39.0 h1:3GgN5+dUZYqq74Q+GT9/ET+yo+V54zWQk/Q2/JsJQB4= github.com/grafana/grafana-app-sdk/logging v0.39.0/go.mod h1:WhDENSnaGHtyVVwZGVnAR7YLvh2xlLDYR3D7E6h7XVk= @@ -1851,8 +1847,6 @@ golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632 golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY= golang.org/x/crypto v0.41.0/go.mod h1:pO5AFd7FA68rFak7rOAGVuygIISepHftHnr8dr6+sUc= golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8= -golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= -golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20230321023759-10a507213a29/go.mod h1:CxIveKay+FTh1D0yPZemJVgC/95VzuuOLq5Qi4xnoYc= golang.org/x/exp v0.0.0-20230515195305-f3d0a9c9a5cc/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w= golang.org/x/exp v0.0.0-20240325151524-a685a6edb6d8/go.mod h1:CQ1k9gNrJ50XIzaKCRR2hssIjF07kZFEiieALBM/ARQ= @@ -1881,8 +1875,6 @@ golang.org/x/mod v0.25.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww= golang.org/x/mod v0.26.0/go.mod h1:/j6NAhSk8iQ723BGAUyoAcn7SlD7s15Dp9Nd/SfeaFQ= golang.org/x/mod v0.27.0/go.mod h1:rWI627Fq0DEoudcK+MBkNkCe0EetEaDSwJJkCcjpazc= golang.org/x/mod v0.28.0/go.mod h1:yfB/L0NOf/kmEbXjzCPOx1iK1fRutOydrCMsqRhEBxI= -golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= -golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20190921015927-1a5e07d1ff72/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= @@ -1904,8 +1896,6 @@ golang.org/x/net v0.42.0/go.mod h1:FF1RA5d3u7nAYA4z2TkclSCKh68eSXtiFwcWQpPXdt8= golang.org/x/net v0.43.0/go.mod h1:vhO1fvI4dGsIjh73sWfUVjj3N7CA9WkKJNQm2svM6Jg= golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= golang.org/x/net v0.45.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY= -golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= -golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20210427180440-81ed05c6b58c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= golang.org/x/oauth2 v0.22.0/go.mod h1:XYTD2NtWslqkgxebSiOHnXEap4TF09sJSc7H1sXbhtI= @@ -1920,8 +1910,6 @@ golang.org/x/sync v0.13.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA= -golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= -golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210503080704-8803ae5d1324/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210616045830-e2b7044e8c71/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= @@ -1944,18 +1932,13 @@ golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.35.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= -golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= golang.org/x/telemetry v0.0.0-20250908211612-aef8a434d053/go.mod h1:+nZKN+XVh4LCiA9DV3ywrzN4gumyCnKjau3NGb9SGoE= -golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= golang.org/x/term v0.0.0-20210615171337-6886f2dfbf5b/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.18.0/go.mod h1:ILwASektA3OnRv7amZ1xhE/KTR+u50pbXfZ03+6Nx58= golang.org/x/term v0.30.0/go.mod h1:NYYFdzHoI5wRh/h5tDMdMqCqPJZEuNqVR5xJLd/n67g= golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ= golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0= golang.org/x/term v0.34.0/go.mod h1:5jC53AEywhIVebHgPVeg0mj8OD3VO9OzclacVrqpaAw= -golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= -golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= @@ -1966,8 +1949,6 @@ golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA= golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU= 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/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= -golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20220210224613-90d013bbcef8/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.6.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= @@ -1989,8 +1970,6 @@ golang.org/x/tools v0.33.0/go.mod h1:CIJMaWEY88juyUfo7UbgPqbC8rU2OqfAV1h2Qp0oMYI golang.org/x/tools v0.35.0/go.mod h1:NKdj5HkL/73byiZSJjqJgKn3ep7KjFkBOkR/Hps3VPw= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= golang.org/x/tools v0.37.0/go.mod h1:MBN5QPQtLMHVdvsbtarmTNukZDdgwdwlO5qGacAzF0w= -golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= -golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/tools/go/expect v0.1.0-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= golang.org/x/tools/go/expect v0.1.1-deprecated h1:jpBZDwmgPhXsKZC6WhL20P4b/wmnpsEAGHaNy0n/rJM= golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY= @@ -2101,32 +2080,21 @@ howett.net/plist v1.0.1/go.mod h1:lqaXoTrLY4hg8tnEzNru53gicrbv7rrk+2xJA/7hw9g= k8s.io/api v0.26.2/go.mod h1:1kjMQsFE+QHPfskEcVNgL3+Hp88B80uj0QtSOlj8itU= k8s.io/api v0.33.3/go.mod h1:01Y/iLUjNBM3TAvypct7DIj0M0NIZc+PzAHCIo0CYGE= k8s.io/api v0.34.0/go.mod h1:YzgkIzOOlhl9uwWCZNqpw6RJy9L2FK4dlJeayUoydug= -k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= -k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= k8s.io/apiextensions-apiserver v0.33.3/go.mod h1:oROuctgo27mUsyp9+Obahos6CWcMISSAPzQ77CAQGz8= -k8s.io/apiextensions-apiserver v0.34.2 h1:WStKftnGeoKP4AZRz/BaAAEJvYp4mlZGN0UCv+uvsqo= -k8s.io/apiextensions-apiserver v0.34.2/go.mod h1:398CJrsgXF1wytdaanynDpJ67zG4Xq7yj91GrmYN2SE= k8s.io/apimachinery v0.26.2/go.mod h1:ats7nN1LExKHvJ9TmwootT00Yz05MuYqPXEXaVeOy5I= k8s.io/apimachinery v0.33.3/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM= k8s.io/apimachinery v0.34.0/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= -k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= k8s.io/apiserver v0.26.2/go.mod h1:GHcozwXgXsPuOJ28EnQ/jXEM9QeG6HT22YxSNmpYNh8= k8s.io/apiserver v0.33.3/go.mod h1:05632ifFEe6TxwjdAIrwINHWE2hLwyADFk5mBsQa15E= -k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= -k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= k8s.io/client-go v0.26.2/go.mod h1:u5EjOuSyBa09yqqyY7m3abZeovO/7D/WehVVlZ2qcqU= k8s.io/client-go v0.33.3/go.mod h1:luqKBQggEf3shbxHY4uVENAxrDISLOarxpTKMiUuujg= k8s.io/client-go v0.34.0/go.mod h1:ozgMnEKXkRjeMvBZdV1AijMHLTh3pbACPvK7zFR+QQY= -k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= -k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/code-generator v0.34.1 h1:WpphT26E+j7tEgIUfFr5WfbJrktCGzB3JoJH9149xYc= k8s.io/code-generator v0.34.1/go.mod h1:DeWjekbDnJWRwpw3s0Jat87c+e0TgkxoR4ar608yqvg= +k8s.io/code-generator v0.34.2 h1:9bG6jTxmsU3HXE5BNYJTC8AZ1D6hVVfkm8yYSkdkGY0= k8s.io/code-generator v0.34.2/go.mod h1:dnDDEd6S/z4uZ+PG1aE58ySCi/lR4+qT3a4DddE4/2I= k8s.io/component-base v0.26.2/go.mod h1:DxbuIe9M3IZPRxPIzhch2m1eT7uFrSBJUBuVCQEBivs= k8s.io/component-base v0.33.3/go.mod h1:ktBVsBzkI3imDuxYXmVxZ2zxJnYTZ4HAsVj9iF09qp4= -k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= -k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/cri-api v0.27.1/go.mod h1:+Ts/AVYbIo04S86XbTD73UPp/DkTiYxtsFeOFEu32L0= k8s.io/gengo v0.0.0-20190128074634-0689ccc1d7d6 h1:4s3/R4+OYYYUKptXPhZKjQ04WJ6EhQQVFdjOFvCazDk= k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f h1:SLb+kxmzfA87x4E4brQzB33VBbT2+x7Zq9ROIHmGn9Q= @@ -2135,8 +2103,6 @@ k8s.io/klog v1.0.0 h1:Pt+yjF5aB1xDSVbau4VsWe+dQNzA0qv1LlXdC2dF6Q8= k8s.io/klog v1.0.0/go.mod h1:4Bi6QPql/J/LkTDqv7R/cd3hPo4k2DG6Ptcz060Ez5I= k8s.io/klog/v2 v2.80.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= k8s.io/klog/v2 v2.90.1/go.mod h1:y1WjHnz7Dj687irZUWR/WLkLc5N1YHtjLdmgWjndZn0= -k8s.io/kms v0.34.2 h1:91rj4MDZLyIT9KxG8J5/CcMH666Z88CF/xJQeuPfJc8= -k8s.io/kms v0.34.2/go.mod h1:s1CFkLG7w9eaTYvctOxosx88fl4spqmixnNpys0JAtM= k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8= k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts= k8s.io/utils v0.0.0-20230220204549-a5ecb0141aa5/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0= diff --git a/hack/go.mod b/hack/go.mod index 6234b45073e..f9212c08bb8 100644 --- a/hack/go.mod +++ b/hack/go.mod @@ -2,7 +2,7 @@ module github.com/grafana/grafana/hack go 1.25.3 -require k8s.io/code-generator v0.34.1 +require k8s.io/code-generator v0.34.2 require ( github.com/go-logr/logr v1.4.2 // indirect diff --git a/hack/go.sum b/hack/go.sum index b370b15f40f..1dd0408cf4e 100644 --- a/hack/go.sum +++ b/hack/go.sum @@ -12,8 +12,8 @@ golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk= golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4= golang.org/x/tools v0.36.0 h1:kWS0uv/zsvHEle1LbV5LE8QujrxB3wfQyxHfhOk0Qkg= golang.org/x/tools v0.36.0/go.mod h1:WBDiHKJK8YgLHlcQPYQzNCkUxUypCaa5ZegCVutKm+s= -k8s.io/code-generator v0.34.1 h1:WpphT26E+j7tEgIUfFr5WfbJrktCGzB3JoJH9149xYc= -k8s.io/code-generator v0.34.1/go.mod h1:DeWjekbDnJWRwpw3s0Jat87c+e0TgkxoR4ar608yqvg= +k8s.io/code-generator v0.34.2 h1:9bG6jTxmsU3HXE5BNYJTC8AZ1D6hVVfkm8yYSkdkGY0= +k8s.io/code-generator v0.34.2/go.mod h1:dnDDEd6S/z4uZ+PG1aE58ySCi/lR4+qT3a4DddE4/2I= k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f h1:SLb+kxmzfA87x4E4brQzB33VBbT2+x7Zq9ROIHmGn9Q= k8s.io/gengo/v2 v2.0.0-20250604051438-85fd79dbfd9f/go.mod h1:EJykeLsmFC60UQbYJezXkEsG2FLrt0GPNkU5iK5GWxU= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= diff --git a/hack/update-codegen.sh b/hack/update-codegen.sh index d69ffe48ee8..7a6e5898490 100755 --- a/hack/update-codegen.sh +++ b/hack/update-codegen.sh @@ -11,7 +11,7 @@ set -o pipefail SCRIPT_ROOT=$(dirname "${BASH_SOURCE[0]}")/.. pushd "${SCRIPT_ROOT}/hack" && GO111MODULE=on go mod tidy && popd -CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo $(go env GOPATH)/pkg/mod/k8s.io/code-generator@v0.34.1)} +CODEGEN_PKG=${CODEGEN_PKG:-$(cd "${SCRIPT_ROOT}"; ls -d -1 ./vendor/k8s.io/code-generator 2>/dev/null || echo $(go env GOPATH)/pkg/mod/k8s.io/code-generator@v0.34.2)} OUTDIR="${HOME}/go/src" OPENAPI_VIOLATION_EXCEPTIONS_FILENAME="zz_generated.openapi_violation_exceptions.list" diff --git a/pkg/aggregator/go.mod b/pkg/aggregator/go.mod index 82afd586730..d7d805aad0b 100644 --- a/pkg/aggregator/go.mod +++ b/pkg/aggregator/go.mod @@ -10,11 +10,11 @@ require ( github.com/mattbaird/jsonpatch v0.0.0-20240118010651-0ba75a80ca38 github.com/stretchr/testify v1.11.1 go.opentelemetry.io/otel v1.38.0 - k8s.io/api v0.34.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 - k8s.io/client-go v0.34.1 - k8s.io/component-base v0.34.1 + k8s.io/api v0.34.2 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 + k8s.io/client-go v0.34.2 + k8s.io/component-base v0.34.2 k8s.io/klog/v2 v2.130.1 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 sigs.k8s.io/structured-merge-diff/v6 v6.3.0 @@ -118,18 +118,18 @@ require ( go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect + golang.org/x/crypto v0.44.0 // indirect golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/tools v0.39.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect diff --git a/pkg/aggregator/go.sum b/pkg/aggregator/go.sum index 5d30f79835b..caebd853fa9 100644 --- a/pkg/aggregator/go.sum +++ b/pkg/aggregator/go.sum @@ -314,15 +314,15 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -330,8 +330,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= @@ -340,8 +340,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -353,16 +353,16 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -370,8 +370,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -404,16 +404,16 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/pkg/apimachinery/go.mod b/pkg/apimachinery/go.mod index 6ed1a0f5054..9543bd29c67 100644 --- a/pkg/apimachinery/go.mod +++ b/pkg/apimachinery/go.mod @@ -7,8 +7,8 @@ require ( github.com/grafana/authlib/types v0.0.0-20250926065801-df98203cff37 // @grafana/identity-access-team github.com/stretchr/testify v1.11.1 gopkg.in/yaml.v3 v3.0.1 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 ) @@ -45,11 +45,11 @@ require ( go.opentelemetry.io/otel/trace v1.38.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/text v0.31.0 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect google.golang.org/grpc v1.76.0 // indirect google.golang.org/protobuf v1.36.10 // indirect diff --git a/pkg/apimachinery/go.sum b/pkg/apimachinery/go.sum index e5f34d1e058..1e3875d7db4 100644 --- a/pkg/apimachinery/go.sum +++ b/pkg/apimachinery/go.sum @@ -96,30 +96,30 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= 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= @@ -143,10 +143,10 @@ gopkg.in/inf.v0 v0.9.1 h1:73M5CoZyi3ZLMOyDlQh031Cx6N9NDJ2Vvfl76EDAgDc= gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/pkg/apiserver/go.mod b/pkg/apiserver/go.mod index c33ac35fd40..9c296694617 100644 --- a/pkg/apiserver/go.mod +++ b/pkg/apiserver/go.mod @@ -12,9 +12,9 @@ require ( go.opentelemetry.io/contrib/propagators/jaeger v1.38.0 go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 - k8s.io/apimachinery v0.34.1 - k8s.io/apiserver v0.34.1 - k8s.io/component-base v0.34.1 + k8s.io/apimachinery v0.34.2 + k8s.io/apiserver v0.34.2 + k8s.io/component-base v0.34.2 k8s.io/klog/v2 v2.130.1 k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 sigs.k8s.io/structured-merge-diff/v6 v6.3.0 @@ -84,15 +84,15 @@ require ( go.uber.org/zap v1.27.0 // indirect go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect - golang.org/x/crypto v0.43.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/crypto v0.44.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.32.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/term v0.36.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/term v0.37.0 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/tools v0.39.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect google.golang.org/grpc v1.76.0 // indirect @@ -100,8 +100,8 @@ require ( gopkg.in/evanphx/json-patch.v4 v4.12.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/api v0.34.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/api v0.34.2 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.31.2 // indirect sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect diff --git a/pkg/apiserver/go.sum b/pkg/apiserver/go.sum index 5c06779f641..927155e141c 100644 --- a/pkg/apiserver/go.sum +++ b/pkg/apiserver/go.sum @@ -207,8 +207,8 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= @@ -219,8 +219,8 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= @@ -229,20 +229,20 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/term v0.36.0 h1:zMPR+aF8gfksFprF/Nc/rd1wRS1EI6nDBGyWAvDzx2Q= -golang.org/x/term v0.36.0/go.mod h1:Qu394IJq6V6dCBRgwqshf3mPF85AqzYEzofzRdZkWss= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/term v0.37.0 h1:8EGAD0qCmHYZg6J17DvsMy9/wJ7/D/4pV/wfnld5lTU= +golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -250,8 +250,8 @@ golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGm 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -281,16 +281,16 @@ gopkg.in/natefinch/lumberjack.v2 v2.2.1/go.mod h1:YD8tP3GAjkrDg1eZH7EGmyESg/lsYs gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -k8s.io/api v0.34.1 h1:jC+153630BMdlFukegoEL8E/yT7aLyQkIVuwhmwDgJM= -k8s.io/api v0.34.1/go.mod h1:SB80FxFtXn5/gwzCoN6QCtPD7Vbu5w2n1S0J5gFfTYk= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/apiserver v0.34.1 h1:U3JBGdgANK3dfFcyknWde1G6X1F4bg7PXuvlqt8lITA= -k8s.io/apiserver v0.34.1/go.mod h1:eOOc9nrVqlBI1AFCvVzsob0OxtPZUCPiUJL45JOTBG0= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= -k8s.io/component-base v0.34.1 h1:v7xFgG+ONhytZNFpIz5/kecwD+sUhVE6HU7qQUiRM4A= -k8s.io/component-base v0.34.1/go.mod h1:mknCpLlTSKHzAQJJnnHVKqjxR7gBeHRv0rPXA7gdtQ0= +k8s.io/api v0.34.2 h1:fsSUNZhV+bnL6Aqrp6O7lMTy6o5x2C4XLjnh//8SLYY= +k8s.io/api v0.34.2/go.mod h1:MMBPaWlED2a8w4RSeanD76f7opUoypY8TFYkSM+3XHw= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/apiserver v0.34.2 h1:2/yu8suwkmES7IzwlehAovo8dDE07cFRC7KMDb1+MAE= +k8s.io/apiserver v0.34.2/go.mod h1:gqJQy2yDOB50R3JUReHSFr+cwJnL8G1dzTA0YLEqAPI= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= +k8s.io/component-base v0.34.2 h1:HQRqK9x2sSAsd8+R4xxRirlTjowsg6fWCPwWYeSvogQ= +k8s.io/component-base v0.34.2/go.mod h1:9xw2FHJavUHBFpiGkZoKuYZ5pdtLKe97DEByaA+hHbM= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= diff --git a/pkg/build/go.mod b/pkg/build/go.mod index 43601bf615f..80952661b2b 100644 --- a/pkg/build/go.mod +++ b/pkg/build/go.mod @@ -13,9 +13,9 @@ require ( go.opentelemetry.io/otel v1.38.0 // indirect; @grafana/grafana-backend-group go.opentelemetry.io/otel/sdk v1.38.0 // indirect; @grafana/grafana-backend-group go.opentelemetry.io/otel/trace v1.38.0 // indirect; @grafana/grafana-backend-group - golang.org/x/net v0.46.0 // indirect; @grafana/oss-big-tent @grafana/partner-datasources - golang.org/x/sync v0.17.0 // @grafana/alerting-backend - golang.org/x/text v0.30.0 // indirect; @grafana/grafana-backend-group + golang.org/x/net v0.47.0 // indirect; @grafana/oss-big-tent @grafana/partner-datasources + golang.org/x/sync v0.18.0 // @grafana/alerting-backend + golang.org/x/text v0.31.0 // indirect; @grafana/grafana-backend-group google.golang.org/grpc v1.76.0 // indirect; @grafana/plugins-platform-backend google.golang.org/protobuf v1.36.10 // indirect; @grafana/plugins-platform-backend ) @@ -29,7 +29,7 @@ require ( github.com/russross/blackfriday/v2 v2.1.0 // indirect github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect go.opentelemetry.io/otel/metric v1.38.0 // indirect - golang.org/x/sys v0.37.0 // indirect + golang.org/x/sys v0.38.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20251002232023-7c0ddcbb5797 // indirect ) diff --git a/pkg/build/go.sum b/pkg/build/go.sum index 51f1b7868aa..b5a55f1d488 100644 --- a/pkg/build/go.sum +++ b/pkg/build/go.sum @@ -95,14 +95,14 @@ go.opentelemetry.io/proto/otlp v1.7.1 h1:gTOMpGDb0WTBOP8JaO72iL3auEZhVmAQg4ipjOV go.opentelemetry.io/proto/otlp v1.7.1/go.mod h1:b2rVh6rfI/s2pHWNlB7ILJcRALpcNDzKhACevjI+ZnE= go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto= go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -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/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= gonum.org/v1/gonum v0.16.0 h1:5+ul4Swaf3ESvrOnidPp4GZbzf0mxVQpDCYUQE7OJfk= gonum.org/v1/gonum v0.16.0/go.mod h1:fef3am4MQ93R2HHpKnLk4/Tbh/s0+wqD5nfa6Pnwy4E= google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 h1:d8Nakh1G+ur7+P3GcMjpRDEkoLUcLW2iU92XVqR+XMQ= diff --git a/pkg/build/wire/go.mod b/pkg/build/wire/go.mod index 421c9a62583..9850548f268 100644 --- a/pkg/build/wire/go.mod +++ b/pkg/build/wire/go.mod @@ -6,10 +6,10 @@ require ( github.com/google/go-cmp v0.7.0 github.com/google/subcommands v1.2.0 github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 - golang.org/x/tools v0.38.0 + golang.org/x/tools v0.39.0 ) require ( - golang.org/x/mod v0.29.0 // indirect - golang.org/x/sync v0.17.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/sync v0.18.0 // indirect ) diff --git a/pkg/build/wire/go.sum b/pkg/build/wire/go.sum index 5b0e5da275a..bd76c016a3e 100644 --- a/pkg/build/wire/go.sum +++ b/pkg/build/wire/go.sum @@ -4,9 +4,9 @@ github.com/google/subcommands v1.2.0 h1:vWQspBTo2nEqTUFita5/KeEWlUL8kQObDFbub/EN github.com/google/subcommands v1.2.0/go.mod h1:ZjhPrFU+Olkh9WazFPsl27BQ4UPiG37m3yTrtFlrHVk= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= diff --git a/pkg/codegen/go.mod b/pkg/codegen/go.mod index f17dead4c51..36c68bcd56c 100644 --- a/pkg/codegen/go.mod +++ b/pkg/codegen/go.mod @@ -5,11 +5,11 @@ go 1.25.3 require ( cuelang.org/go v0.11.1 github.com/dave/dst v0.27.3 - github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d - github.com/grafana/cog v0.0.44 + github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770 + github.com/grafana/cog v0.0.46 github.com/grafana/cuetsy v0.1.11 github.com/matryer/is v1.4.1 - golang.org/x/tools v0.38.0 + golang.org/x/tools v0.39.0 ) require ( @@ -47,10 +47,10 @@ require ( github.com/woodsbury/decimal128 v1.3.0 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/yalue/merged_fs v1.3.0 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/text v0.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/codegen/go.sum b/pkg/codegen/go.sum index afbaacb7ae9..5e2bca5c947 100644 --- a/pkg/codegen/go.sum +++ b/pkg/codegen/go.sum @@ -29,10 +29,10 @@ 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/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d h1:hrXbGJ5jgp6yNITzs5o+zXq0V5yT3siNJ+uM8LGwWKk= -github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s= -github.com/grafana/cog v0.0.44 h1:N8UP7g6XBHZXf1wY7AOOWC2HdqlTPBJPJiAZQrkf4XQ= -github.com/grafana/cog v0.0.44/go.mod h1:TDunc7TYF7EfzjwFOlC5AkMe3To/U2KqyyG3QVvrF38= +github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770 h1:+cFvbhw2O+WxmVtKUH7CKCfFLM2L8No3Q0R9g/IuTlg= +github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770/go.mod h1:HVKowlidslFhPxKtj5oRrWS+d1u0zl7xC8aeWm7dEUU= +github.com/grafana/cog v0.0.46 h1:TfzWZ1MCpZO6qskgtu1Jgj4FFn6nhqvFqUlhg/yhJik= +github.com/grafana/cog v0.0.46/go.mod h1:tLxQFttIZhNcDxLWICJF15K0ijxR9ZkmOHqxE2dHVew= github.com/grafana/cue v0.0.0-20230926092038-971951014e3f h1:TmYAMnqg3d5KYEAaT6PtTguL2GjLfvr6wnAX8Azw6tQ= github.com/grafana/cue v0.0.0-20230926092038-971951014e3f/go.mod h1:okjJBHFQFer+a41sAe2SaGm1glWS8oEb6CmJvn5Zdws= github.com/grafana/cuetsy v0.1.11 h1:I3IwBhF+UaQxRM79HnImtrAn8REGdb5M3+C4QrYHoWk= @@ -100,16 +100,16 @@ github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yalue/merged_fs v1.3.0 h1:qCeh9tMPNy/i8cwDsQTJ5bLr6IRxbs6meakNE5O+wyY= github.com/yalue/merged_fs v1.3.0/go.mod h1:WqqchfVYQyclV2tnR7wtRhBddzBvLVR83Cjw9BKQw0M= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -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.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= diff --git a/pkg/extensions/enterprise_imports.go b/pkg/extensions/enterprise_imports.go index 113c2f8e4bb..472652cc103 100644 --- a/pkg/extensions/enterprise_imports.go +++ b/pkg/extensions/enterprise_imports.go @@ -15,6 +15,7 @@ import ( _ "github.com/blugelabs/bluge" _ "github.com/blugelabs/bluge_segment_api" _ "github.com/crewjam/saml" + _ "github.com/docker/go-connections/nat" _ "github.com/go-jose/go-jose/v4" _ "github.com/gobwas/glob" _ "github.com/googleapis/gax-go/v2" @@ -30,6 +31,7 @@ import ( _ "github.com/spf13/cobra" // used by the standalone apiserver cli _ "github.com/spyzhov/ajson" _ "github.com/stretchr/testify/require" + _ "github.com/testcontainers/testcontainers-go" _ "gocloud.dev/secrets/awskms" _ "gocloud.dev/secrets/azurekeyvault" _ "gocloud.dev/secrets/gcpkms" @@ -54,9 +56,7 @@ import ( _ "github.com/grafana/e2e" _ "github.com/grafana/gofpdf" _ "github.com/grafana/gomemcache/memcache" - _ "github.com/grafana/tempo/pkg/traceql" - _ "github.com/grafana/grafana/apps/alerting/alertenrichment/pkg/apis/alertenrichment/v1beta1" _ "github.com/grafana/grafana/apps/scope/pkg/apis/scope/v0alpha1" - _ "github.com/testcontainers/testcontainers-go" + _ "github.com/grafana/tempo/pkg/traceql" ) diff --git a/pkg/plugins/codegen/go.mod b/pkg/plugins/codegen/go.mod index 08295065017..1029631ef2f 100644 --- a/pkg/plugins/codegen/go.mod +++ b/pkg/plugins/codegen/go.mod @@ -6,8 +6,8 @@ replace github.com/grafana/grafana/pkg/codegen => ../../codegen require ( cuelang.org/go v0.11.1 - github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d - github.com/grafana/cog v0.0.44 + github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770 + github.com/grafana/cog v0.0.46 github.com/grafana/cuetsy v0.1.11 github.com/grafana/grafana/pkg/codegen v0.0.0-20250514132646-acbc7b54ed9e ) @@ -43,11 +43,11 @@ require ( github.com/woodsbury/decimal128 v1.3.0 // indirect github.com/xlab/treeprint v1.2.0 // indirect github.com/yalue/merged_fs v1.3.0 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect golang.org/x/oauth2 v0.27.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/text v0.30.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/text v0.31.0 // indirect + golang.org/x/tools v0.39.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/pkg/plugins/codegen/go.sum b/pkg/plugins/codegen/go.sum index 0e065f7c4cd..635c691a7be 100644 --- a/pkg/plugins/codegen/go.sum +++ b/pkg/plugins/codegen/go.sum @@ -28,10 +28,10 @@ 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/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d h1:hrXbGJ5jgp6yNITzs5o+zXq0V5yT3siNJ+uM8LGwWKk= -github.com/grafana/codejen v0.0.4-0.20230321061741-77f656893a3d/go.mod h1:zmwwM/DRyQB7pfuBjTWII3CWtxcXh8LTwAYGfDfpR6s= -github.com/grafana/cog v0.0.44 h1:N8UP7g6XBHZXf1wY7AOOWC2HdqlTPBJPJiAZQrkf4XQ= -github.com/grafana/cog v0.0.44/go.mod h1:TDunc7TYF7EfzjwFOlC5AkMe3To/U2KqyyG3QVvrF38= +github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770 h1:+cFvbhw2O+WxmVtKUH7CKCfFLM2L8No3Q0R9g/IuTlg= +github.com/grafana/codejen v0.0.4-0.20250428224353-8764ced07770/go.mod h1:HVKowlidslFhPxKtj5oRrWS+d1u0zl7xC8aeWm7dEUU= +github.com/grafana/cog v0.0.46 h1:TfzWZ1MCpZO6qskgtu1Jgj4FFn6nhqvFqUlhg/yhJik= +github.com/grafana/cog v0.0.46/go.mod h1:tLxQFttIZhNcDxLWICJF15K0ijxR9ZkmOHqxE2dHVew= github.com/grafana/cuetsy v0.1.11 h1:I3IwBhF+UaQxRM79HnImtrAn8REGdb5M3+C4QrYHoWk= github.com/grafana/cuetsy v0.1.11/go.mod h1:Ix97+CPD8ws9oSSxR3/Lf4ahU1I4Np83kjJmDVnLZvc= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -94,20 +94,20 @@ github.com/xlab/treeprint v1.2.0 h1:HzHnuAF1plUN2zGlAFHbSQP2qJ0ZAD3XF5XD7OesXRQ= github.com/xlab/treeprint v1.2.0/go.mod h1:gj5Gd3gPdKtR1ikdDK6fnFLdmIS0X30kTTuNd/WEJu0= github.com/yalue/merged_fs v1.3.0 h1:qCeh9tMPNy/i8cwDsQTJ5bLr6IRxbs6meakNE5O+wyY= github.com/yalue/merged_fs v1.3.0/go.mod h1:WqqchfVYQyclV2tnR7wtRhBddzBvLVR83Cjw9BKQw0M= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.27.0 h1:da9Vo7/tDv5RH/7nZDz1eMGS/q1Vv1N/7FCrBhI9I3M= golang.org/x/oauth2 v0.27.0/go.mod h1:onh5ek6nERTohokkhCD/y2cV4Do3fxFHFuAejCkRWT8= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -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.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= diff --git a/pkg/promlib/go.mod b/pkg/promlib/go.mod index c545a9b1e8a..77129d981d2 100644 --- a/pkg/promlib/go.mod +++ b/pkg/promlib/go.mod @@ -14,7 +14,7 @@ require ( go.opentelemetry.io/otel v1.38.0 go.opentelemetry.io/otel/trace v1.38.0 google.golang.org/protobuf v1.36.10 - k8s.io/apimachinery v0.34.1 + k8s.io/apimachinery v0.34.2 ) require ( @@ -99,14 +99,14 @@ require ( go.yaml.in/yaml/v2 v2.4.3 // indirect go.yaml.in/yaml/v3 v3.0.4 // indirect golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 // indirect - golang.org/x/mod v0.29.0 // indirect - golang.org/x/net v0.46.0 // indirect - golang.org/x/sync v0.17.0 // indirect - golang.org/x/sys v0.37.0 // indirect - golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 // indirect - golang.org/x/text v0.30.0 // indirect + golang.org/x/mod v0.30.0 // indirect + golang.org/x/net v0.47.0 // indirect + golang.org/x/sync v0.18.0 // indirect + golang.org/x/sys v0.38.0 // indirect + golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 // indirect + golang.org/x/text v0.31.0 // indirect golang.org/x/time v0.14.0 // indirect - golang.org/x/tools v0.38.0 // indirect + golang.org/x/tools v0.39.0 // indirect golang.org/x/xerrors v0.0.0-20240903120638-7835f813f4da // indirect google.golang.org/api v0.242.0 // indirect google.golang.org/genproto/googleapis/api v0.0.0-20250908214217-97024824d090 // indirect @@ -114,7 +114,7 @@ require ( google.golang.org/grpc v1.76.0 // indirect gopkg.in/inf.v0 v0.9.1 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect - k8s.io/client-go v0.34.1 // indirect + k8s.io/client-go v0.34.2 // indirect k8s.io/klog/v2 v2.130.1 // indirect k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 // indirect k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect diff --git a/pkg/promlib/go.sum b/pkg/promlib/go.sum index 01986d4d1c7..14c55a0ec52 100644 --- a/pkg/promlib/go.sum +++ b/pkg/promlib/go.sum @@ -319,27 +319,27 @@ go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.43.0 h1:dduJYIi3A3KOfdGOHX8AVZ/jGiyPa3IbBozJ5kNuE04= -golang.org/x/crypto v0.43.0/go.mod h1:BFbav4mRNlXJL4wNeejLpWxB7wMbc79PdRGhWKncxR0= +golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU= +golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9 h1:TQwNpfvNkxAVlItJf6Cr5JTsVZoC/Sj7K3OZv2Pc14A= golang.org/x/exp v0.0.0-20251002181428-27f1f14c8bb9/go.mod h1:TwQYMMnGpvZyc+JpB/UAuTNIsVJifOlSkrZkhcvpVUk= golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.29.0 h1:HV8lRxZC4l2cr3Zq1LvtOsi/ThTgWnUk/y64QSs8GwA= -golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w= +golang.org/x/mod v0.30.0 h1:fDEXFVZ/fmCKProc/yAXXUijritrDzahmwwefnjoPFk= +golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc= golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.46.0 h1:giFlY12I07fugqwPuWJi68oOnpfqFnJIJzaIIm2JVV4= -golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210= +golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY= +golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU= golang.org/x/oauth2 v0.32.0 h1:jsCblLleRMDrxMN29H3z/k1KliIvpLgCkE6R8FXXNgY= golang.org/x/oauth2 v0.32.0/go.mod h1:lzm5WQJQwKZ3nwavOZ3IS5Aulzxi68dUSgRHujetwEA= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.17.0 h1:l60nONMj9l5drqw6jlhIELNv9I0A4OFgRsG9k2oT9Ug= -golang.org/x/sync v0.17.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= +golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I= +golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI= golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -350,22 +350,22 @@ golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220503163025-988cb79eb6c6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.37.0 h1:fdNQudmxPjkdUTPnLn5mdQv7Zwvbvpaxqs831goi9kQ= -golang.org/x/sys v0.37.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8 h1:LvzTn0GQhWuvKH/kVRS3R3bVAsdQWI7hvfLHGgh9+lU= -golang.org/x/telemetry v0.0.0-20251008203120-078029d740a8/go.mod h1:Pi4ztBfryZoJEkyFTI5/Ocsu2jXyDr6iSdgJiYE/uwE= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54 h1:E2/AqCUMZGgd73TQkxUMcMla25GB9i/5HOdLr+uH7Vo= +golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ= 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.30.0 h1:yznKA/E9zq54KzlzBEAWn1NXSQ8DIp/NYMy88xJjl4k= -golang.org/x/text v0.30.0/go.mod h1:yDdHFIX9t+tORqspjENWgzaCVXgk0yYnYuSZ8UzzBVM= +golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM= +golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM= golang.org/x/time v0.14.0 h1:MRx4UaLrDotUKUdCIqzPC48t1Y9hANFKIRpNx+Te8PI= golang.org/x/time v0.14.0/go.mod h1:eL/Oa2bBBK0TkX57Fyni+NgnyQQN4LitPmob2Hjnqw4= 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= golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.38.0 h1:Hx2Xv8hISq8Lm16jvBZ2VQf+RLmbd7wVUsALibYI/IQ= -golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs= +golang.org/x/tools v0.39.0 h1:ik4ho21kwuQln40uelmciQPp9SipgNDdrafrYA4TmQQ= +golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= @@ -394,10 +394,10 @@ gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -k8s.io/apimachinery v0.34.1 h1:dTlxFls/eikpJxmAC7MVE8oOeP1zryV7iRyIjB0gky4= -k8s.io/apimachinery v0.34.1/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= -k8s.io/client-go v0.34.1 h1:ZUPJKgXsnKwVwmKKdPfw4tB58+7/Ik3CrjOEhsiZ7mY= -k8s.io/client-go v0.34.1/go.mod h1:kA8v0FP+tk6sZA0yKLRG67LWjqufAoSHA2xVGKw9Of8= +k8s.io/apimachinery v0.34.2 h1:zQ12Uk3eMHPxrsbUJgNF8bTauTVR2WgqJsTmwTE/NW4= +k8s.io/apimachinery v0.34.2/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw= +k8s.io/client-go v0.34.2 h1:Co6XiknN+uUZqiddlfAjT68184/37PS4QAzYvQvDR8M= +k8s.io/client-go v0.34.2/go.mod h1:2VYDl1XXJsdcAxw7BenFslRQX28Dxz91U9MWKjX97fE= k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk= k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE= k8s.io/kube-openapi v0.0.0-20250910181357-589584f1c912 h1:Y3gxNAuB0OBLImH611+UDZcmKS3g6CthxToOb37KgwE= From aa26cc42546afcb15597c779a83b535ef4d93fc3 Mon Sep 17 00:00:00 2001 From: Josh Hunt Date: Mon, 17 Nov 2025 11:32:16 +0000 Subject: [PATCH 17/26] FS: Preserve buildInfo.edition from backend (#113967) --- pkg/services/frontend/index.html | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/services/frontend/index.html b/pkg/services/frontend/index.html index c8ba00870b9..688222f6577 100644 --- a/pkg/services/frontend/index.html +++ b/pkg/services/frontend/index.html @@ -288,16 +288,21 @@ user: [[.DefaultUser]], } - // tenant-specific config - // TODO split this into separate API calls + // Preserve a mix of values from the initial boot data, and from the backend + // - nav tree and user info come from the backend + // - merge settings from both. FS settings contains less values + // - build info edition comes from the backend const { navTree, settings, user } = await loadBootData(); window.grafanaBootData.settings = { ...settings, - ...window.grafanaBootData.settings, // preserve frontend-service settings + ...window.grafanaBootData.settings, } window.grafanaBootData.navTree = navTree; window.grafanaBootData.user = user; + if (settings?.buildInfo?.edition) { + window.grafanaBootData.settings.buildInfo.edition = settings.buildInfo.edition; + } // The per-theme CSS still contains some global styles needed // to render the page correctly. From 151d9ec1cc72baea6574849b02b6de185e1fbe84 Mon Sep 17 00:00:00 2001 From: Andres Martinez Gotor Date: Mon, 17 Nov 2025 12:48:53 +0100 Subject: [PATCH 18/26] Advisor: Expose endpoint to register checktypes (#113750) --- apps/advisor/kinds/manifest.cue | 11 +++ .../createregister_response_body_types_gen.go | 13 ++++ ...reateregister_response_object_types_gen.go | 37 ++++++++++ apps/advisor/pkg/apis/advisor_manifest.go | 61 +++++++++++++++- apps/advisor/pkg/app/app.go | 52 +++++++++++-- .../checktyperegisterer.go | 73 +++++++++++-------- .../rtkq/advisor/v0alpha1/endpoints.gen.ts | 13 ++++ .../advisor.grafana.app-v0alpha1.json | 70 ++++++++++++++++++ 8 files changed, 286 insertions(+), 44 deletions(-) create mode 100644 apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_body_types_gen.go create mode 100644 apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_object_types_gen.go diff --git a/apps/advisor/kinds/manifest.cue b/apps/advisor/kinds/manifest.cue index ca791996f13..d478c973c32 100644 --- a/apps/advisor/kinds/manifest.cue +++ b/apps/advisor/kinds/manifest.cue @@ -13,6 +13,17 @@ manifest: { checkv0alpha1, checktypev0alpha1, ] + routes: { + namespaced: { + "/register": { + "POST": { + response: { + message: string + } + } + } + } + } } } } diff --git a/apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_body_types_gen.go b/apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_body_types_gen.go new file mode 100644 index 00000000000..2dfdfd2ccfb --- /dev/null +++ b/apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_body_types_gen.go @@ -0,0 +1,13 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +package v0alpha1 + +// +k8s:openapi-gen=true +type CreateRegisterBody struct { + Message string `json:"message"` +} + +// NewCreateRegisterBody creates a new CreateRegisterBody object. +func NewCreateRegisterBody() *CreateRegisterBody { + return &CreateRegisterBody{} +} diff --git a/apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_object_types_gen.go b/apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_object_types_gen.go new file mode 100644 index 00000000000..c5bff31a374 --- /dev/null +++ b/apps/advisor/pkg/apis/advisor/v0alpha1/createregister_response_object_types_gen.go @@ -0,0 +1,37 @@ +// Code generated - EDITING IS FUTILE. DO NOT EDIT. + +package v0alpha1 + +import ( + "github.com/grafana/grafana-app-sdk/resource" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" + "k8s.io/apimachinery/pkg/runtime" +) + +// +k8s:openapi-gen=true +type CreateRegister struct { + metav1.TypeMeta `json:",inline"` + CreateRegisterBody `json:",inline"` +} + +func NewCreateRegister() *CreateRegister { + return &CreateRegister{} +} + +func (t *CreateRegisterBody) DeepCopyInto(dst *CreateRegisterBody) { + _ = resource.CopyObjectInto(dst, t) +} + +func (o *CreateRegister) DeepCopyObject() runtime.Object { + dst := NewCreateRegister() + o.DeepCopyInto(dst) + return dst +} + +func (o *CreateRegister) DeepCopyInto(dst *CreateRegister) { + dst.TypeMeta.APIVersion = o.TypeMeta.APIVersion + dst.TypeMeta.Kind = o.TypeMeta.Kind + o.CreateRegisterBody.DeepCopyInto(&dst.CreateRegisterBody) +} + +var _ runtime.Object = NewCreateRegister() diff --git a/apps/advisor/pkg/apis/advisor_manifest.go b/apps/advisor/pkg/apis/advisor_manifest.go index 5c7b5896ee8..8b6e5afe3bf 100644 --- a/apps/advisor/pkg/apis/advisor_manifest.go +++ b/apps/advisor/pkg/apis/advisor_manifest.go @@ -62,9 +62,60 @@ var appManifestData = app.ManifestData{ }, }, Routes: app.ManifestVersionRoutes{ - Namespaced: map[string]spec3.PathProps{}, - Cluster: map[string]spec3.PathProps{}, - Schemas: map[string]spec.Schema{}, + Namespaced: map[string]spec3.PathProps{ + "/register": { + Post: &spec3.Operation{ + OperationProps: spec3.OperationProps{ + + OperationId: "createRegister", + + Responses: &spec3.Responses{ + ResponsesProps: spec3.ResponsesProps{ + Default: &spec3.Response{ + ResponseProps: spec3.ResponseProps{ + Description: "Default OK response", + Content: map[string]*spec3.MediaType{ + "application/json": { + MediaTypeProps: spec3.MediaTypeProps{ + Schema: &spec.Schema{ + SchemaProps: spec.SchemaProps{ + Type: []string{"object"}, + Properties: map[string]spec.Schema{ + "apiVersion": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Description: "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + }, + }, + "kind": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + Description: "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + }, + }, + "message": { + SchemaProps: spec.SchemaProps{ + Type: []string{"string"}, + }, + }, + }, + Required: []string{ + "message", + "apiVersion", + "kind", + }, + }}, + }}, + }, + }, + }, + }}, + }, + }, + }, + }, + Cluster: map[string]spec3.PathProps{}, + Schemas: map[string]spec.Schema{}, }, }, }, @@ -90,7 +141,9 @@ func ManifestGoTypeAssociator(kind, version string) (goType resource.Kind, exist return goType, exists } -var customRouteToGoResponseType = map[string]any{} +var customRouteToGoResponseType = map[string]any{ + "v0alpha1||/register|POST": v0alpha1.CreateRegister{}, +} // ManifestCustomRouteResponsesAssociator returns the associated response go type for a given kind, version, custom route path, and method, if one exists. // kind may be empty for custom routes which are not kind subroutes. Leading slashes are removed from subroute paths. diff --git a/apps/advisor/pkg/app/app.go b/apps/advisor/pkg/app/app.go index d4019631ef6..9c1dd3c0f98 100644 --- a/apps/advisor/pkg/app/app.go +++ b/apps/advisor/pkg/app/app.go @@ -2,7 +2,9 @@ package app import ( "context" + "encoding/json" "fmt" + "net/http" "github.com/grafana/grafana-app-sdk/app" "github.com/grafana/grafana-app-sdk/k8s" @@ -16,6 +18,7 @@ import ( "github.com/grafana/grafana/apps/advisor/pkg/app/checkscheduler" "github.com/grafana/grafana/apps/advisor/pkg/app/checktyperegisterer" "github.com/grafana/grafana/pkg/apimachinery/identity" + metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/runtime/schema" ) @@ -49,6 +52,16 @@ func New(cfg app.Config) (app.App, error) { checkMap[c.ID()] = c } + ctr, err := checktyperegisterer.New(cfg, log) + if err != nil { + return nil, err + } + + csch, err := checkscheduler.New(cfg, log) + if err != nil { + return nil, err + } + simpleConfig := simple.AppConfig{ Name: "advisor", KubeConfig: cfg.KubeConfig, @@ -110,6 +123,37 @@ func New(cfg app.Config) (app.App, error) { Kind: advisorv0alpha1.CheckTypeKind(), }, }, + VersionedCustomRoutes: map[string]simple.AppVersionRouteHandlers{ + "v0alpha1": { + { + Namespaced: true, + Path: "register", + Method: "POST", + }: func(ctx context.Context, w app.CustomRouteResponseWriter, req *app.CustomRouteRequest) error { + logger := log.WithContext(ctx) + namespace := req.ResourceIdentifier.Namespace + + // Register check types for the namespace + err := ctr.RegisterCheckTypesInNamespace(ctx, logger, namespace) + if err != nil { + logger.Error("Failed to register check types", "namespace", namespace, "error", err) + w.WriteHeader(http.StatusInternalServerError) + _ = json.NewEncoder(w).Encode(map[string]string{"error": err.Error()}) + return err + } + + // Return typed response matching the manifest + return json.NewEncoder(w).Encode(advisorv0alpha1.CreateRegister{ + TypeMeta: metav1.TypeMeta{ + APIVersion: fmt.Sprintf("%s/%s", advisorv0alpha1.APIGroup, advisorv0alpha1.APIVersion), + }, + CreateRegisterBody: advisorv0alpha1.CreateRegisterBody{ + Message: "Check types registered successfully", + }, + }) + }, + }, + }, } a, err := simple.NewApp(simpleConfig) @@ -123,17 +167,9 @@ func New(cfg app.Config) (app.App, error) { } // Save check types as resources - ctr, err := checktyperegisterer.New(cfg, log) - if err != nil { - return nil, err - } a.AddRunnable(ctr) // Start scheduler - csch, err := checkscheduler.New(cfg, log) - if err != nil { - return nil, err - } a.AddRunnable(csch) return a, nil diff --git a/apps/advisor/pkg/app/checktyperegisterer/checktyperegisterer.go b/apps/advisor/pkg/app/checktyperegisterer/checktyperegisterer.go index 8f1675c8ccb..e50250c47d0 100644 --- a/apps/advisor/pkg/app/checktyperegisterer/checktyperegisterer.go +++ b/apps/advisor/pkg/app/checktyperegisterer/checktyperegisterer.go @@ -34,8 +34,10 @@ type Runner struct { retryDelay time.Duration } +var _ app.Runnable = (*Runner)(nil) + // NewRunner creates a new Runner. -func New(cfg app.Config, log logging.Logger) (app.Runnable, error) { +func New(cfg app.Config, log logging.Logger) (*Runner, error) { // Read config specificConfig, ok := cfg.SpecificConfig.(checkregistry.AdvisorAppConfig) if !ok { @@ -79,37 +81,9 @@ func (r *Runner) Run(ctx context.Context) error { // Register check types in each namespace for _, namespace := range namespaces { - for _, t := range r.checkRegistry.Checks() { - steps := t.Steps() - stepTypes := make([]advisorv0alpha1.CheckTypeStep, len(steps)) - for i, s := range steps { - stepTypes[i] = advisorv0alpha1.CheckTypeStep{ - Title: s.Title(), - Description: s.Description(), - StepID: s.ID(), - Resolution: s.Resolution(), - } - } - obj := &advisorv0alpha1.CheckType{ - ObjectMeta: metav1.ObjectMeta{ - Name: t.ID(), - Namespace: namespace, - Annotations: map[string]string{ - checks.NameAnnotation: t.Name(), - // Flag to indicate feature availability - checks.RetryAnnotation: "1", - checks.IgnoreStepsAnnotation: "1", - }, - }, - Spec: advisorv0alpha1.CheckTypeSpec{ - Name: t.ID(), - Steps: stepTypes, - }, - } - err := r.registerCheckType(ctx, logger, t.ID(), obj) - if err != nil { - return err - } + err := r.RegisterCheckTypesInNamespace(ctx, logger, namespace) + if err != nil { + return fmt.Errorf("failed to register check types in namespace %s: %w", namespace, err) } } return nil @@ -243,3 +217,38 @@ func isAPIServerShuttingDown(err error, logger logging.Logger) bool { } return false } + +func (r *Runner) RegisterCheckTypesInNamespace(ctx context.Context, logger logging.Logger, namespace string) error { + for _, t := range r.checkRegistry.Checks() { + steps := t.Steps() + stepTypes := make([]advisorv0alpha1.CheckTypeStep, len(steps)) + for i, s := range steps { + stepTypes[i] = advisorv0alpha1.CheckTypeStep{ + Title: s.Title(), + Description: s.Description(), + StepID: s.ID(), + Resolution: s.Resolution(), + } + } + obj := &advisorv0alpha1.CheckType{ + ObjectMeta: metav1.ObjectMeta{ + Name: t.ID(), + Namespace: namespace, + Annotations: map[string]string{ + checks.NameAnnotation: t.Name(), + // Flag to indicate feature availability + checks.RetryAnnotation: "1", + checks.IgnoreStepsAnnotation: "1", + }, + }, + Spec: advisorv0alpha1.CheckTypeSpec{ + Name: t.ID(), + Steps: stepTypes, + }, + } + if err := r.registerCheckType(ctx, logger, t.ID(), obj); err != nil { + return fmt.Errorf("failed to register check type %s: %w", t.ID(), err) + } + } + return nil +} diff --git a/packages/grafana-api-clients/src/clients/rtkq/advisor/v0alpha1/endpoints.gen.ts b/packages/grafana-api-clients/src/clients/rtkq/advisor/v0alpha1/endpoints.gen.ts index 84bbfa33c91..56f00f682f4 100644 --- a/packages/grafana-api-clients/src/clients/rtkq/advisor/v0alpha1/endpoints.gen.ts +++ b/packages/grafana-api-clients/src/clients/rtkq/advisor/v0alpha1/endpoints.gen.ts @@ -304,6 +304,9 @@ const injectedRtkApi = api }), invalidatesTags: ['CheckType'], }), + createRegister: build.mutation({ + query: () => ({ url: `/register`, method: 'POST' }), + }), }), overrideExisting: false, }); @@ -714,6 +717,8 @@ export type UpdateCheckTypeStatusApiArg = { force?: boolean; patch: Patch; }; +export type CreateRegisterApiResponse = /** status 200 OK */ CreateRegister; +export type CreateRegisterApiArg = void; export type ApiResource = { /** categories is a list of the grouped resources this resource belongs to (e.g. 'all') */ categories?: string[]; @@ -1016,6 +1021,13 @@ export type CheckTypeList = { kind?: string; metadata: ListMeta; }; +export type CreateRegister = { + /** APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources */ + apiVersion: string; + /** Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds */ + kind: string; + message: string; +}; export const { useGetApiResourcesQuery, useLazyGetApiResourcesQuery, @@ -1045,4 +1057,5 @@ export const { useLazyGetCheckTypeStatusQuery, useReplaceCheckTypeStatusMutation, useUpdateCheckTypeStatusMutation, + useCreateRegisterMutation, } = injectedRtkApi; diff --git a/pkg/tests/apis/openapi_snapshots/advisor.grafana.app-v0alpha1.json b/pkg/tests/apis/openapi_snapshots/advisor.grafana.app-v0alpha1.json index f9816e06ce1..78fb056058a 100644 --- a/pkg/tests/apis/openapi_snapshots/advisor.grafana.app-v0alpha1.json +++ b/pkg/tests/apis/openapi_snapshots/advisor.grafana.app-v0alpha1.json @@ -2274,6 +2274,55 @@ } } ] + }, + "/apis/advisor.grafana.app/v0alpha1/namespaces/{namespace}/register": { + "post": { + "operationId": "createRegister", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/com.github.grafana.grafana.apps.advisor.pkg.apis.advisor.v0alpha1.CreateRegister" + } + }, + "application/json;stream=watch": { + "schema": { + "$ref": "#/components/schemas/com.github.grafana.grafana.apps.advisor.pkg.apis.advisor.v0alpha1.CreateRegister" + } + }, + "application/vnd.kubernetes.protobuf": { + "schema": { + "$ref": "#/components/schemas/com.github.grafana.grafana.apps.advisor.pkg.apis.advisor.v0alpha1.CreateRegister" + } + }, + "application/vnd.kubernetes.protobuf;stream=watch": { + "schema": { + "$ref": "#/components/schemas/com.github.grafana.grafana.apps.advisor.pkg.apis.advisor.v0alpha1.CreateRegister" + } + }, + "application/yaml": { + "schema": { + "$ref": "#/components/schemas/com.github.grafana.grafana.apps.advisor.pkg.apis.advisor.v0alpha1.CreateRegister" + } + } + } + } + } + }, + "parameters": [ + { + "name": "namespace", + "in": "path", + "description": "object name and auth scope, such as for teams and projects", + "required": true, + "schema": { + "type": "string", + "uniqueItems": true + } + } + ] } }, "components": { @@ -2701,6 +2750,27 @@ }, "additionalProperties": false }, + "com.github.grafana.grafana.apps.advisor.pkg.apis.advisor.v0alpha1.CreateRegister": { + "type": "object", + "required": [ + "message", + "apiVersion", + "kind" + ], + "properties": { + "apiVersion": { + "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources", + "type": "string" + }, + "kind": { + "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds", + "type": "string" + }, + "message": { + "type": "string" + } + } + }, "io.k8s.apimachinery.pkg.apis.meta.v1.APIResource": { "description": "APIResource specifies the name of a resource and whether it is namespaced.", "type": "object", From 950376c0d9f4e1ce4f88224862cacb8cfb42926a Mon Sep 17 00:00:00 2001 From: Ihor Yeromin Date: Mon, 17 Nov 2025 12:55:03 +0100 Subject: [PATCH 19/26] Feature toggle: Remove regressionTransformation feature toggle (#113759) Remove regressionTransformation feature toggle The regression analysis transformation feature is now GA and no longer needs to be behind a feature toggle. --- .../configure-grafana/feature-toggles/index.md | 1 - packages/grafana-data/src/types/featureToggles.gen.ts | 4 ---- pkg/services/featuremgmt/registry.go | 7 ------- pkg/services/featuremgmt/toggles-gitlog.csv | 1 - pkg/services/featuremgmt/toggles_gen.csv | 1 - pkg/services/featuremgmt/toggles_gen.go | 4 ---- 6 files changed, 18 deletions(-) diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 0b802145d87..af97de60f28 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -95,7 +95,6 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general- | `cloudWatchBatchQueries` | Runs CloudWatch metrics queries as separate batches | | `pdfTables` | Enables generating table data as PDF in reporting | | `canvasPanelPanZoom` | Allow pan and zoom in canvas panel | -| `regressionTransformation` | Enables regression analysis transformation | | `alertingSaveStateCompressed` | Enables the compressed protobuf-based alert state storage. Default is enabled. | | `sqlExpressions` | Enables SQL Expressions, which can execute SQL queries against data source results. | | `queryLibrary` | Enables Saved queries (query library) feature | diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 7e0cfb01f34..2f5adb9c908 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -415,10 +415,6 @@ export interface FeatureToggles { */ tableSharedCrosshair?: boolean; /** - * Enables regression analysis transformation - */ - regressionTransformation?: boolean; - /** * Use the kubernetes API for feature toggle management in the frontend */ kubernetesFeatureToggles?: boolean; diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index b3797221b98..0527f719b68 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -694,13 +694,6 @@ var ( Stage: FeatureStageExperimental, Owner: grafanaDatavizSquad, }, - { - Name: "regressionTransformation", - Description: "Enables regression analysis transformation", - Stage: FeatureStagePublicPreview, - FrontendOnly: true, - Owner: grafanaDataProSquad, - }, { Name: "kubernetesFeatureToggles", Description: "Use the kubernetes API for feature toggle management in the frontend", diff --git a/pkg/services/featuremgmt/toggles-gitlog.csv b/pkg/services/featuremgmt/toggles-gitlog.csv index 213c191ade1..b14cbd87c1a 100644 --- a/pkg/services/featuremgmt/toggles-gitlog.csv +++ b/pkg/services/featuremgmt/toggles-gitlog.csv @@ -254,7 +254,6 @@ pluginsSkipHostEnvVars,2023-11-15T17:09:14Z,,cb0a88a02770eaee2561fd434d8339cab26 logRowsPopoverMenu,2023-11-16T09:48:10Z,,9cb303c3f701169e8651267744a4b5fe1695a066,Matias Chomicki lokiStructuredMetadata,2023-11-16T16:06:14Z,2025-06-30T14:09:44Z,a01f8c5b42bb7937139b8d52e9723cc37e5f7ae6,Sven Grossmann tracesEmbeddedFlameGraph,2023-11-23T13:36:53Z,2024-01-22T14:21:14Z,4f46fb412ca4e96b0b0ef3f462aead3fc146389e,Joey -regressionTransformation,2023-11-24T14:49:16Z,2025-07-01T13:59:22Z,ab982e7bd36b86c94093bddcc31008f5dc49660e,Oscar Kilhed displayAnonymousStats,2023-11-29T16:58:41Z,2024-02-23T15:53:37Z,59bdff0280d52ca5d8918157d7697b9279b25501,Eric Leijonmarck influxqlStreamingParser,2023-11-29T17:29:35Z,,5845f140758473ab5ffe789bec4077032fd22839,ismail simsek kubernetesSnapshots,2023-12-05T22:31:49Z,,439edebcd605a1b63bf3a9b0ab5c2b83341cd5cd,Ryan McKinley diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 58d795f1fd8..79af6b273da 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -92,7 +92,6 @@ timeComparison,experimental,@grafana/dataviz-squad,false,false,true logsInfiniteScrolling,GA,@grafana/observability-logs,false,false,true logRowsPopoverMenu,GA,@grafana/observability-logs,false,false,true tableSharedCrosshair,experimental,@grafana/dataviz-squad,false,false,true -regressionTransformation,preview,@grafana/datapro,false,false,true kubernetesFeatureToggles,experimental,@grafana/grafana-operator-experience-squad,false,false,true cloudRBACRoles,preview,@grafana/identity-access-team,false,true,false alertingQueryOptimization,GA,@grafana/alerting-squad,false,false,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 93d553df46f..b16a8ebc10f 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -379,10 +379,6 @@ const ( // Enables shared crosshair in table panel FlagTableSharedCrosshair = "tableSharedCrosshair" - // FlagRegressionTransformation - // Enables regression analysis transformation - FlagRegressionTransformation = "regressionTransformation" - // FlagKubernetesFeatureToggles // Use the kubernetes API for feature toggle management in the frontend FlagKubernetesFeatureToggles = "kubernetesFeatureToggles" From d10dc81a79f4bae13b6f9539cc9d4ff198c87052 Mon Sep 17 00:00:00 2001 From: Ihor Yeromin Date: Mon, 17 Nov 2025 12:57:22 +0100 Subject: [PATCH 20/26] Feature toggle: Remove groupToNestedTableTransformation feature toggle (#113761) Remove groupToNestedTableTransformation feature toggle The group to nested table transformation has reached GA and is now enabled by default. This commit removes the feature toggle and makes the transformation always available. Changes: - Removed feature toggle definition from registry.go - Updated standardTransformers.ts to always include the transformation - Updated feature toggles documentation - Regenerated feature toggle files --- .../configure-grafana/feature-toggles/index.md | 1 - packages/grafana-data/src/types/featureToggles.gen.ts | 5 ----- pkg/services/featuremgmt/registry.go | 8 -------- pkg/services/featuremgmt/toggles_gen.csv | 1 - pkg/services/featuremgmt/toggles_gen.go | 4 ---- pkg/services/featuremgmt/toggles_gen.json | 1 + public/app/features/transformers/standardTransformers.ts | 2 +- 7 files changed, 2 insertions(+), 20 deletions(-) diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index af97de60f28..4df5f9856bd 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -49,7 +49,6 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general- | `logRowsPopoverMenu` | Enable filtering menu displayed when text of a log line is selected | Yes | | `alertingQueryOptimization` | Optimizes eligible queries in order to reduce load on datasources | | | `onPremToCloudMigrations` | Enable the Grafana Migration Assistant, which helps you easily migrate various on-prem resources to your Grafana Cloud stack. | Yes | -| `groupToNestedTableTransformation` | Enables the group to nested table transformation | Yes | | `newPDFRendering` | New implementation for the dashboard-to-PDF rendering | Yes | | `cloudWatchNewLabelParsing` | Updates CloudWatch label parsing to be more accurate | Yes | | `pluginProxyPreserveTrailingSlash` | Preserve plugin proxy trailing slash. | | diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 2f5adb9c908..8dec833ef91 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -482,11 +482,6 @@ export interface FeatureToggles { */ sqlExpressionsColumnAutoComplete?: boolean; /** - * Enables the group to nested table transformation - * @default true - */ - groupToNestedTableTransformation?: boolean; - /** * New implementation for the dashboard-to-PDF rendering * @default true */ diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index 0527f719b68..5b69846124d 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -817,14 +817,6 @@ var ( FrontendOnly: true, Owner: grafanaDataProSquad, }, - { - Name: "groupToNestedTableTransformation", - Description: "Enables the group to nested table transformation", - Stage: FeatureStageGeneralAvailability, - FrontendOnly: true, - Owner: grafanaDataProSquad, - Expression: "true", // enabled by default, - }, { Name: "newPDFRendering", Description: "New implementation for the dashboard-to-PDF rendering", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 79af6b273da..7194c4e20a6 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -107,7 +107,6 @@ useMultipleScopeNodesEndpoint,experimental,@grafana/grafana-operator-experience- logQLScope,privatePreview,@grafana/observability-logs,false,false,false sqlExpressions,preview,@grafana/grafana-datasources-core-services,false,false,false sqlExpressionsColumnAutoComplete,experimental,@grafana/datapro,false,false,true -groupToNestedTableTransformation,GA,@grafana/datapro,false,false,true newPDFRendering,GA,@grafana/grafana-operator-experience-squad,false,false,false kubernetesAggregator,experimental,@grafana/grafana-app-platform-squad,false,true,false kubernetesAggregatorCapTokenAuth,experimental,@grafana/grafana-app-platform-squad,false,true,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index b16a8ebc10f..20242cbb7f4 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -439,10 +439,6 @@ const ( // Enables column autocomplete for SQL Expressions FlagSqlExpressionsColumnAutoComplete = "sqlExpressionsColumnAutoComplete" - // FlagGroupToNestedTableTransformation - // Enables the group to nested table transformation - FlagGroupToNestedTableTransformation = "groupToNestedTableTransformation" - // FlagNewPDFRendering // New implementation for the dashboard-to-PDF rendering FlagNewPDFRendering = "newPDFRendering" diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 9aa57adab69..6b3ccdd2a43 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -1963,6 +1963,7 @@ "name": "groupToNestedTableTransformation", "resourceVersion": "1762442825881", "creationTimestamp": "2024-02-07T14:28:26Z", + "deletionTimestamp": "2025-11-12T14:33:44Z", "annotations": { "grafana.app/updatedTimestamp": "2025-11-06 15:27:05.88172 +0000 UTC" } diff --git a/public/app/features/transformers/standardTransformers.ts b/public/app/features/transformers/standardTransformers.ts index 3fdd629a6e4..14ff8eb3bb0 100644 --- a/public/app/features/transformers/standardTransformers.ts +++ b/public/app/features/transformers/standardTransformers.ts @@ -66,7 +66,7 @@ export const getStandardTransformers = (): TransformerRegistryItem[] => { getRegressionTransformerRegistryItem(), getPartitionByValuesTransformRegistryItem(), ...(config.featureToggles.formatString ? [getFormatStringTransformerRegistryItem()] : []), - ...(config.featureToggles.groupToNestedTableTransformation ? [getGroupToNestedTableTransformRegistryItem()] : []), + getGroupToNestedTableTransformRegistryItem(), getFormatTimeTransformerRegistryItem(), getTimeSeriesTableTransformRegistryItem(), getTransposeTransformerRegistryItem(), From fe95e0a6dbd92a87c90bde5270a1c839310bbb5a Mon Sep 17 00:00:00 2001 From: Ezequiel Victorero Date: Mon, 17 Nov 2025 09:00:11 -0300 Subject: [PATCH 21/26] FrontendService: Add support for swagger in the local dev env (#113937) --- devenv/frontend-service/README.md | 4 ++-- devenv/frontend-service/configs/nginx.conf | 2 +- devenv/frontend-service/docker-compose.yaml | 2 ++ 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/devenv/frontend-service/README.md b/devenv/frontend-service/README.md index 195338668c2..f4340f2fea4 100644 --- a/devenv/frontend-service/README.md +++ b/devenv/frontend-service/README.md @@ -13,9 +13,9 @@ On top of the main Grafana development dependencies, you will need installed: - [Docker](https://docs.docker.com/get-started/get-docker/) - [Tilt](https://docs.tilt.dev/install.html). At the moment we're not using Kubernetes locally, so you shouldn't need to follow the instructions to install kubectl or kind. -To start the stack, from the root of the Grafana project run `make frontend-service-up`. Tilt will orchestrate the webpack and docker builds, and then run the services with Docker compose. You can monitor it's progress and see logs with the URL to the Tilt console. Once done, you can access Grafana at `http://localhost:3000`. +To start the stack, from the root of the Grafana project run `make frontend-service`. Tilt will orchestrate the webpack and docker builds, and then run the services with Docker compose. You can monitor it's progress and see logs with the URL to the Tilt console. Once done, you can access Grafana at `http://localhost:3000`. -Quitting the process will not stop the service from running. Run `make frontend-service-down` when done to shut down the docker containers. +Quitting the process will stop the service from running. ### Grafana config diff --git a/devenv/frontend-service/configs/nginx.conf b/devenv/frontend-service/configs/nginx.conf index f052bb52d17..aa0c2499656 100644 --- a/devenv/frontend-service/configs/nginx.conf +++ b/devenv/frontend-service/configs/nginx.conf @@ -73,7 +73,7 @@ server { } # API calls go to the backend - location ~ ^/(api|apis|avatar|bootdata|render|logout|public\/plugins|goto) { + location ~ ^/(api|apis|avatar|bootdata|render|logout|public/plugins|public/openapi3|public/api-merged|goto|swagger|openapi/v3) { # Add debug headers to the response add_header Nginx-Trace-Id $otel_trace_id always; add_header Nginx-Route "backend" always; diff --git a/devenv/frontend-service/docker-compose.yaml b/devenv/frontend-service/docker-compose.yaml index cce40084189..e46f54fd8a0 100644 --- a/devenv/frontend-service/docker-compose.yaml +++ b/devenv/frontend-service/docker-compose.yaml @@ -31,6 +31,8 @@ services: - ./provisioning/dashboards:/grafana/conf/provisioning/dashboards - ../dev-dashboards:/grafana/conf/dev-dashboards - ./configs/grafana-api.local.ini:/grafana/conf/custom.ini + - ../../public/openapi3.json:/grafana/public/openapi3.json + - ../../public/api-merged.json:/grafana/public/api-merged.json environment: OTEL_BSP_SCHEDULE_DELAY: 500 GF_DEFAULT_APP_MODE: development From 6a047e8f95de41157d7541db64162d57707cd74c Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:00:46 +0000 Subject: [PATCH 22/26] fix(deps): update dependency @opentelemetry/semantic-conventions to v1.38.0 (#113970) | datasource | package | from | to | | ---------- | ----------------------------------- | ------ | ------ | | npm | @opentelemetry/semantic-conventions | 1.37.0 | 1.38.0 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- package.json | 2 +- public/app/plugins/datasource/tempo/package.json | 2 +- yarn.lock | 12 ++++++------ 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/package.json b/package.json index 32aa7ecc140..132c4e5eda8 100644 --- a/package.json +++ b/package.json @@ -316,7 +316,7 @@ "@openfeature/web-sdk": "^1.6.1", "@opentelemetry/api": "1.9.0", "@opentelemetry/exporter-collector": "0.25.0", - "@opentelemetry/semantic-conventions": "1.37.0", + "@opentelemetry/semantic-conventions": "1.38.0", "@popperjs/core": "2.11.8", "@react-aria/dialog": "3.5.31", "@react-aria/focus": "3.21.2", diff --git a/public/app/plugins/datasource/tempo/package.json b/public/app/plugins/datasource/tempo/package.json index bda2c814e1a..f1f7ca2bc5f 100644 --- a/public/app/plugins/datasource/tempo/package.json +++ b/public/app/plugins/datasource/tempo/package.json @@ -18,7 +18,7 @@ "@lezer/lr": "1.4.3", "@opentelemetry/api": "1.9.0", "@opentelemetry/exporter-collector": "0.25.0", - "@opentelemetry/semantic-conventions": "1.37.0", + "@opentelemetry/semantic-conventions": "1.38.0", "buffer": "6.0.3", "events": "3.3.0", "i18next": "^25.0.0", diff --git a/yarn.lock b/yarn.lock index 3d4b2af9ebe..32ac50ad8e1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2923,7 +2923,7 @@ __metadata: "@lezer/lr": "npm:1.4.3" "@opentelemetry/api": "npm:1.9.0" "@opentelemetry/exporter-collector": "npm:0.25.0" - "@opentelemetry/semantic-conventions": "npm:1.37.0" + "@opentelemetry/semantic-conventions": "npm:1.38.0" "@testing-library/dom": "npm:10.4.1" "@testing-library/jest-dom": "npm:6.6.4" "@testing-library/react": "npm:16.3.0" @@ -6388,10 +6388,10 @@ __metadata: languageName: node linkType: hard -"@opentelemetry/semantic-conventions@npm:1.37.0, @opentelemetry/semantic-conventions@npm:^1.29.0, @opentelemetry/semantic-conventions@npm:^1.32.0": - version: 1.37.0 - resolution: "@opentelemetry/semantic-conventions@npm:1.37.0" - checksum: 10/919951c2ddbe5509dad26afc7b09d9a5e3c169de187013d1836d2771a7e840e85ea500725128b798d7659d89aff480c07fd039cf77858df3f3573a15063db7c3 +"@opentelemetry/semantic-conventions@npm:1.38.0, @opentelemetry/semantic-conventions@npm:^1.29.0, @opentelemetry/semantic-conventions@npm:^1.32.0": + version: 1.38.0 + resolution: "@opentelemetry/semantic-conventions@npm:1.38.0" + checksum: 10/9d549f4896e900f644d5e70dd7142505daff88ed83c1cb7bcd976ac55e9496d4ddd686bb2815dd68655c739950514394c3b73ff51e53b2e4ff2d54a7f6d22521 languageName: node linkType: hard @@ -18908,7 +18908,7 @@ __metadata: "@openfeature/web-sdk": "npm:^1.6.1" "@opentelemetry/api": "npm:1.9.0" "@opentelemetry/exporter-collector": "npm:0.25.0" - "@opentelemetry/semantic-conventions": "npm:1.37.0" + "@opentelemetry/semantic-conventions": "npm:1.38.0" "@playwright/test": "npm:1.56.1" "@pmmmwh/react-refresh-webpack-plugin": "npm:0.6.1" "@popperjs/core": "npm:2.11.8" From 3b328b2609dc387737a38b5b9e11835f26087314 Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:01:16 +0000 Subject: [PATCH 23/26] fix(deps): update dependency @prometheus-io/lezer-promql to v0.307.3 (#113971) | datasource | package | from | to | | ---------- | --------------------------- | ------- | ------- | | npm | @prometheus-io/lezer-promql | 0.305.0 | 0.307.3 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- packages/grafana-prometheus/package.json | 2 +- yarn.lock | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/packages/grafana-prometheus/package.json b/packages/grafana-prometheus/package.json index c1de9df82d8..420cbc04266 100644 --- a/packages/grafana-prometheus/package.json +++ b/packages/grafana-prometheus/package.json @@ -53,7 +53,7 @@ "@lezer/common": "1.3.0", "@lezer/highlight": "1.2.3", "@lezer/lr": "1.4.3", - "@prometheus-io/lezer-promql": "0.305.0", + "@prometheus-io/lezer-promql": "0.307.3", "@reduxjs/toolkit": "2.9.0", "@types/debounce-promise": "3.1.9", "@types/lodash": "4.17.20", diff --git a/yarn.lock b/yarn.lock index 32ac50ad8e1..4225631da0f 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3498,7 +3498,7 @@ __metadata: "@lezer/common": "npm:1.3.0" "@lezer/highlight": "npm:1.2.3" "@lezer/lr": "npm:1.4.3" - "@prometheus-io/lezer-promql": "npm:0.305.0" + "@prometheus-io/lezer-promql": "npm:0.307.3" "@reduxjs/toolkit": "npm:2.9.0" "@rollup/plugin-dynamic-import-vars": "npm:2.1.5" "@rollup/plugin-image": "npm:3.0.3" @@ -6604,13 +6604,13 @@ __metadata: languageName: node linkType: hard -"@prometheus-io/lezer-promql@npm:0.305.0": - version: 0.305.0 - resolution: "@prometheus-io/lezer-promql@npm:0.305.0" +"@prometheus-io/lezer-promql@npm:0.307.3": + version: 0.307.3 + resolution: "@prometheus-io/lezer-promql@npm:0.307.3" peerDependencies: "@lezer/highlight": ^1.1.2 "@lezer/lr": ^1.2.3 - checksum: 10/7bb35c48c51fc66deaa074810fcf7568252cbe04b9eaf08634d3286cd3f506726a5557943dbe57d08fac3c2f8e580a483cc5bfc47018ba45f526f35bbac1251b + checksum: 10/50e4cf89900071f298808c946f39a9662342c812f64fe118fd8f4afbaa018da032039402b765cdaf40701eed75b008f34f6e790e15b78c3d263e591699662a31 languageName: node linkType: hard From 6f8b4032c25a4cdf86408fa37bb372f10695b76d Mon Sep 17 00:00:00 2001 From: "renovate-sh-app[bot]" <219655108+renovate-sh-app[bot]@users.noreply.github.com> Date: Mon, 17 Nov 2025 12:02:14 +0000 Subject: [PATCH 24/26] fix(deps): update dependency immer to v10.2.0 (#113974) | datasource | package | from | to | | ---------- | ------- | ------ | ------ | | npm | immer | 10.1.3 | 10.2.0 | Signed-off-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> Co-authored-by: renovate-sh-app[bot] <219655108+renovate-sh-app[bot]@users.noreply.github.com> --- package.json | 2 +- .../plugins/datasource/azuremonitor/package.json | 2 +- .../datasource/cloud-monitoring/package.json | 2 +- yarn.lock | 15 ++++----------- 4 files changed, 7 insertions(+), 14 deletions(-) diff --git a/package.json b/package.json index 132c4e5eda8..2ca85a2a9e1 100644 --- a/package.json +++ b/package.json @@ -353,7 +353,7 @@ "i18next": "^25.0.0", "i18next-browser-languagedetector": "^8.0.0", "i18next-pseudo": "^2.2.1", - "immer": "10.1.3", + "immer": "10.2.0", "immutable": "5.1.4", "infinite-viewer": "^0.29.1", "ix": "^7.0.0", diff --git a/public/app/plugins/datasource/azuremonitor/package.json b/public/app/plugins/datasource/azuremonitor/package.json index ed73e4c21d6..22cf6d810ce 100644 --- a/public/app/plugins/datasource/azuremonitor/package.json +++ b/public/app/plugins/datasource/azuremonitor/package.json @@ -14,7 +14,7 @@ "@kusto/monaco-kusto": "^10.0.0", "fast-deep-equal": "^3.1.3", "i18next": "^25.0.0", - "immer": "10.1.3", + "immer": "10.2.0", "lodash": "4.17.21", "monaco-editor": "0.34.1", "prismjs": "1.30.0", diff --git a/public/app/plugins/datasource/cloud-monitoring/package.json b/public/app/plugins/datasource/cloud-monitoring/package.json index 4e4cbf5e495..56149be87a2 100644 --- a/public/app/plugins/datasource/cloud-monitoring/package.json +++ b/public/app/plugins/datasource/cloud-monitoring/package.json @@ -14,7 +14,7 @@ "debounce-promise": "3.1.2", "fast-deep-equal": "^3.1.3", "i18next": "^25.0.0", - "immer": "10.1.3", + "immer": "10.2.0", "lodash": "4.17.21", "monaco-editor": "0.34.1", "prismjs": "1.30.0", diff --git a/yarn.lock b/yarn.lock index 4225631da0f..5fe15a6f2cc 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2455,7 +2455,7 @@ __metadata: fast-deep-equal: "npm:^3.1.3" i18next: "npm:^25.0.0" i18next-cli: "npm:1.11.12" - immer: "npm:10.1.3" + immer: "npm:10.2.0" jest: "npm:29.7.0" lodash: "npm:4.17.21" monaco-editor: "npm:0.34.1" @@ -2884,7 +2884,7 @@ __metadata: debounce-promise: "npm:3.1.2" fast-deep-equal: "npm:^3.1.3" i18next: "npm:^25.0.0" - immer: "npm:10.1.3" + immer: "npm:10.2.0" jest: "npm:29.7.0" lodash: "npm:4.17.21" monaco-editor: "npm:0.34.1" @@ -19060,7 +19060,7 @@ __metadata: i18next-browser-languagedetector: "npm:^8.0.0" i18next-cli: "npm:1.11.12" i18next-pseudo: "npm:^2.2.1" - immer: "npm:10.1.3" + immer: "npm:10.2.0" immutable: "npm:5.1.4" infinite-viewer: "npm:^0.29.1" ini: "npm:^5.0.0" @@ -20126,14 +20126,7 @@ __metadata: languageName: node linkType: hard -"immer@npm:10.1.3": - version: 10.1.3 - resolution: "immer@npm:10.1.3" - checksum: 10/672faf5fc84177eecbfb49143ea8f6b5c1f981bd78c57e1562469354f6df658921ed6e0372b9ceed1e07c031e0c6d66863c4df80605928c6c774840b945aef83 - languageName: node - linkType: hard - -"immer@npm:^10.0.3, immer@npm:^10.2.0": +"immer@npm:10.2.0, immer@npm:^10.0.3, immer@npm:^10.2.0": version: 10.2.0 resolution: "immer@npm:10.2.0" checksum: 10/d73e218c8f8ffbb39f9290dfafa478b94af73403dcf26b5672eef35233bb30f09ffe231f8a78a6c9cb442968510edd89e851776ec90a5ddfa82cee6db6b35137 From 77dac4210f80f00a75c958f7ec26be2fc5c9146d Mon Sep 17 00:00:00 2001 From: Tom Ratcliffe Date: Mon, 17 Nov 2025 12:12:47 +0000 Subject: [PATCH 25/26] Chore: Remove `pinNavItems` feature toggle (#113855) --- .../feature-toggles/index.md | 1 - .../src/types/featureToggles.gen.ts | 5 --- pkg/services/featuremgmt/registry.go | 7 ---- pkg/services/featuremgmt/toggles_gen.csv | 1 - pkg/services/featuremgmt/toggles_gen.go | 4 -- pkg/services/featuremgmt/toggles_gen.json | 1 + pkg/services/navtree/navtreeimpl/navtree.go | 7 +--- .../AppChrome/MegaMenu/MegaMenu.tsx | 40 +++++++++---------- .../AppChrome/MegaMenu/MegaMenuItemText.tsx | 6 +-- .../components/AppChrome/MegaMenu/hooks.ts | 6 +-- .../components/AppChrome/MegaMenu/utils.ts | 3 +- public/app/core/reducers/navBarTree.ts | 3 -- 12 files changed, 24 insertions(+), 60 deletions(-) diff --git a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md index 4df5f9856bd..d650f065516 100644 --- a/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md +++ b/docs/sources/setup-grafana/configure-grafana/feature-toggles/index.md @@ -53,7 +53,6 @@ Most [generally available](https://grafana.com/docs/release-life-cycle/#general- | `cloudWatchNewLabelParsing` | Updates CloudWatch label parsing to be more accurate | Yes | | `pluginProxyPreserveTrailingSlash` | Preserve plugin proxy trailing slash. | | | `azureMonitorPrometheusExemplars` | Allows configuration of Azure Monitor as a data source that can provide Prometheus exemplars | Yes | -| `pinNavItems` | Enables pinning of nav items | Yes | | `ssoSettingsLDAP` | Use the new SSO Settings API to configure LDAP | Yes | | `cloudWatchRoundUpEndTime` | Round up end time for metric queries to the next minute to avoid missing data | Yes | | `newFiltersUI` | Enables new combobox style UI for the Ad hoc filters variable in scenes architecture | Yes | diff --git a/packages/grafana-data/src/types/featureToggles.gen.ts b/packages/grafana-data/src/types/featureToggles.gen.ts index 8dec833ef91..3a609e47e9a 100644 --- a/packages/grafana-data/src/types/featureToggles.gen.ts +++ b/packages/grafana-data/src/types/featureToggles.gen.ts @@ -566,11 +566,6 @@ export interface FeatureToggles { */ azureMonitorPrometheusExemplars?: boolean; /** - * Enables pinning of nav items - * @default true - */ - pinNavItems?: boolean; - /** * Enables the gRPC server for authorization */ authZGRPCServer?: boolean; diff --git a/pkg/services/featuremgmt/registry.go b/pkg/services/featuremgmt/registry.go index 5b69846124d..81b6545787a 100644 --- a/pkg/services/featuremgmt/registry.go +++ b/pkg/services/featuremgmt/registry.go @@ -975,13 +975,6 @@ var ( Owner: grafanaPartnerPluginsSquad, Expression: "true", // enabled by default }, - { - Name: "pinNavItems", - Description: "Enables pinning of nav items", - Stage: FeatureStageGeneralAvailability, - Owner: grafanaFrontendSearchNavOrganise, - Expression: "true", // enabled by default - }, { Name: "authZGRPCServer", Description: "Enables the gRPC server for authorization", diff --git a/pkg/services/featuremgmt/toggles_gen.csv b/pkg/services/featuremgmt/toggles_gen.csv index 7194c4e20a6..38dcf5ce5bf 100644 --- a/pkg/services/featuremgmt/toggles_gen.csv +++ b/pkg/services/featuremgmt/toggles_gen.csv @@ -127,7 +127,6 @@ preserveDashboardStateWhenNavigating,experimental,@grafana/dashboards-squad,fals alertingCentralAlertHistory,experimental,@grafana/alerting-squad,false,false,true pluginProxyPreserveTrailingSlash,GA,@grafana/plugins-platform-backend,false,false,false azureMonitorPrometheusExemplars,GA,@grafana/partner-datasources,false,false,false -pinNavItems,GA,@grafana/grafana-search-navigate-organise,false,false,false authZGRPCServer,experimental,@grafana/identity-access-team,false,false,false ssoSettingsLDAP,GA,@grafana/identity-access-team,false,true,false zanzana,experimental,@grafana/identity-access-team,false,false,false diff --git a/pkg/services/featuremgmt/toggles_gen.go b/pkg/services/featuremgmt/toggles_gen.go index 20242cbb7f4..fc005ce587f 100644 --- a/pkg/services/featuremgmt/toggles_gen.go +++ b/pkg/services/featuremgmt/toggles_gen.go @@ -519,10 +519,6 @@ const ( // Allows configuration of Azure Monitor as a data source that can provide Prometheus exemplars FlagAzureMonitorPrometheusExemplars = "azureMonitorPrometheusExemplars" - // FlagPinNavItems - // Enables pinning of nav items - FlagPinNavItems = "pinNavItems" - // FlagAuthZGRPCServer // Enables the gRPC server for authorization FlagAuthZGRPCServer = "authZGRPCServer" diff --git a/pkg/services/featuremgmt/toggles_gen.json b/pkg/services/featuremgmt/toggles_gen.json index 6b3ccdd2a43..132ff274df2 100644 --- a/pkg/services/featuremgmt/toggles_gen.json +++ b/pkg/services/featuremgmt/toggles_gen.json @@ -3084,6 +3084,7 @@ "name": "pinNavItems", "resourceVersion": "1762958248290", "creationTimestamp": "2024-06-10T11:40:03Z", + "deletionTimestamp": "2025-11-13T14:52:10Z", "annotations": { "grafana.app/updatedTimestamp": "2025-11-12 14:37:28.29086 +0000 UTC" } diff --git a/pkg/services/navtree/navtreeimpl/navtree.go b/pkg/services/navtree/navtreeimpl/navtree.go index 31fe4d2982f..0c059c204b5 100644 --- a/pkg/services/navtree/navtreeimpl/navtree.go +++ b/pkg/services/navtree/navtreeimpl/navtree.go @@ -24,8 +24,6 @@ import ( "github.com/grafana/grafana/pkg/services/star" "github.com/grafana/grafana/pkg/services/supportbundles/supportbundlesimpl" "github.com/grafana/grafana/pkg/setting" - - "github.com/open-feature/go-sdk/openfeature" ) type ServiceImpl struct { @@ -86,7 +84,6 @@ func ProvideService(cfg *setting.Cfg, accessControl ac.AccessControl, pluginStor func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Preference) (*navtree.NavTreeRoot, error) { hasAccess := ac.HasAccess(s.accessControl, c) treeRoot := &navtree.NavTreeRoot{} - ctx := c.Req.Context() treeRoot.AddSection(s.getHomeNode(c, prefs)) @@ -188,9 +185,7 @@ func (s *ServiceImpl) GetNavTree(c *contextmodel.ReqContext, prefs *pref.Prefere treeRoot.RemoveSectionByID(navtree.NavIDCfg) } - flagDetails, err := openfeature.NewDefaultClient().BooleanValueDetails(ctx, featuremgmt.FlagPinNavItems, true, openfeature.TransactionContext(ctx)) - s.log.Debug("flag evaluation: ", "flagDetails", flagDetails, "err", err) - if flagDetails.Value && c.IsSignedIn { + if c.IsSignedIn { treeRoot.AddSection(&navtree.NavLink{ Text: "Bookmarks", Id: navtree.NavIDBookmarks, diff --git a/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx b/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx index c2be1a66141..16d100b3bb4 100644 --- a/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx +++ b/public/app/core/components/AppChrome/MegaMenu/MegaMenu.tsx @@ -7,7 +7,7 @@ import { usePatchUserPreferencesMutation } from '@grafana/api-clients/rtkq/legac import { GrafanaTheme2, NavModelItem } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { t } from '@grafana/i18n'; -import { config, reportInteraction } from '@grafana/runtime'; +import { reportInteraction } from '@grafana/runtime'; import { ScrollContainer, useStyles2 } from '@grafana/ui'; import { useGrafana } from 'app/core/context/GrafanaContext'; import { setBookmark } from 'app/core/reducers/navBarTree'; @@ -40,25 +40,23 @@ export const MegaMenu = memo( .filter((item) => item.id !== 'profile' && item.id !== 'help') .map((item) => enrichWithInteractionTracking(item, state.megaMenuDocked)); - if (config.featureToggles.pinNavItems) { - const bookmarksItem = navItems.find((item) => item.id === 'bookmarks'); - if (bookmarksItem) { - // Add children to the bookmarks section - bookmarksItem.children = pinnedItems.reduce((acc: NavModelItem[], url) => { - const item = findByUrl(navItems, url); - if (!item) { - return acc; - } - const newItem = { - id: item.id, - text: item.text, - url: item.url, - parentItem: { id: 'bookmarks', text: 'Bookmarks' }, - }; - acc.push(enrichWithInteractionTracking(newItem, state.megaMenuDocked)); + const bookmarksItem = navItems.find((item) => item.id === 'bookmarks'); + if (bookmarksItem) { + // Add children to the bookmarks section + bookmarksItem.children = pinnedItems.reduce((acc: NavModelItem[], url) => { + const item = findByUrl(navItems, url); + if (!item) { return acc; - }, []); - } + } + const newItem = { + id: item.id, + text: item.text, + url: item.url, + parentItem: { id: 'bookmarks', text: 'Bookmarks' }, + }; + acc.push(enrichWithInteractionTracking(newItem, state.megaMenuDocked)); + return acc; + }, []); } const activeItem = getActiveItem(navItems, state.sectionNav.node, location.pathname); @@ -85,8 +83,8 @@ export const MegaMenu = memo( ); const onPinItem = (item: NavModelItem) => { - const url = item.url; - if (url && config.featureToggles.pinNavItems) { + const { url } = item; + if (url) { const isSaved = isPinned(url); const newItems = isSaved ? pinnedItems.filter((i) => url !== i) : [...pinnedItems, url]; const interactionName = isSaved ? 'grafana_nav_item_unpinned' : 'grafana_nav_item_pinned'; diff --git a/public/app/core/components/AppChrome/MegaMenu/MegaMenuItemText.tsx b/public/app/core/components/AppChrome/MegaMenu/MegaMenuItemText.tsx index 672a24cdc3b..bf81264d6c6 100644 --- a/public/app/core/components/AppChrome/MegaMenu/MegaMenuItemText.tsx +++ b/public/app/core/components/AppChrome/MegaMenu/MegaMenuItemText.tsx @@ -4,7 +4,6 @@ import * as React from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { selectors } from '@grafana/e2e-selectors'; import { t } from '@grafana/i18n'; -import { config } from '@grafana/runtime'; import { Icon, IconButton, Link, useTheme2 } from '@grafana/ui'; import { contextSrv } from 'app/core/services/context_srv'; @@ -39,7 +38,6 @@ export function MegaMenuItemText({ children, isActive, onClick, target, url, onP
{linkContent} - {config.featureToggles.pinNavItems && contextSrv.isSignedIn && url && url !== '/bookmarks' && ( + {contextSrv.isSignedIn && url && url !== '/bookmarks' && ( ({ justifyContent: 'space-between', width: '100%', height: '100%', - }), - wrapperBookmark: css({ '.pin-icon': { visibility: 'hidden', }, diff --git a/public/app/core/components/AppChrome/MegaMenu/hooks.ts b/public/app/core/components/AppChrome/MegaMenu/hooks.ts index 62a33dcbd7f..f504999accc 100644 --- a/public/app/core/components/AppChrome/MegaMenu/hooks.ts +++ b/public/app/core/components/AppChrome/MegaMenu/hooks.ts @@ -1,7 +1,6 @@ import { useMemo } from 'react'; import { useGetUserPreferencesQuery } from '@grafana/api-clients/rtkq/legacy/preferences'; -import { config } from '@grafana/runtime'; import { contextSrv } from '../../../services/context_srv'; @@ -9,8 +8,5 @@ export const usePinnedItems = () => { const preferences = useGetUserPreferencesQuery(undefined, { skip: !contextSrv.user.isSignedIn }); const pinnedItems = useMemo(() => preferences.data?.navbar?.bookmarkUrls || [], [preferences]); - if (config.featureToggles.pinNavItems) { - return pinnedItems; - } - return []; + return pinnedItems; }; diff --git a/public/app/core/components/AppChrome/MegaMenu/utils.ts b/public/app/core/components/AppChrome/MegaMenu/utils.ts index b34aa2c8a08..b1fde6700d3 100644 --- a/public/app/core/components/AppChrome/MegaMenu/utils.ts +++ b/public/app/core/components/AppChrome/MegaMenu/utils.ts @@ -61,8 +61,7 @@ export const enrichWithInteractionTracking = ( reportInteraction('grafana_navigation_item_clicked', { path: newItem.url ?? newItem.id, menuIsDocked: megaMenuDockedState, - itemIsBookmarked: Boolean(config.featureToggles.pinNavItems && newItem?.parentItem?.id === 'bookmarks'), - bookmarkToggleOn: Boolean(config.featureToggles.pinNavItems), + itemIsBookmarked: newItem?.parentItem?.id === 'bookmarks', isNew, }); onClick?.(); diff --git a/public/app/core/reducers/navBarTree.ts b/public/app/core/reducers/navBarTree.ts index eeaa8083b76..fd4de3cfb4b 100644 --- a/public/app/core/reducers/navBarTree.ts +++ b/public/app/core/reducers/navBarTree.ts @@ -52,9 +52,6 @@ const navTreeSlice = createSlice({ } }, setBookmark: (state, action: PayloadAction<{ item: NavModelItem; isSaved: boolean }>) => { - if (!config.featureToggles.pinNavItems) { - return; - } const bookmarks = state.find((navItem) => navItem.id === 'bookmarks'); const { item, isSaved } = action.payload; if (bookmarks) { From 434d370394d0c7033a9ae147c6807e19e024aacf Mon Sep 17 00:00:00 2001 From: Laura Benz <48948963+L-M-K-B@users.noreply.github.com> Date: Mon, 17 Nov 2025 13:19:37 +0100 Subject: [PATCH 26/26] BrowseDashboards: Add tracking (#113696) * feat: add tracking for New button * feat: add tracking for New button dashboard click * refactor: move tracking * refactor: add payload * refactor: clean up * refactor: include folder clicks * refactor: add view to payload * feat: add tracking in serach view * refactor: fix TS error * refactor: adjust payload * refactor: adjust payload * refactor: fix TS error * refactor: clean up * refactor: set trackingSource * refactor: remove type declaration Co-authored-by: Alex Khomenko * refactor: apply changes after code review * Refactor: clean up Co-authored-by: Alex Khomenko * refactor: fix tests --------- Co-authored-by: Alex Khomenko --- .../components/CreateNewButton.tsx | 7 ++- .../browse-dashboards/components/NameCell.tsx | 6 ++- .../components/SearchView.tsx | 1 + .../plugins/admin/components/PluginUsage.tsx | 1 + .../page/components/SearchResultsTable.tsx | 45 ++++++++++++++----- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/public/app/features/browse-dashboards/components/CreateNewButton.tsx b/public/app/features/browse-dashboards/components/CreateNewButton.tsx index c263b110e56..46bff8848f5 100644 --- a/public/app/features/browse-dashboards/components/CreateNewButton.tsx +++ b/public/app/features/browse-dashboards/components/CreateNewButton.tsx @@ -50,6 +50,11 @@ export default function CreateNewButton({ const notifyApp = useAppNotification(); const isProvisionedInstance = useIsProvisionedInstance(); + const handleVisibleChange = () => { + !isOpen && reportInteraction('grafana_create_new_button_menu_opened'); + setIsOpen(!isOpen); + }; + let renderPreBuiltDashboardAction = false; if (config.featureToggles.dashboardTemplates) { const testDataSources = getDataSourceSrv().getList({ type: 'grafana-testdata-datasource' }); @@ -129,7 +134,7 @@ export default function CreateNewButton({ return ( <> - +