diff --git a/public/app/api/clients/advisor/baseAPI.ts b/public/app/api/clients/advisor/v0alpha1/baseAPI.ts similarity index 90% rename from public/app/api/clients/advisor/baseAPI.ts rename to public/app/api/clients/advisor/v0alpha1/baseAPI.ts index 2bac93ae545..2844f269cf0 100644 --- a/public/app/api/clients/advisor/baseAPI.ts +++ b/public/app/api/clients/advisor/v0alpha1/baseAPI.ts @@ -6,7 +6,7 @@ import { getAPIBaseURL } from 'app/api/utils'; export const BASE_URL = getAPIBaseURL('advisor.grafana.app', 'v0alpha1'); export const api = createApi({ - reducerPath: 'advisorAPI', + reducerPath: 'advisorAPIv0alpha1', baseQuery: createBaseQuery({ baseURL: BASE_URL, }), diff --git a/public/app/api/clients/advisor/endpoints.gen.ts b/public/app/api/clients/advisor/v0alpha1/endpoints.gen.ts similarity index 100% rename from public/app/api/clients/advisor/endpoints.gen.ts rename to public/app/api/clients/advisor/v0alpha1/endpoints.gen.ts diff --git a/public/app/api/clients/advisor/index.ts b/public/app/api/clients/advisor/v0alpha1/index.ts similarity index 93% rename from public/app/api/clients/advisor/index.ts rename to public/app/api/clients/advisor/v0alpha1/index.ts index 2cde4d01811..b659d3adb4c 100644 --- a/public/app/api/clients/advisor/index.ts +++ b/public/app/api/clients/advisor/v0alpha1/index.ts @@ -1,6 +1,6 @@ import { generatedAPI } from './endpoints.gen'; -export const advisorAPI = generatedAPI.enhanceEndpoints({ +export const advisorAPIv0alpha1 = generatedAPI.enhanceEndpoints({ endpoints: { // Need to mutate the generated query to set the Content-Type header correctly updateCheck: (endpointDefinition) => { @@ -37,5 +37,5 @@ export const { useUpdateCheckMutation, useListCheckTypeQuery, useUpdateCheckTypeMutation, -} = advisorAPI; +} = advisorAPIv0alpha1; export { type Check, type CheckType } from './endpoints.gen'; // eslint-disable-line diff --git a/public/app/api/clients/folder/baseAPI.ts b/public/app/api/clients/folder/v1beta1/baseAPI.ts similarity index 91% rename from public/app/api/clients/folder/baseAPI.ts rename to public/app/api/clients/folder/v1beta1/baseAPI.ts index a51b1619eaa..3caca81a027 100644 --- a/public/app/api/clients/folder/baseAPI.ts +++ b/public/app/api/clients/folder/v1beta1/baseAPI.ts @@ -6,7 +6,7 @@ import { getAPIBaseURL } from 'app/api/utils'; export const BASE_URL = getAPIBaseURL('folder.grafana.app', 'v1beta1'); export const api = createApi({ - reducerPath: 'folderAPI', + reducerPath: 'folderAPIv1beta1', baseQuery: createBaseQuery({ baseURL: BASE_URL, }), diff --git a/public/app/api/clients/folder/endpoints.gen.ts b/public/app/api/clients/folder/v1beta1/endpoints.gen.ts similarity index 100% rename from public/app/api/clients/folder/endpoints.gen.ts rename to public/app/api/clients/folder/v1beta1/endpoints.gen.ts diff --git a/public/app/api/clients/folder/index.ts b/public/app/api/clients/folder/v1beta1/index.ts similarity index 56% rename from public/app/api/clients/folder/index.ts rename to public/app/api/clients/folder/v1beta1/index.ts index 7842aefb6c7..9c23e74f2b6 100644 --- a/public/app/api/clients/folder/index.ts +++ b/public/app/api/clients/folder/v1beta1/index.ts @@ -1,8 +1,8 @@ import { generatedAPI } from './endpoints.gen'; -export const folderAPI = generatedAPI.enhanceEndpoints({}); +export const folderAPIv1beta1 = generatedAPI.enhanceEndpoints({}); -export const { useGetFolderQuery } = folderAPI; +export const { useGetFolderQuery } = folderAPIv1beta1; // eslint-disable-next-line no-barrel-files/no-barrel-files export { type Folder } from './endpoints.gen'; diff --git a/public/app/api/clients/iam/baseAPI.ts b/public/app/api/clients/iam/v0alpha1/baseAPI.ts similarity index 63% rename from public/app/api/clients/iam/baseAPI.ts rename to public/app/api/clients/iam/v0alpha1/baseAPI.ts index bb2d1e31850..ae67ceffb7d 100644 --- a/public/app/api/clients/iam/baseAPI.ts +++ b/public/app/api/clients/iam/v0alpha1/baseAPI.ts @@ -1,12 +1,12 @@ import { createApi } from '@reduxjs/toolkit/query/react'; -import { createBaseQuery } from '../../createBaseQuery'; -import { getAPIBaseURL } from '../../utils'; +import { createBaseQuery } from 'app/api/createBaseQuery'; +import { getAPIBaseURL } from 'app/api/utils'; export const BASE_URL = getAPIBaseURL('iam.grafana.app', 'v0alpha1'); export const api = createApi({ baseQuery: createBaseQuery({ baseURL: BASE_URL }), - reducerPath: 'iamAPI', + reducerPath: 'iamAPIv0alpha1', endpoints: () => ({}), }); diff --git a/public/app/api/clients/iam/endpoints.gen.ts b/public/app/api/clients/iam/v0alpha1/endpoints.gen.ts similarity index 100% rename from public/app/api/clients/iam/endpoints.gen.ts rename to public/app/api/clients/iam/v0alpha1/endpoints.gen.ts diff --git a/public/app/api/clients/iam/index.ts b/public/app/api/clients/iam/v0alpha1/index.ts similarity index 62% rename from public/app/api/clients/iam/index.ts rename to public/app/api/clients/iam/v0alpha1/index.ts index af251160d2a..cfadbc79f0a 100644 --- a/public/app/api/clients/iam/index.ts +++ b/public/app/api/clients/iam/v0alpha1/index.ts @@ -1,5 +1,5 @@ import { generatedAPI } from './endpoints.gen'; -export const iamAPI = generatedAPI.enhanceEndpoints({}); +export const iamAPIv0alpha1 = generatedAPI.enhanceEndpoints({}); export const { useGetDisplayMappingQuery } = generatedAPI; diff --git a/public/app/api/clients/playlist/baseAPI.ts b/public/app/api/clients/playlist/v0alpha1/baseAPI.ts similarity index 90% rename from public/app/api/clients/playlist/baseAPI.ts rename to public/app/api/clients/playlist/v0alpha1/baseAPI.ts index a258fa0b9df..27cd1f3a325 100644 --- a/public/app/api/clients/playlist/baseAPI.ts +++ b/public/app/api/clients/playlist/v0alpha1/baseAPI.ts @@ -6,7 +6,7 @@ import { getAPIBaseURL } from 'app/api/utils'; export const BASE_URL = getAPIBaseURL('playlist.grafana.app', 'v0alpha1'); export const api = createApi({ - reducerPath: 'playlistAPI', + reducerPath: 'playlistAPIv0alpha1', baseQuery: createBaseQuery({ baseURL: BASE_URL, }), diff --git a/public/app/api/clients/playlist/endpoints.gen.ts b/public/app/api/clients/playlist/v0alpha1/endpoints.gen.ts similarity index 99% rename from public/app/api/clients/playlist/endpoints.gen.ts rename to public/app/api/clients/playlist/v0alpha1/endpoints.gen.ts index 0e771f9e7c8..7c5cd879b1d 100644 --- a/public/app/api/clients/playlist/endpoints.gen.ts +++ b/public/app/api/clients/playlist/v0alpha1/endpoints.gen.ts @@ -306,6 +306,7 @@ export type Playlist = { /** 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; metadata: ObjectMeta; + /** Spec is the spec of the Playlist */ spec: PlaylistSpec; status: PlaylistStatus; }; diff --git a/public/app/api/clients/playlist/index.ts b/public/app/api/clients/playlist/v0alpha1/index.ts similarity index 88% rename from public/app/api/clients/playlist/index.ts rename to public/app/api/clients/playlist/v0alpha1/index.ts index b8e70477de4..f42d9a318f2 100644 --- a/public/app/api/clients/playlist/index.ts +++ b/public/app/api/clients/playlist/v0alpha1/index.ts @@ -1,13 +1,13 @@ import { getBackendSrv } from '@grafana/runtime'; -import { notifyApp } from '../../../core/actions'; -import { createSuccessNotification } from '../../../core/copy/appNotification'; -import { contextSrv } from '../../../core/services/context_srv'; -import { handleError } from '../../utils'; +import { notifyApp } from '../../../../core/actions'; +import { createSuccessNotification } from '../../../../core/copy/appNotification'; +import { contextSrv } from '../../../../core/services/context_srv'; +import { handleError } from '../../../utils'; import { generatedAPI, Playlist, PlaylistSpec } from './endpoints.gen'; -export const playlistAPI = generatedAPI.enhanceEndpoints({ +export const playlistAPIv0alpha1 = generatedAPI.enhanceEndpoints({ endpoints: { getPlaylist: { transformResponse: async (response: Playlist) => { @@ -81,7 +81,7 @@ export const { useGetPlaylistQuery, useListPlaylistQuery, useReplacePlaylistMutation, -} = playlistAPI; +} = playlistAPIv0alpha1; // eslint-disable-next-line no-barrel-files/no-barrel-files export type { Playlist } from './endpoints.gen'; diff --git a/public/app/api/clients/provisioning/utils/getListParams.ts b/public/app/api/clients/provisioning/utils/getListParams.ts index eb4af0ab6e7..e4005ca866f 100644 --- a/public/app/api/clients/provisioning/utils/getListParams.ts +++ b/public/app/api/clients/provisioning/utils/getListParams.ts @@ -1,6 +1,6 @@ import { parseListOptionsSelector } from '../../../../features/apiserver/client'; import { ListOptions } from '../../../../features/apiserver/types'; -import { ListRepositoryApiArg } from '../endpoints.gen'; +import { ListRepositoryApiArg } from '../v0alpha1/endpoints.gen'; type ListParams = Omit & Pick; diff --git a/public/app/api/clients/provisioning/baseAPI.ts b/public/app/api/clients/provisioning/v0alpha1/baseAPI.ts similarity index 90% rename from public/app/api/clients/provisioning/baseAPI.ts rename to public/app/api/clients/provisioning/v0alpha1/baseAPI.ts index 9d3693bf8e3..b7709ed3b0e 100644 --- a/public/app/api/clients/provisioning/baseAPI.ts +++ b/public/app/api/clients/provisioning/v0alpha1/baseAPI.ts @@ -6,7 +6,7 @@ import { createBaseQuery } from 'app/api/createBaseQuery'; export const BASE_URL = `apis/provisioning.grafana.app/v0alpha1/namespaces/${config.namespace}`; export const api = createApi({ - reducerPath: 'provisioningAPI', + reducerPath: 'provisioningAPIv0alpha1', baseQuery: createBaseQuery({ baseURL: BASE_URL, }), diff --git a/public/app/api/clients/provisioning/endpoints.gen.ts b/public/app/api/clients/provisioning/v0alpha1/endpoints.gen.ts similarity index 100% rename from public/app/api/clients/provisioning/endpoints.gen.ts rename to public/app/api/clients/provisioning/v0alpha1/endpoints.gen.ts diff --git a/public/app/api/clients/provisioning/index.ts b/public/app/api/clients/provisioning/v0alpha1/index.ts similarity index 95% rename from public/app/api/clients/provisioning/index.ts rename to public/app/api/clients/provisioning/v0alpha1/index.ts index 99a5ca42f23..986915cebbe 100644 --- a/public/app/api/clients/provisioning/index.ts +++ b/public/app/api/clients/provisioning/v0alpha1/index.ts @@ -1,12 +1,13 @@ import { t } from '@grafana/i18n'; import { isFetchError } from '@grafana/runtime'; -import { notifyApp } from 'app/core/actions'; -import { createSuccessNotification, createErrorNotification } from 'app/core/copy/appNotification'; + +import { notifyApp } from '../../../../core/actions'; +import { createSuccessNotification, createErrorNotification } from '../../../../core/copy/appNotification'; +import { createOnCacheEntryAdded } from '../utils/createOnCacheEntryAdded'; import { generatedAPI, JobSpec, JobStatus, RepositorySpec, RepositoryStatus, ErrorDetails } from './endpoints.gen'; -import { createOnCacheEntryAdded } from './utils/createOnCacheEntryAdded'; -export const provisioningAPI = generatedAPI.enhanceEndpoints({ +export const provisioningAPIv0alpha1 = generatedAPI.enhanceEndpoints({ endpoints: { listJob: { // Do not include 'watch' in the first query, so we can get the initial list of jobs diff --git a/public/app/core/reducers/root.ts b/public/app/core/reducers/root.ts index 4a545d2c350..0ed1d930384 100644 --- a/public/app/core/reducers/root.ts +++ b/public/app/core/reducers/root.ts @@ -26,11 +26,11 @@ import teamsReducers from 'app/features/teams/state/reducers'; import usersReducers from 'app/features/users/state/reducers'; import templatingReducers from 'app/features/variables/state/keyedVariablesReducer'; -import { advisorAPI } from '../../api/clients/advisor'; -import { folderAPI } from '../../api/clients/folder'; -import { iamAPI } from '../../api/clients/iam'; -import { playlistAPI } from '../../api/clients/playlist'; -import { provisioningAPI } from '../../api/clients/provisioning'; +import { advisorAPIv0alpha1 } from '../../api/clients/advisor/v0alpha1'; +import { folderAPIv1beta1 } from '../../api/clients/folder/v1beta1'; +import { iamAPIv0alpha1 } from '../../api/clients/iam/v0alpha1'; +import { playlistAPIv0alpha1 } from '../../api/clients/playlist/v0alpha1'; +import { provisioningAPIv0alpha1 } from '../../api/clients/provisioning/v0alpha1'; import { alertingApi } from '../../features/alerting/unified/api/alertingApi'; import { userPreferencesAPI } from '../../features/preferences/api'; import { cleanUpAction } from '../actions/cleanUp'; @@ -63,12 +63,12 @@ const rootReducers = { [publicDashboardApi.reducerPath]: publicDashboardApi.reducer, [browseDashboardsAPI.reducerPath]: browseDashboardsAPI.reducer, [cloudMigrationAPI.reducerPath]: cloudMigrationAPI.reducer, - [iamAPI.reducerPath]: iamAPI.reducer, - [playlistAPI.reducerPath]: playlistAPI.reducer, + [iamAPIv0alpha1.reducerPath]: iamAPIv0alpha1.reducer, + [playlistAPIv0alpha1.reducerPath]: playlistAPIv0alpha1.reducer, [userPreferencesAPI.reducerPath]: userPreferencesAPI.reducer, - [provisioningAPI.reducerPath]: provisioningAPI.reducer, - [folderAPI.reducerPath]: folderAPI.reducer, - [advisorAPI.reducerPath]: advisorAPI.reducer, + [provisioningAPIv0alpha1.reducerPath]: provisioningAPIv0alpha1.reducer, + [folderAPIv1beta1.reducerPath]: folderAPIv1beta1.reducer, + [advisorAPIv0alpha1.reducerPath]: advisorAPIv0alpha1.reducer, // PLOP_INJECT_REDUCER // Used by the API client generator }; diff --git a/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts b/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts index fd99afb779c..55da4c9ba10 100644 --- a/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts +++ b/public/app/features/browse-dashboards/api/browseDashboardsAPI.ts @@ -5,7 +5,7 @@ import { t } from '@grafana/i18n'; import { config, getBackendSrv, locationService } from '@grafana/runtime'; import { Dashboard } from '@grafana/schema'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2alpha1/types.spec.gen'; -import { folderAPI } from 'app/api/clients/folder'; +import { folderAPIv1beta1 as folderAPI } from 'app/api/clients/folder/v1beta1'; import { createBaseQuery, handleRequestError } from 'app/api/createBaseQuery'; import appEvents from 'app/core/app_events'; import { contextSrv } from 'app/core/core'; diff --git a/public/app/features/browse-dashboards/api/isProvisioned.ts b/public/app/features/browse-dashboards/api/isProvisioned.ts index a036f8fcd1e..7df88e77de3 100644 --- a/public/app/features/browse-dashboards/api/isProvisioned.ts +++ b/public/app/features/browse-dashboards/api/isProvisioned.ts @@ -1,4 +1,4 @@ -import { Folder } from 'app/api/clients/folder'; +import { Folder } from 'app/api/clients/folder/v1beta1'; import { AnnoKeyManagerKind, ManagerKind } from 'app/features/apiserver/types'; import { DashboardDTO } from 'app/types'; diff --git a/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.test.tsx b/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.test.tsx index b2c5c0c2c2c..6f90d88134e 100644 --- a/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.test.tsx +++ b/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.test.tsx @@ -3,8 +3,8 @@ import userEvent from '@testing-library/user-event'; import { AppEvents } from '@grafana/data'; import { getAppEvents } from '@grafana/runtime'; -import { useGetFolderQuery } from 'app/api/clients/folder'; -import { useCreateRepositoryFilesWithPathMutation } from 'app/api/clients/provisioning'; +import { useGetFolderQuery } from 'app/api/clients/folder/v1beta1'; +import { useCreateRepositoryFilesWithPathMutation } from 'app/api/clients/provisioning/v0alpha1'; import { validationSrv } from 'app/features/manage-dashboards/services/ValidationSrv'; import { useGetResourceRepositoryView } from 'app/features/provisioning/hooks/useGetResourceRepositoryView'; import { usePullRequestParam } from 'app/features/provisioning/hooks/usePullRequestParam'; @@ -35,13 +35,13 @@ jest.mock('app/features/manage-dashboards/services/ValidationSrv', () => { }; }); -jest.mock('app/api/clients/provisioning', () => { +jest.mock('app/api/clients/provisioning/v0alpha1', () => { return { useCreateRepositoryFilesWithPathMutation: jest.fn(), }; }); -jest.mock('app/api/clients/folder', () => { +jest.mock('app/api/clients/folder/v1beta1', () => { return { useGetFolderQuery: jest.fn(), }; diff --git a/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.tsx b/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.tsx index a0af7548ac7..002b24a7f51 100644 --- a/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.tsx +++ b/public/app/features/browse-dashboards/components/NewProvisionedFolderForm.tsx @@ -6,7 +6,7 @@ import { AppEvents } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { getAppEvents } from '@grafana/runtime'; import { Alert, Button, Field, Input, RadioButtonGroup, Spinner, Stack, TextArea } from '@grafana/ui'; -import { useCreateRepositoryFilesWithPathMutation } from 'app/api/clients/provisioning'; +import { useCreateRepositoryFilesWithPathMutation } from 'app/api/clients/provisioning/v0alpha1'; import { AnnoKeySourcePath, Resource } from 'app/features/apiserver/types'; import { getDefaultWorkflow, getWorkflowOptions } from 'app/features/dashboard-scene/saving/provisioned/defaults'; import { validationSrv } from 'app/features/manage-dashboards/services/ValidationSrv'; diff --git a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts index 3af6b70d776..e143df2b776 100644 --- a/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts +++ b/public/app/features/dashboard-scene/pages/DashboardScenePageStateManager.ts @@ -3,7 +3,7 @@ import { t } from '@grafana/i18n'; import { config, getBackendSrv, isFetchError, locationService } from '@grafana/runtime'; import { sceneGraph } from '@grafana/scenes'; import { Spec as DashboardV2Spec } from '@grafana/schema/dist/esm/schema/dashboard/v2alpha1/types.spec.gen'; -import { BASE_URL } from 'app/api/clients/provisioning/baseAPI'; +import { BASE_URL } from 'app/api/clients/provisioning/v0alpha1/baseAPI'; import { StateManagerBase } from 'app/core/services/StateManagerBase'; import { getMessageFromError, getMessageIdFromError, getStatusFromError } from 'app/core/utils/errors'; import { startMeasure, stopMeasure } from 'app/core/utils/metrics'; diff --git a/public/app/features/dashboard-scene/saving/provisioned/DashboardPreviewBanner.tsx b/public/app/features/dashboard-scene/saving/provisioned/DashboardPreviewBanner.tsx index 6d2af419bf7..1f7486a921f 100644 --- a/public/app/features/dashboard-scene/saving/provisioned/DashboardPreviewBanner.tsx +++ b/public/app/features/dashboard-scene/saving/provisioned/DashboardPreviewBanner.tsx @@ -2,7 +2,7 @@ import { textUtil } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { config } from '@grafana/runtime'; import { Alert, Icon, Stack } from '@grafana/ui'; -import { useGetRepositoryFilesWithPathQuery } from 'app/api/clients/provisioning'; +import { useGetRepositoryFilesWithPathQuery } from 'app/api/clients/provisioning/v0alpha1'; import { DashboardPageRouteSearchParams } from 'app/features/dashboard/containers/types'; import { usePullRequestParam } from 'app/features/provisioning/hooks/usePullRequestParam'; import { DashboardRoutes } from 'app/types'; diff --git a/public/app/features/dashboard-scene/saving/provisioned/SaveProvisionedDashboardForm.tsx b/public/app/features/dashboard-scene/saving/provisioned/SaveProvisionedDashboardForm.tsx index 661ab5879d2..d728a2f746f 100644 --- a/public/app/features/dashboard-scene/saving/provisioned/SaveProvisionedDashboardForm.tsx +++ b/public/app/features/dashboard-scene/saving/provisioned/SaveProvisionedDashboardForm.tsx @@ -7,7 +7,7 @@ import { Trans, t } from '@grafana/i18n'; import { getAppEvents, locationService } from '@grafana/runtime'; import { Dashboard } from '@grafana/schema'; import { Alert, Button, Field, Input, RadioButtonGroup, Stack, TextArea } from '@grafana/ui'; -import { RepositoryView } from 'app/api/clients/provisioning'; +import { RepositoryView } from 'app/api/clients/provisioning/v0alpha1'; import { FolderPicker } from 'app/core/components/Select/FolderPicker'; import kbn from 'app/core/utils/kbn'; import { Resource } from 'app/features/apiserver/types'; diff --git a/public/app/features/dashboard-scene/saving/provisioned/defaults.ts b/public/app/features/dashboard-scene/saving/provisioned/defaults.ts index 782aa2027a2..113d2ac5e11 100644 --- a/public/app/features/dashboard-scene/saving/provisioned/defaults.ts +++ b/public/app/features/dashboard-scene/saving/provisioned/defaults.ts @@ -1,5 +1,5 @@ import { t } from '@grafana/i18n'; -import { RepositoryView } from 'app/api/clients/provisioning'; +import { RepositoryView } from 'app/api/clients/provisioning/v0alpha1'; export function getDefaultWorkflow(config?: RepositoryView, loadedFromRef?: string) { if (loadedFromRef && loadedFromRef !== config?.branch) { diff --git a/public/app/features/dashboard-scene/saving/provisioned/utils/getProvisionedMeta.ts b/public/app/features/dashboard-scene/saving/provisioned/utils/getProvisionedMeta.ts index d51a215a79a..13f783561eb 100644 --- a/public/app/features/dashboard-scene/saving/provisioned/utils/getProvisionedMeta.ts +++ b/public/app/features/dashboard-scene/saving/provisioned/utils/getProvisionedMeta.ts @@ -1,5 +1,5 @@ import { config } from '@grafana/runtime'; -import { folderAPI } from 'app/api/clients/folder'; +import { folderAPIv1beta1 as folderAPI } from 'app/api/clients/folder/v1beta1'; import { AnnoKeyManagerIdentity, AnnoKeyManagerKind, ManagerKind } from 'app/features/apiserver/types'; import { dispatch } from 'app/store/store'; diff --git a/public/app/features/playlist/PlaylistCard.tsx b/public/app/features/playlist/PlaylistCard.tsx index 8ebc1ddf772..458e5031aca 100644 --- a/public/app/features/playlist/PlaylistCard.tsx +++ b/public/app/features/playlist/PlaylistCard.tsx @@ -8,7 +8,7 @@ import { attachSkeleton, SkeletonComponent } from '@grafana/ui/unstable'; import { contextSrv } from 'app/core/services/context_srv'; import { DashNavButton } from 'app/features/dashboard/components/DashNav/DashNavButton'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { ShareModal } from './ShareModal'; diff --git a/public/app/features/playlist/PlaylistEditPage.tsx b/public/app/features/playlist/PlaylistEditPage.tsx index 78106f6646b..9fc3afbe720 100644 --- a/public/app/features/playlist/PlaylistEditPage.tsx +++ b/public/app/features/playlist/PlaylistEditPage.tsx @@ -5,7 +5,7 @@ import { Trans, t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { Page } from 'app/core/components/Page/Page'; -import { Playlist, useGetPlaylistQuery, useReplacePlaylistMutation } from '../../api/clients/playlist'; +import { Playlist, useGetPlaylistQuery, useReplacePlaylistMutation } from '../../api/clients/playlist/v0alpha1'; import { PlaylistForm } from './PlaylistForm'; diff --git a/public/app/features/playlist/PlaylistForm.test.tsx b/public/app/features/playlist/PlaylistForm.test.tsx index 4c80d1a9300..a08012a81c3 100644 --- a/public/app/features/playlist/PlaylistForm.test.tsx +++ b/public/app/features/playlist/PlaylistForm.test.tsx @@ -1,7 +1,7 @@ import { render, screen, within } from '@testing-library/react'; import userEvent from '@testing-library/user-event'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { PlaylistForm } from './PlaylistForm'; diff --git a/public/app/features/playlist/PlaylistForm.tsx b/public/app/features/playlist/PlaylistForm.tsx index 178ea7fe83b..8c9e16dd4e3 100644 --- a/public/app/features/playlist/PlaylistForm.tsx +++ b/public/app/features/playlist/PlaylistForm.tsx @@ -8,7 +8,7 @@ import { Form } from 'app/core/components/Form/Form'; import { DashboardPicker } from 'app/core/components/Select/DashboardPicker'; import { TagFilter } from 'app/core/components/TagFilter/TagFilter'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { getGrafanaSearcher } from '../search/service/searcher'; import { PlaylistTable } from './PlaylistTable'; diff --git a/public/app/features/playlist/PlaylistNewPage.tsx b/public/app/features/playlist/PlaylistNewPage.tsx index 49461ff92b1..2fcb40985c4 100644 --- a/public/app/features/playlist/PlaylistNewPage.tsx +++ b/public/app/features/playlist/PlaylistNewPage.tsx @@ -5,7 +5,7 @@ import { t } from '@grafana/i18n'; import { locationService } from '@grafana/runtime'; import { Page } from 'app/core/components/Page/Page'; -import { Playlist, useCreatePlaylistMutation } from '../../api/clients/playlist'; +import { Playlist, useCreatePlaylistMutation } from '../../api/clients/playlist/v0alpha1'; import { PlaylistForm } from './PlaylistForm'; import { getDefaultPlaylist } from './utils'; diff --git a/public/app/features/playlist/PlaylistPage.tsx b/public/app/features/playlist/PlaylistPage.tsx index 36f8d3294fb..88987c6f687 100644 --- a/public/app/features/playlist/PlaylistPage.tsx +++ b/public/app/features/playlist/PlaylistPage.tsx @@ -6,7 +6,7 @@ import { Page } from 'app/core/components/Page/Page'; import PageActionBar from 'app/core/components/PageActionBar/PageActionBar'; import { contextSrv } from 'app/core/services/context_srv'; -import { Playlist, useDeletePlaylistMutation, useListPlaylistQuery } from '../../api/clients/playlist'; +import { Playlist, useDeletePlaylistMutation, useListPlaylistQuery } from '../../api/clients/playlist/v0alpha1'; import { PlaylistPageList } from './PlaylistPageList'; import { StartModal } from './StartModal'; diff --git a/public/app/features/playlist/PlaylistPageList.tsx b/public/app/features/playlist/PlaylistPageList.tsx index 44581580949..3d405650416 100644 --- a/public/app/features/playlist/PlaylistPageList.tsx +++ b/public/app/features/playlist/PlaylistPageList.tsx @@ -4,7 +4,7 @@ import { GrafanaTheme2 } from '@grafana/data'; import { useStyles2 } from '@grafana/ui'; import { SkeletonComponent, attachSkeleton } from '@grafana/ui/unstable'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { PlaylistCard } from './PlaylistCard'; diff --git a/public/app/features/playlist/PlaylistSrv.test.ts b/public/app/features/playlist/PlaylistSrv.test.ts index 8e4f253bb90..77c45ca388b 100644 --- a/public/app/features/playlist/PlaylistSrv.test.ts +++ b/public/app/features/playlist/PlaylistSrv.test.ts @@ -4,7 +4,7 @@ import configureMockStore from 'redux-mock-store'; import { locationService } from '@grafana/runtime'; import { setStore } from 'app/store/store'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { DashboardQueryResult } from '../search/service/types'; import { PlaylistSrv } from './PlaylistSrv'; diff --git a/public/app/features/playlist/PlaylistSrv.ts b/public/app/features/playlist/PlaylistSrv.ts index afc54aeeddd..0c751d53e57 100644 --- a/public/app/features/playlist/PlaylistSrv.ts +++ b/public/app/features/playlist/PlaylistSrv.ts @@ -5,7 +5,7 @@ import { locationUtil, urlUtil, rangeUtil } from '@grafana/data'; import { locationService } from '@grafana/runtime'; import { StateManagerBase } from 'app/core/services/StateManagerBase'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { loadDashboards } from './utils'; diff --git a/public/app/features/playlist/PlaylistStartPage.tsx b/public/app/features/playlist/PlaylistStartPage.tsx index e48f55a6e73..ed39bd4e4ee 100644 --- a/public/app/features/playlist/PlaylistStartPage.tsx +++ b/public/app/features/playlist/PlaylistStartPage.tsx @@ -1,6 +1,6 @@ import { useParams } from 'react-router-dom-v5-compat'; -import { useGetPlaylistQuery } from '../../api/clients/playlist'; +import { useGetPlaylistQuery } from '../../api/clients/playlist/v0alpha1'; import { playlistSrv } from './PlaylistSrv'; diff --git a/public/app/features/playlist/StartModal.tsx b/public/app/features/playlist/StartModal.tsx index 3d147ec9802..411a60ca2a8 100644 --- a/public/app/features/playlist/StartModal.tsx +++ b/public/app/features/playlist/StartModal.tsx @@ -5,7 +5,7 @@ import { Trans, t } from '@grafana/i18n'; import { config, locationService, reportInteraction } from '@grafana/runtime'; import { Box, Button, Checkbox, Field, FieldSet, Modal, RadioButtonGroup, Stack } from '@grafana/ui'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { PlaylistMode } from './types'; diff --git a/public/app/features/playlist/types.ts b/public/app/features/playlist/types.ts index 0a137a349dd..e6e05ed8ca6 100644 --- a/public/app/features/playlist/types.ts +++ b/public/app/features/playlist/types.ts @@ -1,4 +1,4 @@ -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { DashboardQueryResult } from '../search/service/types'; export type PlaylistMode = boolean; diff --git a/public/app/features/playlist/utils.ts b/public/app/features/playlist/utils.ts index 20a72571304..78f7206ba2f 100644 --- a/public/app/features/playlist/utils.ts +++ b/public/app/features/playlist/utils.ts @@ -5,7 +5,7 @@ import { config } from '@grafana/runtime'; import { getGrafanaDatasource } from 'app/plugins/datasource/grafana/datasource'; import { GrafanaQuery, GrafanaQueryType } from 'app/plugins/datasource/grafana/types'; -import { Playlist } from '../../api/clients/playlist'; +import { Playlist } from '../../api/clients/playlist/v0alpha1'; import { getGrafanaSearcher } from '../search/service/searcher'; import { DashboardQueryResult, SearchQuery } from '../search/service/types'; diff --git a/public/app/features/provisioning/Config/ConfigForm.tsx b/public/app/features/provisioning/Config/ConfigForm.tsx index ebb56cdc39c..f69fa3bd4ec 100644 --- a/public/app/features/provisioning/Config/ConfigForm.tsx +++ b/public/app/features/provisioning/Config/ConfigForm.tsx @@ -15,7 +15,7 @@ import { Stack, Switch, } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { FormPrompt } from 'app/core/components/FormPrompt/FormPrompt'; import { TokenPermissionsInfo } from '../Shared/TokenPermissionsInfo'; diff --git a/public/app/features/provisioning/Config/defaults.ts b/public/app/features/provisioning/Config/defaults.ts index 937489b0c86..e28b14c81fc 100644 --- a/public/app/features/provisioning/Config/defaults.ts +++ b/public/app/features/provisioning/Config/defaults.ts @@ -1,6 +1,6 @@ import { t } from '@grafana/i18n'; -import { RepositorySpec } from '../../../api/clients/provisioning'; +import { RepositorySpec } from '../../../api/clients/provisioning/v0alpha1'; import { RepositoryFormData } from '../types'; import { specToData } from '../utils/data'; diff --git a/public/app/features/provisioning/File/FileHistoryPage.tsx b/public/app/features/provisioning/File/FileHistoryPage.tsx index 49d1be4cc2e..78385deac55 100644 --- a/public/app/features/provisioning/File/FileHistoryPage.tsx +++ b/public/app/features/provisioning/File/FileHistoryPage.tsx @@ -2,7 +2,10 @@ import { useParams } from 'react-router-dom-v5-compat'; import { Trans } from '@grafana/i18n'; import { Card, EmptyState, Spinner, Stack, Text, TextLink, UserIcon } from '@grafana/ui'; -import { useGetRepositoryHistoryWithPathQuery, useGetRepositoryStatusQuery } from 'app/api/clients/provisioning'; +import { + useGetRepositoryHistoryWithPathQuery, + useGetRepositoryStatusQuery, +} from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import { isNotFoundError } from 'app/features/alerting/unified/api/util'; diff --git a/public/app/features/provisioning/File/FileStatusPage.tsx b/public/app/features/provisioning/File/FileStatusPage.tsx index b6b3ea53cdc..7b122e3b666 100644 --- a/public/app/features/provisioning/File/FileStatusPage.tsx +++ b/public/app/features/provisioning/File/FileStatusPage.tsx @@ -12,7 +12,7 @@ import { ResourceWrapper, useReplaceRepositoryFilesWithPathMutation, useDeleteRepositoryFilesWithPathMutation, -} from 'app/api/clients/provisioning'; +} from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; diff --git a/public/app/features/provisioning/File/FilesView.tsx b/public/app/features/provisioning/File/FilesView.tsx index 235be907f5f..0df6f7340a4 100644 --- a/public/app/features/provisioning/File/FilesView.tsx +++ b/public/app/features/provisioning/File/FilesView.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { CellProps, Column, FilterInput, InteractiveTable, LinkButton, Spinner, Stack } from '@grafana/ui'; -import { Repository, useGetRepositoryFilesQuery } from 'app/api/clients/provisioning'; +import { Repository, useGetRepositoryFilesQuery } from 'app/api/clients/provisioning/v0alpha1'; import { PROVISIONING_URL } from '../constants'; import { FileDetails } from '../types'; diff --git a/public/app/features/provisioning/GettingStarted/FeaturesList.tsx b/public/app/features/provisioning/GettingStarted/FeaturesList.tsx index 82a2de4f45f..165ee52cbd1 100644 --- a/public/app/features/provisioning/GettingStarted/FeaturesList.tsx +++ b/public/app/features/provisioning/GettingStarted/FeaturesList.tsx @@ -3,7 +3,7 @@ import { css } from '@emotion/css'; import { GrafanaTheme2 } from '@grafana/data'; import { Trans } from '@grafana/i18n'; import { Stack, Text, Box, LinkButton, useStyles2 } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { ConnectRepositoryButton } from '../Shared/ConnectRepositoryButton'; diff --git a/public/app/features/provisioning/GettingStarted/GettingStarted.tsx b/public/app/features/provisioning/GettingStarted/GettingStarted.tsx index 5fa76bbc840..c96311f7ea6 100644 --- a/public/app/features/provisioning/GettingStarted/GettingStarted.tsx +++ b/public/app/features/provisioning/GettingStarted/GettingStarted.tsx @@ -4,7 +4,7 @@ import { useState } from 'react'; import { GrafanaTheme2 } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Alert, Stack, useStyles2 } from '@grafana/ui'; -import { useGetFrontendSettingsQuery, Repository } from 'app/api/clients/provisioning'; +import { useGetFrontendSettingsQuery, Repository } from 'app/api/clients/provisioning/v0alpha1'; import provisioningSvg from 'img/provisioning/provisioning.svg'; import { EnhancedFeatures } from './EnhancedFeatures'; diff --git a/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx b/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx index 37af771b96c..14fefada984 100644 --- a/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx +++ b/public/app/features/provisioning/GettingStarted/GettingStartedPage.tsx @@ -1,6 +1,6 @@ import { Trans, t } from '@grafana/i18n'; import { Box, Text, TextLink } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import GettingStarted from './GettingStarted'; diff --git a/public/app/features/provisioning/HomePage.tsx b/public/app/features/provisioning/HomePage.tsx index c82971f8aac..0e02a8fffe8 100644 --- a/public/app/features/provisioning/HomePage.tsx +++ b/public/app/features/provisioning/HomePage.tsx @@ -2,7 +2,10 @@ import { useMemo, useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { Alert, ConfirmModal, Stack, Tab, TabContent, TabsBar } from '@grafana/ui'; -import { useDeletecollectionRepositoryMutation, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning'; +import { + useDeletecollectionRepositoryMutation, + useGetFrontendSettingsQuery, +} from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import GettingStarted from './GettingStarted/GettingStarted'; diff --git a/public/app/features/provisioning/Job/FinishedJobStatus.tsx b/public/app/features/provisioning/Job/FinishedJobStatus.tsx index 7d0212774ea..0b97dcaba23 100644 --- a/public/app/features/provisioning/Job/FinishedJobStatus.tsx +++ b/public/app/features/provisioning/Job/FinishedJobStatus.tsx @@ -2,7 +2,7 @@ import { useEffect, useRef } from 'react'; import { Trans, t } from '@grafana/i18n'; import { Alert, Spinner, Stack, Text } from '@grafana/ui'; -import { useGetRepositoryJobsWithPathQuery } from 'app/api/clients/provisioning'; +import { useGetRepositoryJobsWithPathQuery } from 'app/api/clients/provisioning/v0alpha1'; import { useStepStatus } from '../Wizard/StepStatusContext'; diff --git a/public/app/features/provisioning/Job/JobContent.tsx b/public/app/features/provisioning/Job/JobContent.tsx index b3d12cf1602..864da5adbc1 100644 --- a/public/app/features/provisioning/Job/JobContent.tsx +++ b/public/app/features/provisioning/Job/JobContent.tsx @@ -1,6 +1,6 @@ import { Trans, t } from '@grafana/i18n'; import { Alert, ControlledCollapse, Spinner, Stack, Text } from '@grafana/ui'; -import { Job } from 'app/api/clients/provisioning'; +import { Job } from 'app/api/clients/provisioning/v0alpha1'; import { RepositoryLink } from '../Repository/RepositoryLink'; import ProgressBar from '../Shared/ProgressBar'; diff --git a/public/app/features/provisioning/Job/JobStatus.tsx b/public/app/features/provisioning/Job/JobStatus.tsx index 7a4cbea501c..f003245e263 100644 --- a/public/app/features/provisioning/Job/JobStatus.tsx +++ b/public/app/features/provisioning/Job/JobStatus.tsx @@ -1,6 +1,6 @@ import { Trans } from '@grafana/i18n'; import { Spinner, Stack, Text } from '@grafana/ui'; -import { Job, useListJobQuery } from 'app/api/clients/provisioning'; +import { Job, useListJobQuery } from 'app/api/clients/provisioning/v0alpha1'; import { useStepStatus } from '../Wizard/StepStatusContext'; diff --git a/public/app/features/provisioning/Job/JobSummary.tsx b/public/app/features/provisioning/Job/JobSummary.tsx index 09cf993efd3..f91b28a261f 100644 --- a/public/app/features/provisioning/Job/JobSummary.tsx +++ b/public/app/features/provisioning/Job/JobSummary.tsx @@ -1,5 +1,5 @@ import { InteractiveTable, Stack } from '@grafana/ui'; -import { JobResourceSummary } from 'app/api/clients/provisioning'; +import { JobResourceSummary } from 'app/api/clients/provisioning/v0alpha1'; type SummaryCell = { row: { diff --git a/public/app/features/provisioning/Job/RecentJobs.tsx b/public/app/features/provisioning/Job/RecentJobs.tsx index 8745353f3a3..8cf520979d3 100644 --- a/public/app/features/provisioning/Job/RecentJobs.tsx +++ b/public/app/features/provisioning/Job/RecentJobs.tsx @@ -3,7 +3,7 @@ import { useMemo } from 'react'; import { intervalToAbbreviatedDurationString, TraceKeyValuePair } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Alert, Badge, Box, Card, Icon, InteractiveTable, Spinner, Stack, Text } from '@grafana/ui'; -import { Job, Repository, SyncStatus } from 'app/api/clients/provisioning'; +import { Job, Repository, SyncStatus } from 'app/api/clients/provisioning/v0alpha1'; import KeyValuesTable from 'app/features/explore/TraceView/components/TraceTimelineViewer/SpanDetail/KeyValuesTable'; import { useRepositoryAllJobs } from '../hooks/useRepositoryAllJobs'; diff --git a/public/app/features/provisioning/Repository/CheckRepository.tsx b/public/app/features/provisioning/Repository/CheckRepository.tsx index 1a9407e10eb..8d8a14c685b 100644 --- a/public/app/features/provisioning/Repository/CheckRepository.tsx +++ b/public/app/features/provisioning/Repository/CheckRepository.tsx @@ -1,6 +1,6 @@ import { Trans } from '@grafana/i18n'; import { Button, Spinner } from '@grafana/ui'; -import { Repository, useCreateRepositoryTestMutation } from 'app/api/clients/provisioning'; +import { Repository, useCreateRepositoryTestMutation } from 'app/api/clients/provisioning/v0alpha1'; interface Props { repository: Repository; diff --git a/public/app/features/provisioning/Repository/DeleteRepositoryButton.tsx b/public/app/features/provisioning/Repository/DeleteRepositoryButton.tsx index c8c36c4a29b..a49803bf147 100644 --- a/public/app/features/provisioning/Repository/DeleteRepositoryButton.tsx +++ b/public/app/features/provisioning/Repository/DeleteRepositoryButton.tsx @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom-v5-compat'; import { t } from '@grafana/i18n'; import { ConfirmModal, IconButton } from '@grafana/ui'; -import { useDeleteRepositoryMutation } from 'app/api/clients/provisioning'; +import { useDeleteRepositoryMutation } from 'app/api/clients/provisioning/v0alpha1'; interface Props { name: string; diff --git a/public/app/features/provisioning/Repository/EditRepositoryPage.tsx b/public/app/features/provisioning/Repository/EditRepositoryPage.tsx index ba0cb59838f..f6c285edec5 100644 --- a/public/app/features/provisioning/Repository/EditRepositoryPage.tsx +++ b/public/app/features/provisioning/Repository/EditRepositoryPage.tsx @@ -2,7 +2,7 @@ import { useParams } from 'react-router-dom-v5-compat'; import { Trans, t } from '@grafana/i18n'; import { EmptyState, Text, TextLink } from '@grafana/ui'; -import { useGetRepositoryQuery } from 'app/api/clients/provisioning'; +import { useGetRepositoryQuery } from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import { ConfigForm } from '../Config/ConfigForm'; diff --git a/public/app/features/provisioning/Repository/RepositoryActions.tsx b/public/app/features/provisioning/Repository/RepositoryActions.tsx index adc2c551ec5..6c1adc21f1d 100644 --- a/public/app/features/provisioning/Repository/RepositoryActions.tsx +++ b/public/app/features/provisioning/Repository/RepositoryActions.tsx @@ -1,6 +1,6 @@ import { Trans } from '@grafana/i18n'; import { Button, LinkButton, Stack } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { StatusBadge } from '../Shared/StatusBadge'; import { PROVISIONING_URL } from '../constants'; diff --git a/public/app/features/provisioning/Repository/RepositoryCard.tsx b/public/app/features/provisioning/Repository/RepositoryCard.tsx index d31e5196a13..e2a022cebb5 100644 --- a/public/app/features/provisioning/Repository/RepositoryCard.tsx +++ b/public/app/features/provisioning/Repository/RepositoryCard.tsx @@ -2,7 +2,7 @@ import { ReactNode } from 'react'; import { Trans } from '@grafana/i18n'; import { IconName, Stack, Text, TextLink, Icon, Card, LinkButton } from '@grafana/ui'; -import { Repository, ResourceCount } from 'app/api/clients/provisioning'; +import { Repository, ResourceCount } from 'app/api/clients/provisioning/v0alpha1'; import { StatusBadge } from '../Shared/StatusBadge'; import { PROVISIONING_URL } from '../constants'; diff --git a/public/app/features/provisioning/Repository/RepositoryHealth.tsx b/public/app/features/provisioning/Repository/RepositoryHealth.tsx index 498d85a4198..daac98dbcaa 100644 --- a/public/app/features/provisioning/Repository/RepositoryHealth.tsx +++ b/public/app/features/provisioning/Repository/RepositoryHealth.tsx @@ -1,6 +1,6 @@ import { Trans, t } from '@grafana/i18n'; import { Stack, Alert, Text } from '@grafana/ui'; -import { HealthStatus } from 'app/api/clients/provisioning'; +import { HealthStatus } from 'app/api/clients/provisioning/v0alpha1'; interface Props { health: HealthStatus; diff --git a/public/app/features/provisioning/Repository/RepositoryLink.tsx b/public/app/features/provisioning/Repository/RepositoryLink.tsx index 33714c33631..85ad92810c8 100644 --- a/public/app/features/provisioning/Repository/RepositoryLink.tsx +++ b/public/app/features/provisioning/Repository/RepositoryLink.tsx @@ -2,7 +2,7 @@ import { skipToken } from '@reduxjs/toolkit/query'; import { Trans } from '@grafana/i18n'; import { Stack, Text, TextLink } from '@grafana/ui'; -import { useGetRepositoryQuery } from 'app/api/clients/provisioning'; +import { useGetRepositoryQuery } from 'app/api/clients/provisioning/v0alpha1'; import { getRepoHref } from '../utils/git'; diff --git a/public/app/features/provisioning/Repository/RepositoryOverview.tsx b/public/app/features/provisioning/Repository/RepositoryOverview.tsx index ed7e29352a7..ba18bf32fcf 100644 --- a/public/app/features/provisioning/Repository/RepositoryOverview.tsx +++ b/public/app/features/provisioning/Repository/RepositoryOverview.tsx @@ -3,7 +3,7 @@ import { useMemo } from 'react'; import { Trans, t } from '@grafana/i18n'; import { Box, Card, CellProps, Grid, InteractiveTable, LinkButton, Stack, Text, useStyles2 } from '@grafana/ui'; -import { Repository, ResourceCount } from 'app/api/clients/provisioning'; +import { Repository, ResourceCount } from 'app/api/clients/provisioning/v0alpha1'; import { RecentJobs } from '../Job/RecentJobs'; import { formatTimestamp } from '../utils/time'; diff --git a/public/app/features/provisioning/Repository/RepositoryResources.tsx b/public/app/features/provisioning/Repository/RepositoryResources.tsx index c5511d813b5..e7c0554152f 100644 --- a/public/app/features/provisioning/Repository/RepositoryResources.tsx +++ b/public/app/features/provisioning/Repository/RepositoryResources.tsx @@ -2,7 +2,7 @@ import { useMemo, useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { CellProps, Column, FilterInput, InteractiveTable, Link, LinkButton, Spinner, Stack } from '@grafana/ui'; -import { Repository, ResourceListItem, useGetRepositoryResourcesQuery } from 'app/api/clients/provisioning'; +import { Repository, ResourceListItem, useGetRepositoryResourcesQuery } from 'app/api/clients/provisioning/v0alpha1'; import { PROVISIONING_URL } from '../constants'; diff --git a/public/app/features/provisioning/Repository/RepositoryStatusPage.tsx b/public/app/features/provisioning/Repository/RepositoryStatusPage.tsx index f23adba12b1..2b4755a4c96 100644 --- a/public/app/features/provisioning/Repository/RepositoryStatusPage.tsx +++ b/public/app/features/provisioning/Repository/RepositoryStatusPage.tsx @@ -5,7 +5,7 @@ import { useParams } from 'react-router-dom-v5-compat'; import { SelectableValue, urlUtil } from '@grafana/data'; import { Trans, t } from '@grafana/i18n'; import { Alert, EmptyState, Spinner, Tab, TabContent, TabsBar, Text, TextLink } from '@grafana/ui'; -import { useGetFrontendSettingsQuery, useListRepositoryQuery } from 'app/api/clients/provisioning'; +import { useGetFrontendSettingsQuery, useListRepositoryQuery } from 'app/api/clients/provisioning/v0alpha1'; import { Page } from 'app/core/components/Page/Page'; import { useQueryParams } from 'app/core/hooks/useQueryParams'; import { isNotFoundError } from 'app/features/alerting/unified/api/util'; diff --git a/public/app/features/provisioning/Repository/SyncRepository.tsx b/public/app/features/provisioning/Repository/SyncRepository.tsx index 8a8fd6f3a50..7f4d21d4ee9 100644 --- a/public/app/features/provisioning/Repository/SyncRepository.tsx +++ b/public/app/features/provisioning/Repository/SyncRepository.tsx @@ -3,7 +3,7 @@ import { useNavigate } from 'react-router-dom-v5-compat'; import { Trans, t } from '@grafana/i18n'; import { Button, ConfirmModal } from '@grafana/ui'; -import { Repository, useCreateRepositoryJobsMutation } from 'app/api/clients/provisioning'; +import { Repository, useCreateRepositoryJobsMutation } from 'app/api/clients/provisioning/v0alpha1'; import { PROVISIONING_URL } from '../constants'; diff --git a/public/app/features/provisioning/Shared/ConnectRepositoryButton.tsx b/public/app/features/provisioning/Shared/ConnectRepositoryButton.tsx index 4c1962ed800..385d2ad2ed6 100644 --- a/public/app/features/provisioning/Shared/ConnectRepositoryButton.tsx +++ b/public/app/features/provisioning/Shared/ConnectRepositoryButton.tsx @@ -2,7 +2,7 @@ import { useNavigate } from 'react-router-dom-v5-compat'; import { Trans, t } from '@grafana/i18n'; import { Alert, Button, Dropdown, Icon, LinkButton, Menu, Stack } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { RepoType } from '../Wizard/types'; import { CONNECT_URL } from '../constants'; diff --git a/public/app/features/provisioning/Shared/RepositoryList.tsx b/public/app/features/provisioning/Shared/RepositoryList.tsx index 73a01e53557..76560f88f5d 100644 --- a/public/app/features/provisioning/Shared/RepositoryList.tsx +++ b/public/app/features/provisioning/Shared/RepositoryList.tsx @@ -2,7 +2,7 @@ import { useState } from 'react'; import { Trans, t } from '@grafana/i18n'; import { EmptySearchResult, FilterInput, Stack } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { RepositoryCard } from '../Repository/RepositoryCard'; import { checkSyncSettings } from '../utils/checkSyncSettings'; diff --git a/public/app/features/provisioning/Shared/StatusBadge.tsx b/public/app/features/provisioning/Shared/StatusBadge.tsx index 6513a9ad6bd..afd010c3b67 100644 --- a/public/app/features/provisioning/Shared/StatusBadge.tsx +++ b/public/app/features/provisioning/Shared/StatusBadge.tsx @@ -1,6 +1,6 @@ import { locationService } from '@grafana/runtime'; import { Badge, BadgeColor, IconName } from '@grafana/ui'; -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; import { PROVISIONING_URL } from '../constants'; diff --git a/public/app/features/provisioning/Wizard/BootstrapStep.test.tsx b/public/app/features/provisioning/Wizard/BootstrapStep.test.tsx index 2762049e960..ae51dcf0c67 100644 --- a/public/app/features/provisioning/Wizard/BootstrapStep.test.tsx +++ b/public/app/features/provisioning/Wizard/BootstrapStep.test.tsx @@ -3,14 +3,14 @@ import userEvent from '@testing-library/user-event'; import { ReactNode } from 'react'; import { useForm, FormProvider } from 'react-hook-form'; -import { useGetRepositoryFilesQuery, useGetResourceStatsQuery } from 'app/api/clients/provisioning'; +import { useGetRepositoryFilesQuery, useGetResourceStatsQuery } from 'app/api/clients/provisioning/v0alpha1'; import { BootstrapStep, Props } from './BootstrapStep'; import { StepStatusProvider } from './StepStatusContext'; import { getResourceStats, useModeOptions } from './actions'; import { WizardFormData } from './types'; -jest.mock('app/api/clients/provisioning', () => ({ +jest.mock('app/api/clients/provisioning/v0alpha1', () => ({ useGetRepositoryFilesQuery: jest.fn(), useGetResourceStatsQuery: jest.fn(), })); diff --git a/public/app/features/provisioning/Wizard/BootstrapStep.tsx b/public/app/features/provisioning/Wizard/BootstrapStep.tsx index 903b3c55cda..85135db960f 100644 --- a/public/app/features/provisioning/Wizard/BootstrapStep.tsx +++ b/public/app/features/provisioning/Wizard/BootstrapStep.tsx @@ -3,7 +3,11 @@ import { Controller, useFormContext } from 'react-hook-form'; import { Trans, t } from '@grafana/i18n'; import { Box, Card, Field, Input, LoadingPlaceholder, Stack, Text } from '@grafana/ui'; -import { RepositoryViewList, useGetRepositoryFilesQuery, useGetResourceStatsQuery } from 'app/api/clients/provisioning'; +import { + RepositoryViewList, + useGetRepositoryFilesQuery, + useGetResourceStatsQuery, +} from 'app/api/clients/provisioning/v0alpha1'; import { useStepStatus } from './StepStatusContext'; import { getResourceStats, useModeOptions } from './actions'; diff --git a/public/app/features/provisioning/Wizard/ProvisioningWizard.tsx b/public/app/features/provisioning/Wizard/ProvisioningWizard.tsx index fd9db4397cb..0eae8ed5ddb 100644 --- a/public/app/features/provisioning/Wizard/ProvisioningWizard.tsx +++ b/public/app/features/provisioning/Wizard/ProvisioningWizard.tsx @@ -7,7 +7,7 @@ import { AppEvents, GrafanaTheme2 } from '@grafana/data'; import { t } from '@grafana/i18n'; import { getAppEvents, isFetchError } from '@grafana/runtime'; import { Alert, Box, Button, Stack, Text, useStyles2 } from '@grafana/ui'; -import { useDeleteRepositoryMutation, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning'; +import { useDeleteRepositoryMutation, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning/v0alpha1'; import { FormPrompt } from 'app/core/components/FormPrompt/FormPrompt'; import { getDefaultValues } from '../Config/defaults'; diff --git a/public/app/features/provisioning/Wizard/SynchronizeStep.tsx b/public/app/features/provisioning/Wizard/SynchronizeStep.tsx index 679c48309f0..449cf3f5038 100644 --- a/public/app/features/provisioning/Wizard/SynchronizeStep.tsx +++ b/public/app/features/provisioning/Wizard/SynchronizeStep.tsx @@ -3,7 +3,7 @@ import { useFormContext } from 'react-hook-form'; import { Trans, t } from '@grafana/i18n'; import { Button, Text, Stack, Alert, TextLink, Field, Checkbox } from '@grafana/ui'; -import { Job, useCreateRepositoryJobsMutation } from 'app/api/clients/provisioning'; +import { Job, useCreateRepositoryJobsMutation } from 'app/api/clients/provisioning/v0alpha1'; import { JobStatus } from '../Job/JobStatus'; diff --git a/public/app/features/provisioning/Wizard/actions.ts b/public/app/features/provisioning/Wizard/actions.ts index e1d61bf8bb8..5c0340edc45 100644 --- a/public/app/features/provisioning/Wizard/actions.ts +++ b/public/app/features/provisioning/Wizard/actions.ts @@ -5,7 +5,7 @@ import { GetRepositoryFilesApiResponse, GetResourceStatsApiResponse, RepositoryViewList, -} from 'app/api/clients/provisioning'; +} from 'app/api/clients/provisioning/v0alpha1'; import { ModeOption } from './types'; diff --git a/public/app/features/provisioning/Wizard/types.ts b/public/app/features/provisioning/Wizard/types.ts index 67797a7c85a..f1d3d404075 100644 --- a/public/app/features/provisioning/Wizard/types.ts +++ b/public/app/features/provisioning/Wizard/types.ts @@ -1,4 +1,4 @@ -import { RepositorySpec, SyncOptions } from 'app/api/clients/provisioning'; +import { RepositorySpec, SyncOptions } from 'app/api/clients/provisioning/v0alpha1'; import { RepositoryFormData } from '../types'; diff --git a/public/app/features/provisioning/hooks/useCreateOrUpdateRepository.ts b/public/app/features/provisioning/hooks/useCreateOrUpdateRepository.ts index a7d78c1385d..ac605160c3d 100644 --- a/public/app/features/provisioning/hooks/useCreateOrUpdateRepository.ts +++ b/public/app/features/provisioning/hooks/useCreateOrUpdateRepository.ts @@ -5,7 +5,7 @@ import { useCreateRepositoryMutation, useCreateRepositoryTestMutation, useReplaceRepositoryMutation, -} from 'app/api/clients/provisioning'; +} from 'app/api/clients/provisioning/v0alpha1'; export function useCreateOrUpdateRepository(name?: string) { const [create, createRequest] = useCreateRepositoryMutation(); diff --git a/public/app/features/provisioning/hooks/useCreateOrUpdateRepositoryFile.ts b/public/app/features/provisioning/hooks/useCreateOrUpdateRepositoryFile.ts index 4d26b1bdb5f..c80f6defe85 100644 --- a/public/app/features/provisioning/hooks/useCreateOrUpdateRepositoryFile.ts +++ b/public/app/features/provisioning/hooks/useCreateOrUpdateRepositoryFile.ts @@ -4,7 +4,7 @@ import { ReplaceRepositoryFilesWithPathApiArg, useCreateRepositoryFilesWithPathMutation, useReplaceRepositoryFilesWithPathMutation, -} from 'app/api/clients/provisioning'; +} from 'app/api/clients/provisioning/v0alpha1'; export function useCreateOrUpdateRepositoryFile(name?: string) { const [create, createRequest] = useCreateRepositoryFilesWithPathMutation(); diff --git a/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts b/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts index 3da832cb425..5dd7106a032 100644 --- a/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts +++ b/public/app/features/provisioning/hooks/useGetResourceRepositoryView.ts @@ -1,7 +1,7 @@ import { skipToken } from '@reduxjs/toolkit/query/react'; -import { Folder, useGetFolderQuery } from 'app/api/clients/folder'; -import { RepositoryView, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning'; +import { Folder, useGetFolderQuery } from 'app/api/clients/folder/v1beta1'; +import { RepositoryView, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning/v0alpha1'; import { AnnoKeyManagerIdentity } from 'app/features/apiserver/types'; interface GetResourceRepositoryArgs { diff --git a/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts b/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts index 9e158ed3597..daa2ce8da6f 100644 --- a/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts +++ b/public/app/features/provisioning/hooks/useIsProvisionedInstance.ts @@ -1,7 +1,7 @@ import { skipToken } from '@reduxjs/toolkit/query'; import { config } from '@grafana/runtime'; -import { RepositoryViewList, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning'; +import { RepositoryViewList, useGetFrontendSettingsQuery } from 'app/api/clients/provisioning/v0alpha1'; export function useIsProvisionedInstance(settings?: RepositoryViewList) { const settingsQuery = useGetFrontendSettingsQuery( diff --git a/public/app/features/provisioning/hooks/useRepositoryAllJobs.ts b/public/app/features/provisioning/hooks/useRepositoryAllJobs.ts index d34051f70f8..3d8c64b0b9d 100644 --- a/public/app/features/provisioning/hooks/useRepositoryAllJobs.ts +++ b/public/app/features/provisioning/hooks/useRepositoryAllJobs.ts @@ -1,6 +1,6 @@ import { useDebounce } from 'react-use'; -import { Job, useGetRepositoryJobsQuery, useListJobQuery } from 'app/api/clients/provisioning'; +import { Job, useGetRepositoryJobsQuery, useListJobQuery } from 'app/api/clients/provisioning/v0alpha1'; interface RepositoryHistoricalJobsArgs { /** Limits the returned jobs to those which apply to this repository. */ diff --git a/public/app/features/provisioning/hooks/useRepositoryJobs.ts b/public/app/features/provisioning/hooks/useRepositoryJobs.ts index 1afeeccc29a..05cdc0f5149 100644 --- a/public/app/features/provisioning/hooks/useRepositoryJobs.ts +++ b/public/app/features/provisioning/hooks/useRepositoryJobs.ts @@ -1,6 +1,6 @@ import { skipToken } from '@reduxjs/toolkit/query/react'; -import { Job, useListJobQuery } from 'app/api/clients/provisioning'; +import { Job, useListJobQuery } from 'app/api/clients/provisioning/v0alpha1'; interface RepositoryJobsArgs { name?: string; diff --git a/public/app/features/provisioning/hooks/useRepositoryList.ts b/public/app/features/provisioning/hooks/useRepositoryList.ts index cd191c392f4..7cec6b0b4d6 100644 --- a/public/app/features/provisioning/hooks/useRepositoryList.ts +++ b/public/app/features/provisioning/hooks/useRepositoryList.ts @@ -1,6 +1,6 @@ import { skipToken } from '@reduxjs/toolkit/query'; -import { ListRepositoryApiArg, Repository, useListRepositoryQuery } from 'app/api/clients/provisioning'; +import { ListRepositoryApiArg, Repository, useListRepositoryQuery } from 'app/api/clients/provisioning/v0alpha1'; // Sort repositories alphabetically by title export function useRepositoryList( diff --git a/public/app/features/provisioning/types.ts b/public/app/features/provisioning/types.ts index b3234375c30..c5bdce6b1ab 100644 --- a/public/app/features/provisioning/types.ts +++ b/public/app/features/provisioning/types.ts @@ -1,4 +1,4 @@ -import { GitHubRepositoryConfig, LocalRepositoryConfig, RepositorySpec } from '../../api/clients/provisioning'; +import { GitHubRepositoryConfig, LocalRepositoryConfig, RepositorySpec } from '../../api/clients/provisioning/v0alpha1'; export type RepositoryFormData = Omit & GitHubRepositoryConfig & diff --git a/public/app/features/provisioning/utils/checkSyncSettings.ts b/public/app/features/provisioning/utils/checkSyncSettings.ts index 03ddcd48747..d7b351519b3 100644 --- a/public/app/features/provisioning/utils/checkSyncSettings.ts +++ b/public/app/features/provisioning/utils/checkSyncSettings.ts @@ -1,4 +1,4 @@ -import { Repository } from 'app/api/clients/provisioning'; +import { Repository } from 'app/api/clients/provisioning/v0alpha1'; type syncState = { instanceConnected: boolean; diff --git a/public/app/features/provisioning/utils/data.ts b/public/app/features/provisioning/utils/data.ts index 5d22751624e..3f491e1ea16 100644 --- a/public/app/features/provisioning/utils/data.ts +++ b/public/app/features/provisioning/utils/data.ts @@ -1,4 +1,4 @@ -import { RepositorySpec } from 'app/api/clients/provisioning'; +import { RepositorySpec } from 'app/api/clients/provisioning/v0alpha1'; import { RepositoryFormData } from '../types'; diff --git a/public/app/features/provisioning/utils/getFormErrors.ts b/public/app/features/provisioning/utils/getFormErrors.ts index cd911e77796..d960df560cb 100644 --- a/public/app/features/provisioning/utils/getFormErrors.ts +++ b/public/app/features/provisioning/utils/getFormErrors.ts @@ -1,4 +1,4 @@ -import { ErrorDetails } from 'app/api/clients/provisioning'; +import { ErrorDetails } from 'app/api/clients/provisioning/v0alpha1'; import { WizardFormData } from '../Wizard/types'; diff --git a/public/app/features/provisioning/utils/git.ts b/public/app/features/provisioning/utils/git.ts index c52087a4ca1..eb7e334888a 100644 --- a/public/app/features/provisioning/utils/git.ts +++ b/public/app/features/provisioning/utils/git.ts @@ -1,4 +1,4 @@ -import { RepositorySpec } from 'app/api/clients/provisioning'; +import { RepositorySpec } from 'app/api/clients/provisioning/v0alpha1'; /** * Validates a Git branch name according to the following rules: diff --git a/public/app/features/provisioning/utils/selectors.ts b/public/app/features/provisioning/utils/selectors.ts index b4f4ef4c95d..1e88f0b9530 100644 --- a/public/app/features/provisioning/utils/selectors.ts +++ b/public/app/features/provisioning/utils/selectors.ts @@ -2,7 +2,7 @@ import { createSelector } from '@reduxjs/toolkit'; import { RootState } from 'app/store/configureStore'; -import { Repository, provisioningAPI } from '../../../api/clients/provisioning/index'; +import { Repository, provisioningAPIv0alpha1 as provisioningAPI } from '../../../api/clients/provisioning/v0alpha1'; const emptyRepos: Repository[] = []; diff --git a/public/app/store/configureStore.ts b/public/app/store/configureStore.ts index b161a695acf..8cf9ecde47d 100644 --- a/public/app/store/configureStore.ts +++ b/public/app/store/configureStore.ts @@ -8,11 +8,11 @@ import { cloudMigrationAPI } from 'app/features/migrate-to-cloud/api'; import { userPreferencesAPI } from 'app/features/preferences/api'; import { StoreState } from 'app/types/store'; -import { advisorAPI } from '../api/clients/advisor'; -import { folderAPI } from '../api/clients/folder'; -import { iamAPI } from '../api/clients/iam'; -import { playlistAPI } from '../api/clients/playlist'; -import { provisioningAPI } from '../api/clients/provisioning'; +import { advisorAPIv0alpha1 } from '../api/clients/advisor/v0alpha1'; +import { folderAPIv1beta1 } from '../api/clients/folder/v1beta1'; +import { iamAPIv0alpha1 } from '../api/clients/iam/v0alpha1'; +import { playlistAPIv0alpha1 } from '../api/clients/playlist/v0alpha1'; +import { provisioningAPIv0alpha1 } from '../api/clients/provisioning/v0alpha1'; // Used by the API client generator // PLOP_INJECT_IMPORT import { buildInitialState } from '../core/reducers/navModel'; @@ -46,11 +46,11 @@ export function configureStore(initialState?: Partial) { browseDashboardsAPI.middleware, cloudMigrationAPI.middleware, userPreferencesAPI.middleware, - iamAPI.middleware, - playlistAPI.middleware, - provisioningAPI.middleware, - folderAPI.middleware, - advisorAPI.middleware, + iamAPIv0alpha1.middleware, + playlistAPIv0alpha1.middleware, + provisioningAPIv0alpha1.middleware, + folderAPIv1beta1.middleware, + advisorAPIv0alpha1.middleware, // PLOP_INJECT_MIDDLEWARE // Used by the API client generator ...extraMiddleware diff --git a/scripts/generate-rtk-apis.ts b/scripts/generate-rtk-apis.ts index 8e21370ff11..01f292be360 100644 --- a/scripts/generate-rtk-apis.ts +++ b/scripts/generate-rtk-apis.ts @@ -41,27 +41,27 @@ const config: ConfigFile = { apiImport: 'baseAPI', filterEndpoints: ['getUserPreferences', 'updateUserPreferences', 'patchUserPreferences'], }, - '../public/app/api/clients/iam/endpoints.gen.ts': { + '../public/app/api/clients/iam/v0alpha1/endpoints.gen.ts': { schemaFile: '../data/openapi/iam.grafana.app-v0alpha1.json', - apiFile: '../public/app/api/clients/iam/baseAPI.ts', + apiFile: '../public/app/api/clients/iam/v0alpha1/baseAPI.ts', filterEndpoints: ['getDisplayMapping'], tag: true, }, - '../public/app/api/clients/provisioning/endpoints.gen.ts': { - apiFile: '../public/app/api/clients/provisioning/baseAPI.ts', + '../public/app/api/clients/provisioning/v0alpha1/endpoints.gen.ts': { + apiFile: '../public/app/api/clients/provisioning/v0alpha1/baseAPI.ts', schemaFile: '../data/openapi/provisioning.grafana.app-v0alpha1.json', filterEndpoints, tag: true, hooks: true, }, - '../public/app/api/clients/folder/endpoints.gen.ts': { - apiFile: '../public/app/api/clients/folder/baseAPI.ts', + '../public/app/api/clients/folder/v1beta1/endpoints.gen.ts': { + apiFile: '../public/app/api/clients/folder/v1beta1/baseAPI.ts', schemaFile: '../data/openapi/folder.grafana.app-v1beta1.json', filterEndpoints: ['getFolder'], tag: true, }, - '../public/app/api/clients/advisor/endpoints.gen.ts': { - apiFile: '../public/app/api/clients/advisor/baseAPI.ts', + '../public/app/api/clients/advisor/v0alpha1/endpoints.gen.ts': { + apiFile: '../public/app/api/clients/advisor/v0alpha1/baseAPI.ts', schemaFile: '../data/openapi/advisor.grafana.app-v0alpha1.json', filterEndpoints: [ 'createCheck', @@ -74,8 +74,8 @@ const config: ConfigFile = { ], tag: true, }, - '../public/app/api/clients/playlist/endpoints.gen.ts': { - apiFile: '../public/app/api/clients/playlist/baseAPI.ts', + '../public/app/api/clients/playlist/v0alpha1/endpoints.gen.ts': { + apiFile: '../public/app/api/clients/playlist/v0alpha1/baseAPI.ts', schemaFile: '../data/openapi/playlist.grafana.app-v0alpha1.json', filterEndpoints: ['listPlaylist', 'getPlaylist', 'createPlaylist', 'deletePlaylist', 'replacePlaylist'], tag: true, diff --git a/scripts/rtk-client-generator/README.md b/scripts/rtk-client-generator/README.md index fb54b8011d4..8e41f0def0f 100644 --- a/scripts/rtk-client-generator/README.md +++ b/scripts/rtk-client-generator/README.md @@ -1,6 +1,6 @@ # RTK Query API Client Generator -This generator automates the process of creating RTK Query API clients for Grafana's API groups. It replaces the manual steps outlined in the [main API documentation](../README.md). +This generator automates the process of creating RTK Query API clients for Grafana's API groups. It replaces the manual steps outlined in the [main API documentation](../../public/app/api/README.md). ## Usage @@ -42,7 +42,7 @@ The generator automates the following: If an error about a missing OpenAPI schema appears, check that: 1. The API group and version exist in the backend -2. The `TestIntegrationOpenAPIs` test has been run to generate the schema (step 1 in the [main API documentation](../README.md)). +2. The `TestIntegrationOpenAPIs` test has been run to generate the schema (step 1 in the [main API documentation](../../public/app/api/README.md)). 3. The schema file exists at `data/openapi/-.json` ### Validation Errors diff --git a/scripts/rtk-client-generator/helpers.ts b/scripts/rtk-client-generator/helpers.ts index 71b7447a11f..549b121873c 100644 --- a/scripts/rtk-client-generator/helpers.ts +++ b/scripts/rtk-client-generator/helpers.ts @@ -33,13 +33,13 @@ export const formatEndpoints = () => (endpointsInput: string | string[]) => { }; // List of created or modified files -export const getFilesToFormat = (groupName: string, isEnterprise = false) => { +export const getFilesToFormat = (groupName: string, version: string, isEnterprise = false) => { const apiClientBasePath = isEnterprise ? 'public/app/extensions/api/clients' : 'public/app/api/clients'; const generateScriptPath = isEnterprise ? 'local/generate-enterprise-apis.ts' : 'scripts/generate-rtk-apis.ts'; return [ - `${apiClientBasePath}/${groupName}/baseAPI.ts`, - `${apiClientBasePath}/${groupName}/index.ts`, + `${apiClientBasePath}/${groupName}/${version}/baseAPI.ts`, + `${apiClientBasePath}/${groupName}/${version}/index.ts`, generateScriptPath, ...(isEnterprise ? [] : [`public/app/core/reducers/root.ts`, `public/app/store/configureStore.ts`]), ]; diff --git a/scripts/rtk-client-generator/plopfile.ts b/scripts/rtk-client-generator/plopfile.ts index 03493933b08..44688c46fd5 100644 --- a/scripts/rtk-client-generator/plopfile.ts +++ b/scripts/rtk-client-generator/plopfile.ts @@ -27,7 +27,7 @@ export default function plopGenerator(plop: NodePlopAPI) { plop.setHelper('formatEndpoints', formatEndpoints()); const generateRtkApiActions = (data: PlopData) => { - const { reducerPath, groupName, isEnterprise } = data; + const { reducerPath, groupName, version, isEnterprise } = data; const apiClientBasePath = isEnterprise ? 'public/app/extensions/api/clients' : 'public/app/api/clients'; const generateScriptPath = isEnterprise ? 'local/generate-enterprise-apis.ts' : 'scripts/generate-rtk-apis.ts'; @@ -46,7 +46,7 @@ export default function plopGenerator(plop: NodePlopAPI) { const actions: ActionConfig[] = [ { type: 'add', - path: path.join(basePath, `${apiClientBasePath}/${groupName}/baseAPI.ts`), + path: path.join(basePath, `${apiClientBasePath}/${groupName}/${version}/baseAPI.ts`), templateFile: './templates/baseAPI.ts.hbs', }, { @@ -58,7 +58,7 @@ export default function plopGenerator(plop: NodePlopAPI) { }, { type: 'add', - path: path.join(basePath, `${apiClientBasePath}/${groupName}/index.ts`), + path: path.join(basePath, `${apiClientBasePath}/${groupName}/${version}/index.ts`), templateFile: './templates/index.ts.hbs', }, ]; @@ -70,7 +70,7 @@ export default function plopGenerator(plop: NodePlopAPI) { type: 'modify', path: path.join(basePath, 'public/app/core/reducers/root.ts'), pattern: '// PLOP_INJECT_IMPORT', - template: `import { ${reducerPath} } from '${clientImportPath}/${groupName}';\n// PLOP_INJECT_IMPORT`, + template: `import { ${reducerPath} } from '${clientImportPath}/${groupName}/${version}';\n// PLOP_INJECT_IMPORT`, }, { type: 'modify', @@ -82,7 +82,7 @@ export default function plopGenerator(plop: NodePlopAPI) { type: 'modify', path: path.join(basePath, 'public/app/store/configureStore.ts'), pattern: '// PLOP_INJECT_IMPORT', - template: `import { ${reducerPath} } from '${clientImportPath}/${groupName}';\n// PLOP_INJECT_IMPORT`, + template: `import { ${reducerPath} } from '${clientImportPath}/${groupName}/${version}';\n// PLOP_INJECT_IMPORT`, }, { type: 'modify', @@ -97,7 +97,7 @@ export default function plopGenerator(plop: NodePlopAPI) { actions.push( { type: 'formatFiles', - files: getFilesToFormat(groupName, isEnterprise), + files: getFilesToFormat(groupName, version, isEnterprise), }, { type: 'runGenerateApis', @@ -140,10 +140,12 @@ export default function plopGenerator(plop: NodePlopAPI) { { type: 'input', name: 'reducerPath', - message: 'Reducer path (e.g. dashboardAPI):', - default: (answers: { groupName?: string }) => `${answers.groupName}API`, + message: 'Reducer path (e.g. dashboardAPIv0alpha1):', + default: (answers: { groupName?: string; version?: string }) => `${answers.groupName}API${answers.version}`, validate: (input: string) => - input?.endsWith('API') ? true : 'Reducer path should end with "API" (e.g. dashboardAPI)', + input?.endsWith('API') || input?.match(/API[a-z]\d+[a-z]*\d*$/) + ? true + : 'Reducer path should end with "API" or "API" (e.g. dashboardAPI, dashboardAPIv0alpha1)', }, { type: 'input', diff --git a/scripts/rtk-client-generator/templates/config-entry.hbs b/scripts/rtk-client-generator/templates/config-entry.hbs index 53c0eaf673e..2ccb0a54e6e 100644 --- a/scripts/rtk-client-generator/templates/config-entry.hbs +++ b/scripts/rtk-client-generator/templates/config-entry.hbs @@ -1,5 +1,5 @@ -'{{apiPathPrefix}}/{{groupName}}/endpoints.gen.ts': { - apiFile: '{{apiPathPrefix}}/{{groupName}}/baseAPI.ts', +'{{apiPathPrefix}}/{{groupName}}/{{version}}/endpoints.gen.ts': { + apiFile: '{{apiPathPrefix}}/{{groupName}}/{{version}}/baseAPI.ts', schemaFile: '../data/openapi/{{group}}-{{version}}.json', {{#if endpoints}} filterEndpoints: [{{{formatEndpoints endpoints}}}],